From e24bd506c3ffc27539044e01ad2a84b11908165c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Pinard?= Date: Fri, 18 Jan 2008 15:15:18 -0500 Subject: [PATCH] Version 3.5d --- BACKLOG | 725 +- COPYING | 4 +- COPYING-LIB | 284 +- ChangeLog | 41 +- Makefile.am | 15 +- Makefile.in | 39 +- NEWS | 67 +- PATCHES-AC | 126 + README | 34 +- README-alpha | 15 +- THANKS | 35 +- TODO | 5 +- acconfig.h | 2 +- aclocal.m4 | 506 +- config.guess | 93 +- config.h.in | 218 +- config.sub | 28 +- configure | 2722 ++-- configure.in | 10 +- contrib/Makefile.in | 21 +- contrib/README | 17 + doc/ChangeLog | 52 +- doc/Makefile.am | 4 +- doc/Makefile.in | 26 +- doc/Makemore | 13 +- doc/help2man | 5 +- doc/libiconv.texi | 275 +- doc/recode.info | 199 +- doc/recode.info-1 | 53 +- doc/recode.info-2 | 181 +- doc/recode.info-3 | 467 +- doc/recode.info-4 | 331 +- doc/recode.info-5 | 169 +- doc/recode.info-6 | 189 +- doc/recode.texi | 222 +- doc/rfc1345.texi | 41 +- doc/stamp-vti | 6 +- doc/tables.py | 2388 ++- doc/texinfo.tex | 3890 +++-- doc/version.texi | 6 +- i18n/ChangeLog | 12 + i18n/Makefile.am | 6 +- i18n/Makefile.in | 26 +- i18n/da.mo | Bin 13365 -> 13314 bytes i18n/da.po | 155 +- i18n/gl.mo | Bin 0 -> 13844 bytes i18n/gl.po | 492 + i18n/recode.pot | 194 +- i18n/sl.mo | Bin 3163 -> 13392 bytes i18n/sl.po | 339 +- install-sh | 7 +- lib/ChangeLog | 5 +- lib/Makefile.in | 23 +- lib/alloca.c | 3 +- lib/error.c | 12 +- lib/getopt.c | 164 +- lib/getopt.h | 120 +- lib/getopt1.c | 51 +- lib/malloc.c | 5 +- lib/pathmax.h | 47 +- lib/strtol.c | 252 +- lib/strtoul.c | 4 +- lib/xalloc.h | 86 +- lib/xmalloc.c | 54 +- lib/xstring.h | 12 +- libiconv/ChangeLog | 14 +- libiconv/Makefile.am | 26 +- libiconv/Makefile.in | 25 +- libiconv/aliases.h | 860 +- libiconv/cjk_variants.h | 4222 ++++++ libiconv/converters.h | 224 + libiconv/cp1258.h | 9 +- libiconv/cp949.h | 69 + libiconv/cp950.h | 26 +- libiconv/encodings.def | 598 +- libiconv/euc_jp.h | 2 +- libiconv/euc_kr.h | 18 +- libiconv/euc_tw.h | 2 +- libiconv/flags.h | 114 + libiconv/gb12345ext.h | 1210 +- libiconv/georgian_ps.h | 2 +- libiconv/iconv.h | 111 + libiconv/iso2022_cnext.h | 32 +- libiconv/iso2022_kr.h | 40 +- libiconv/iso646_cn.h | 39 + libiconv/iso646_jp.h | 41 + libiconv/iso8859_16.h | 97 + libiconv/iso8859_8.h | 18 +- libiconv/isoir165.h | 133 + libiconv/isoir165ext.h | 781 + libiconv/johab.h | 17 +- libiconv/johab_decomp.h | 59 - libiconv/johab_hangul.h | 3652 +---- libiconv/ksc5601.h | 527 +- libiconv/tis620.h | 54 +- libiconv/translit.h | 438 + libiconv/ucs2be.h | 27 + libiconv/ucs2le.h | 27 + libiconv/ucs2swapped.h | 17 - libiconv/ucs4be.h | 26 + libiconv/ucs4le.h | 26 + libiconv/ucs4swapped.h | 17 - libiconv/uhc_1.h | 1706 +++ libiconv/uhc_2.h | 1003 ++ libiconv/utf16.h | 29 +- libiconv/utf16be.h | 55 + libiconv/utf16le.h | 55 + libiconv/utf7.h | 6 +- m4/ChangeLog | 15 + m4/Makefile.am | 3 +- m4/Makefile.in | 24 +- m4/atconfig.m4 | 7 +- m4/flex.m4 | 18 + m4/lcmessage.m4 | 22 + m4/malloc.m4 | 23 +- m4/realloc.m4 | 23 +- m4/utimbuf.m4 | 40 + missing | 80 +- mkinstalldirs | 2 +- rebox.el | 1707 ++- recode.spec | 46 + src/ChangeLog | 146 +- src/Makefile.am | 16 +- src/Makefile.in | 234 +- src/ansi2knr.c | 172 +- src/applemac.c | 23 +- src/argmatch.c | 281 +- src/argmatch.h | 135 +- src/ascilat1.l | 6 +- src/atarist.c | 12 +- src/bangbang.c | 12 +- src/base64.c | 19 +- src/base64.h | 12 +- src/cdcnos.c | 12 +- src/charname.c | 12 +- src/charname.h | 12 +- src/combine.c | 56 +- src/common.h | 15 +- src/decsteps.h | 37 +- src/dump.c | 34 +- src/ebcdic.c | 12 +- src/endline.c | 12 +- src/flat.c | 12 +- src/fr-charname.c | 12 +- src/fr-charname.h | 23890 +++++++++++++++++++----------- src/freeze.c | 190 +- src/hash.c | 23 +- src/html.c | 48 +- src/ibmpc.c | 35 +- src/iconqnx.c | 12 +- src/iconv.c | 429 +- src/inisteps.h | 4 +- src/lat1asci.c | 12 +- src/lat1ltex.c | 12 +- src/lat1texi.c | 224 - src/lat1txte.c | 12 +- src/libiconv.c | 30 +- src/libiconv.h | 195 +- src/ltexlat1.l | 6 +- src/main.c | 128 +- src/merged.c | 19 +- src/mergelex.py | 3 +- src/mixed.c | 6 +- src/mule.c | 12 +- src/names.c | 432 +- src/outer.c | 246 +- src/permut.c | 12 +- src/quotearg.c | 403 + src/quotearg.h | 109 + src/quoted.c | 12 +- src/recode.1 | 10 +- src/recode.c | 30 +- src/recode.h | 20 +- src/recodext.h | 634 +- src/request.c | 184 +- src/rfc1345.c | 14 +- src/rfc1345.h | 2121 +-- src/strip-data.c | 693 +- src/strip-pool.c | 10 +- src/task.c | 197 +- src/{debug.c => testdump.c} | 141 +- src/texinfo.c | 84 + src/txtelat1.l | 6 +- src/ucs.c | 26 +- src/utf16.c | 77 +- src/utf7.c | 13 +- src/utf8.c | 12 +- src/varia.c | 12 +- src/vn.c | 13 +- tests/ChangeLog | 21 +- tests/Makefile.am | 25 +- tests/Makefile.in | 44 +- tests/atgeneral.m4 | 4 +- tests/bigauto.pl | 145 - tests/bigauto.py | 177 + tests/bigauto.sh | 22 - tests/lists.m4 | 8 +- tests/names.m4 | 94 +- tests/suite.m4 | 4 +- tests/{debug.m4 => testdump.m4} | 0 tests/testsuite | 226 +- 201 files changed, 41913 insertions(+), 25009 deletions(-) create mode 100644 PATCHES-AC mode change 100755 => 100644 config.guess mode change 100755 => 100644 config.sub create mode 100644 i18n/gl.mo create mode 100644 i18n/gl.po create mode 100644 libiconv/cjk_variants.h create mode 100644 libiconv/converters.h create mode 100644 libiconv/cp949.h create mode 100644 libiconv/flags.h create mode 100644 libiconv/iconv.h create mode 100644 libiconv/iso646_cn.h create mode 100644 libiconv/iso646_jp.h create mode 100644 libiconv/iso8859_16.h create mode 100644 libiconv/isoir165.h create mode 100644 libiconv/isoir165ext.h delete mode 100644 libiconv/johab_decomp.h create mode 100644 libiconv/translit.h create mode 100644 libiconv/ucs2be.h create mode 100644 libiconv/ucs2le.h create mode 100644 libiconv/ucs4be.h create mode 100644 libiconv/ucs4le.h create mode 100644 libiconv/uhc_1.h create mode 100644 libiconv/uhc_2.h create mode 100644 libiconv/utf16be.h create mode 100644 libiconv/utf16le.h create mode 100644 m4/flex.m4 create mode 100644 m4/lcmessage.m4 create mode 100644 m4/utimbuf.m4 create mode 100644 recode.spec delete mode 100644 src/lat1texi.c create mode 100644 src/quotearg.c create mode 100644 src/quotearg.h rename src/{debug.c => testdump.c} (76%) create mode 100644 src/texinfo.c delete mode 100644 tests/bigauto.pl create mode 100755 tests/bigauto.py delete mode 100755 tests/bigauto.sh rename tests/{debug.m4 => testdump.m4} (100%) diff --git a/BACKLOG b/BACKLOG index f0a3229..bd0ac8e 100644 --- a/BACKLOG +++ b/BACKLOG @@ -1,5 +1,5 @@ -# Summary of pending email for Free recode 3.5c. -# Last updated on 1999-12-29. +# Summary of pending email for Free recode 3.5d. +# Last updated on 2000-06-28. # This file summarises almost all pending email pertaining to this package. # I think users deserve to know where maintenance stands for what they use. @@ -11,20 +11,19 @@ # When diffs have been provided, an asterisk sometimes replaces the initial # dot. All dates are written according to ISO 8601, as far as possible. -../rmail/compilation - 1. 1999-08-25 François Pinard: Re: recode compile problem - 2. 1997-12-26 François Pinard: recode sur raptor - 3. 1999-06-23 Bruno Haible: recode installation on Solaris - 4. 1999-12-13 Tom Hageman: Re: recode-3.5 on NEXTSTEP, OPENSTEP and MacOS X Se - 5. 1998-05-17 Jim Meyering: Re: easing acconfig.h maintenance: utimbuf.m4 - 6. 1999-12-17 Tom Hageman: Re: recode-3.5 on NEXTSTEP, OPENSTEP and MacOS X Se - 7. 1999-12-19 François Pinard: recode juste =?iso-8859-1?q?apr=E8s?= modifs do - -../rmail/configuration - 1. 1999-12-15 François Pinard: libtool.m4 and aclocal - 2. 1999-12-15 Jim Meyering: Re: libtool.m4 and aclocal - 3. 1999-12-15 Akim Demaille: Re: libtool.m4 and aclocal - 4. 1999-12-15 Tom Tromey: Re: libtool.m4 and aclocal +../rmail/exemples + 1. 1992-11-23 mcgill-vision!corto.inria.fr!shapiro: recode + 2. 1994-12-19 Martin Wendel: ANNOUNCE: Emil-2.0 is available + 3. 1995-02-28 Francois Pinard: UUPC + 4. 1995-03-11 Scott Nelson: ISO-8859-X email test + 5. 1995-03-16 Martin Wendel: ANNOUNCE: emil-2.0.5 released + 6. 1995-07-05 François Pinard: Re: Retour ! + 7. 1995-07-25 David Collier-Brown: Early announcement: Mime-witing library + 8. 1996-03-02 François Pinard: Re: Présentation de Ulrich Drepper! + 9. 1996-06-09 François Pinard: Re: About recode +10. 1996-06-09 Roberto Alsina: Re: About recode +11. 1997-10-30 =?iso-8859-1?Q?G=E9rald_St=2DArneault_=3Cstarneag=40grics.qc.ca= +12. 3900-03-22 Bruno Haible: Re: recode-3.6 ../rmail/gettext 1. 1999-07-05 Bruno Haible: recode-3.5 installation problem @@ -35,11 +34,7 @@ 6. 1997-12-02 François Pinard: [Eric Backus ] recod 7. 1997-12-09 François Pinard: Re: recode 3.4e pretest 8. 1998-11-09 Alain Magloire: recode on Solaris - -../rmail/lex - 1. 1998-04-06 Tom Tromey: Re: I want flex, not lex! - 2. 1998-04-07 Akim Demaille: Re: I want flex, not lex! - 3. 1998-04-07 Akim Demaille: Re: I want flex, not lex! + 9. 3900-05-18 Thierry Constant: recode ../rmail/libtool 1. 1997-12-16 Erick Branderhorst: recode and ltmain.sh on solaris 2.6 @@ -54,131 +49,15 @@ 10. 1998-07-21 François Pinard: Re: recode: lat1html.c 11. 1998-07-21 Wiel: recode: lat1html.c 12. 1998-12-27 François Pinard: recode - dynlibs +13. 1999-12-15 François Pinard: libtool.m4 and aclocal +14. 1999-12-15 Jim Meyering: Re: libtool.m4 and aclocal +15. 1999-12-15 Akim Demaille: Re: libtool.m4 and aclocal +16. 1999-12-15 Tom Tromey: Re: libtool.m4 and aclocal -../rmail/xx-config-compile - 1. 1998-11-09 Alain Magloire: recode on Solaris - -../rmail/xx-doc-hexa - 1. 1998-10-14 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre - 2. 1998-10-14 Francois Yergeau: Re: Pour ceux qui ont le temps de lire... Cadr - 3. 1998-10-23 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre - 4. 1998-10-23 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre - -../rmail/xx-doc-macintosh - 1. 1998-12-07 François Pinard: Re: Novice user of recode with question - -../rmail/xx-emacs-lisp - 1. 1998-05-12 François Pinard: Emacs 20.2.93 - lisp/format.el and recode - 2. 1998-05-13 Richard Stallman: Re: Emacs 20.2.93 - lisp/format.el and recode - -../rmail/xx-engine - 1. 1994-12-13 Ross Paterson: Re: can ISO-IR-*** be used as MIME charset? - 2. 1995-02-15 Francois Pinard: Re: recode 3.4 documentation - 3. 1997-08-06 Ulrich Drepper: Re: charset names - 4. 1997-12-03 François Pinard: Re: recode problem - 5. 1997-12-04 Ulrich Drepper: Re: recode problem - 6. 1997-12-09 François Pinard: Re: recode - 7. 1997-12-09 Milivoj Ivkovic: Re: recode - 8. 1998-02-15 Ulrich Drepper: Re: closing stdout - 9. 1998-02-15 Aharon Robbins: closing stdout -10. 1998-02-16 Laurent Bourbeau: Full dans recode 3.4i -11. 1998-07-01 Sam: Re: au secour! -12. 1998-07-22 John Clews: (TC304.1897) Fallbacks/transformation - -../rmail/xx-legalese - 1. 1997-11-24 Richard Stallman: Re: License for recode - -../rmail/xx-library - 1. 1995-12-06 Per Bothner: Re: Internationalization resources? - 2. 1996-05-29 Ulrich Drepper: librecode, again - 3. 1997-10-14 Ulrich Drepper: Re: librecode - -../rmail/xx-list-admin - 1. 1996-12-29 Majordomo@IRO.UMontreal.CA: Majordomo results - 2. 1997-09-25 Mail Delivery Subsystem: Returned mail: User unknown - 3. 1997-09-24 Mail Delivery Subsystem: Returned mail: User unknown - 4. 1997-09-25 Mail Delivery Subsystem: Returned mail: User unknown - 5. 1997-09-25 Mail Delivery Subsystem: Returned mail: User unknown - 6. 1997-09-24 Mail Delivery Subsystem: Returned mail: User unknown - 7. 1997-12-10 Majordomo@IRO.UMontreal.CA: Majordomo results - 8. 1997-12-10 Mail Delivery Subsystem: Returned mail: Cannot send message with - 9. 1998-05-29 Majordomo@IRO.UMontreal.CA: Majordomo results -10. 1998-06-12 Roman Czyborra: recode-pretest > recode-forum -11. 1998-06-30 François Pinard: Re: recode-pretest > recode-forum -12. 1998-06-12 Roman Czyborra: recode-pretest > recode-forum -13. 1998-07-19 François Pinard: Re: [BIS] recode html -14. 1998-09-14 Mail Delivery Subsystem: Returned mail: Service unavailable - -../rmail/xx-list-announce - 1. 1994-10-31 pinard@IRO.UMontreal.CA: Prerelease: GNU recode 3.3.2 - 2. 1994-11-06 pinard@iro.umontreal.ca: Release: GNU recode 3.4 - 3. 1994-12-01 pinard@IRO.UMontreal.CA: Prerelease: GNU recode 3.4.1 - 4. 1996-09-20 François Pinard: Prerelease: GNU recode 3.4.2 - 5. 1997-09-27 François Pinard: Prerelease: GNU recode 3.4c - 6. 1997-11-23 François Pinard: Prerelease: GNU recode 3.4d - 7. 1997-12-02 François Pinard: Prerelease: GNU recode 3.4e - 8. 1997-12-10 François Pinard: Prerelease: GNU recode 3.4f - 9. 1998-09-30 François Pinard: Prerelease: GNU recode 3.4i -10. 1998-10-13 François Pinard: Prerelease: Free recode 3.4j -11. 1998-10-28 François Pinard: Re: GNU Software Catalog: Current Software, @i -12. 1998-10-28 François Pinard: Prerelease: Free recode 3.4k -13. 1998-10-15 François Pinard: Prerelease: Free recode 3.4j -14. 1998-10-13 François Pinard: Prerelease: Free recode 3.4j -15. 1998-11-23 François Pinard: Prerelease: Free recode 3.4l -16. 1998-12-13 François Pinard: Prerelease: Free recode 3.4m -17. 1998-12-13 François Pinard: Prerelease: Free recode 3.4m -18. 1999-12-20 François Pinard: Prerelease: Free recode 3.5a -19. 1999-12-20 François Pinard: Prerelease: Free recode 3.5a -20. 1999-12-23 François Pinard: Prerelease: Free recode 3.5b -21. 1999-12-23 François Pinard: Prerelease: Free recode 3.5b - -../rmail/xx-messages - 1. 1992-11-23 mcgill-vision!corto.inria.fr!shapiro: recode - 2. 1994-12-19 Martin Wendel: ANNOUNCE: Emil-2.0 is available - 3. 1995-02-28 Francois Pinard: UUPC - 4. 1995-03-11 Scott Nelson: ISO-8859-X email test - 5. 1995-03-16 Martin Wendel: ANNOUNCE: emil-2.0.5 released - 6. 1995-07-05 François Pinard: Re: Retour ! - 7. 1995-07-25 David Collier-Brown: Early announcement: Mime-witing library - 8. 1996-03-02 François Pinard: Re: Présentation de Ulrich Drepper! - 9. 1996-06-09 François Pinard: Re: About recode -10. 1996-06-09 Roberto Alsina: Re: About recode -11. 1997-10-30 =?iso-8859-1?Q?G=E9rald_St=2DArneault_=3Cstarneag=40grics.qc.ca= - -../rmail/xx-mixed - 1. 1998-12-01 François Pinard: Re: New -Spo option to `recode' - -../rmail/xx-msdos-port - 1. 1998-03-26 François Pinard: Re: find reco dos executable - 2. 1998-11-24 Eli Zaretskii: Re: recode for Amiga - 3.4k update - 3. 1998-11-24 Eli Zaretskii: Re: recode for Amiga - 3.4k update - 4. 1998-11-24 François Pinard: Re: recode for Amiga - 3.4k update - 5. 1998-11-25 Eli Zaretskii: configure+dist [was: Re: recode for Amiga - 3.4k - 6. 1998-11-25 Eli Zaretskii: libtool+shell [was: Re: recode for Amiga - 3.4k u - 7. 1998-11-25 Eli Zaretskii: Perl [was: Re: recode for Amiga - 3.4k update] - 8. 1998-11-25 Eli Zaretskii: EOLs [was: Re: recode for Amiga - 3.4k update] - 9. 1998-11-25 Eli Zaretskii: configure+dist [was: Re: recode for Amiga - 3.4k -10. 1998-11-25 Eli Zaretskii: Intro [was: Re: recode for Amiga - 3.4k update] -11. 1998-11-30 Eli Zaretskii: Re: New -Spo option to `recode' - -../rmail/xx-multext - 1. 1996-05-24 Jean Ve'ronis: Soft: MtScript (Multilingual editor) - 2. 1996-06-17 Jean Ve'ronis: Free Soft: MtStr - Multilingual string library - 3. 1996-06-20 Jean Ve'ronis: Free Soft: MtRecode - Character conversion progra - 4. 1996-08-29 Malek BOUALEM -- UNIVERSITE: Brief Introduction of the LPL - 5. 1996-09-05 Malek BOUALEM -- UNIVERSITE: Re: Introduction of LPL/MULTEXT/MTS - 6. 1997-12-10 Jean Veronis: Re: Citation de MtRecode - -../rmail/xx-op-backup - 1. 1994-03-09 Nicolas Anquetil: recode - 2. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1 - -../rmail/xx-op-list - 1. 1993-12-21 Martin Maechler: Re: Prerelease: GNU recode version 3.2.10 - 2. 1993-12-21 Francois Pinard: Prerelease: GNU recode version 3.2.10 - 3. 1993-02-10 Patrik F{ltstr|m: Re: transcription iso-8859-1 to us-ascii? - 4. 1998-10-29 Markus Kuhn: Free X11 Unicode terminal font available - 5. 1998-11-22 François Pinard: Re: Free X11 Unicode terminal font available +../rmail/suggestions + 1. 3900-02-24 George Zeigler: Re: [SLE] character set converter in SuSE? + 2. 3900-02-25 François Pinard: Re: [SLE] character set converter in SuSE? + 3. 3900-02-23 regnorj@sami.uit.no: recode and the Sami language ../admin/rmail/emacs 1. 1998-05-12 François Pinard: Emacs 20.2.93 - lisp/format.el and recode @@ -191,22 +70,34 @@ 5. 1999-10-16 Jason Trowbridge: Re: Adding info to Python Buglist 6. 1999-10-17 Hrvoje Niksic: Re: Adding info to Python Buglist 7. 1999-10-18 Jason Trowbridge: Re: Adding info to Python Buglist + 8. 3900-03-24 Nick Trout: Re: Intranet database + 9. 3900-03-22 Alessandro Bottoni: Any equivalent of req/wreq, gnats or bugzill +10. 1996-09-27 Usenet news: Re: Message buffers associated with files? +11. 1996-09-27 Scott Blachowicz: Re: Message buffers associated with files? +12. 1996-09-27 Lars Magne Ingebrigtsen: Re: Message buffers associated with fil +13. 1996-09-27 Paul Franklin: Re: Message buffers associated with files? +14. 1996-10-02 Lars Magne Ingebrigtsen: Re: Message buffers associated with fil +15. 1996-07-25 Paul Franklin: red gnus idea--gnats backend? +16. 1996-07-26 Per Abrahamsen: Re: red gnus idea--gnats backend? +17. 1996-07-29 Ken Raeburn: Re: red gnus idea--gnats backend? +18. 1994-07-14 shealy%aldiscon.ie@Lightning.McRCIM.McGill.EDU: Bug Tracking Sys +19. 1994-07-14 dwood@sun174.cpdsc.com: Re: Bug Tracking System +20. 1994-07-14 leisner@sdsp.mc.xerox.com: Re: Bug Tracking System +21. 1994-07-14 mordock@cisco.com: Re: Bug Tracking System +22. 3900-06-10 François Pinard: jitterbug +23. 3900-06-19 Barry A. Warsaw: Re: [Mailman-Developers] Re: Re: Various mailma ../admin/rmail/legalese 1. 1997-11-24 Richard Stallman: Re: License for recode - 2. 1999-01-30 Richard Stallman: Why you shouldn't use the Library GPL for your - 3. 1999-12-21 Bruno Haible: Re: libiconv-0.2 - 4. 1999-12-21 François Pinard: Checking for `recode' and `libiconv' - 5. 1999-09-08 Bruno Haible: Re: cjk.tgz - 6. 1999-09-15 François Pinard: Re: cjk.tgz - 7. 1999-12-06 François Pinard: Re: disclaimers - 8. 1999-12-06 Bruno Haible: Re: disclaimers - 9. 1999-12-06 assignments: Re: disclaimers + 2. 1999-09-15 François Pinard: Re: cjk.tgz ../admin/rmail/list-admin 1. 1999-07-20 Mail Delivery Subsystem: Returned mail: Can't create output 2. 1999-07-20 Mail Delivery Subsystem: Returned mail: Can't create output 3. 1999-06-02 Mail Delivery Subsystem: Returned mail: User unknown + 4. 3900-06-05 NDQ: [recode] Remove + 5. 3900-03-19 deets@inker.com: [recode] Expose your business to the Internet + 6. 3900-03-16 galvin@angelfire.com: [recode] Welcome To The CFN Solution" ../admin/rmail/list-announce 1. 1994-10-31 pinard@IRO.UMontreal.CA: Prerelease: GNU recode 3.3.2 @@ -237,6 +128,15 @@ 26. 1999-05-18 François Pinard: Prerelease: Free recode 3.4r 27. 1999-06-01 François Pinard: Release: Free recode 3.5 28. 1999-06-06 François Pinard: Release: Free recode 3.5 +29. 1999-12-20 François Pinard: Prerelease: Free recode 3.5a +30. 1999-12-20 François Pinard: Prerelease: Free recode 3.5a +31. 1999-12-23 François Pinard: Prerelease: Free recode 3.5b +32. 1999-12-23 François Pinard: Prerelease: Free recode 3.5b +33. 1999-12-29 François Pinard: Prerelease: Free recode 3.5c +34. 1999-12-28 François Pinard: Merging `libiconv' within `recode' +35. 1999-12-29 François Pinard: Prerelease: Free recode 3.5c +36. 3900-06-27 Isaac.Hollander@msdw.com: recode 3.5d? +37. 3900-06-28 François Pinard: Re: recode 3.5d? ../admin/rmail/port-doswin 1. 1998-02-18 Eli Zaretskii: Re: Integrating your diffs @@ -372,6 +272,7 @@ 43. 1997-03-28 Jake Morrison: Re: Re: Character set conversion API for libc 44. 1997-09-11 Kenichi Handa: Re: RMAIL and coding system (Re: file name coding 45. 1997-09-18 Martin J. Dürst: Re: RMAIL and coding system (Re: file name codi +46. 3900-06-02 Philippe Verdy: =?iso-8859-1?Q?Re:_Messages_fran=E7ais_de_GNU_Pr ../asian/rmail/aides 1. 1997-12-02 Jake Morrison: Re: Character set conversion API for libc @@ -422,6 +323,9 @@ 14. 1997-10-20 Jason Molenda: Re: Hanja-Big5 conversion table 15. 1999-04-05 Tung-Han Hsieh: The zh_TW.Big5 locale data 16. 1999-11-29 Angelo Borsotti: iconv Big5 incorrect decoding +17. 1999-12-23 Georges KO: Problems with: 1) French guillemets and Big5 in rege +18. 3900-06-02 Roger So: Big5HKSCS iconv(3) module +19. 3900-06-04 Ulrich Drepper: Re: Big5HKSCS iconv(3) module ../asian/rmail/han-unification 1. 1995-12-05 Per Bothner: Re: Internationalization resources? @@ -444,6 +348,11 @@ 18. 1998-03-17 Alain LaBonté : Compréhension du problème japonais pour le jeu u 19. 1996-01-05 François Pinard: Re: 8bit clean perl? (fwd) 20. 1998-09-09 Alain LaBonté : Re: Projet de rapport de liaison entre ISO/IEC +21. 3900-05-06 Dennis E. Hamilton: OT: Unicode Unification Objections +22. 3900-05-07 Kevin Russell: Re: OT [Way OT]: Unicode Unification Objections +23. 3900-05-07 Kevin Russell: Re: OT [Way OT]: Unicode Unification Objections +24. 3900-05-08 François Pinard: Re: OT [Way OT]: Unicode Unification Objections +25. 3900-05-08 Fredrik Lundh: Re: OT [Way OT]: Unicode Unification Objections ../asian/rmail/help 1. 1998-12-04 Martin J. Duerst: Re: Prerelease: GNU recode 3.4i @@ -477,6 +386,47 @@ 22. 1999-12-22 Bruno Haible: Re: libiconv et recode :-) 23. 1999-12-24 François Pinard: recode et libiconv, =?iso-8859-1?q?r=E9flexions 24. 1999-12-28 Ulrich Drepper: more conversion modules +25. 1999-12-28 Bruno Haible: Re: recode et libiconv, =?iso-8859-1?q?r=E9flexion +26. 3900-01-18 Bruno Haible: iconv(3) return value +27. 3900-01-18 Ulrich Drepper: Re: iconv(3) return value +28. 3900-01-19 Bruno Haible: Re: iconv(3) return value +29. 3900-01-21 Bruno Haible: fixes for UTF-8 decoder +30. 3900-03-14 Bruno Haible: utf-16 iconv requires aligned buffer +31. 3900-03-15 Markus Kuhn: Re: using iconv for conversion from/to Unicode +32. 3900-03-15 Bruno Haible: Re: using iconv for conversion from/to Unicode +33. 3900-03-22 Bruno Haible: Re: recode-3.6 +34. 3900-03-22 Bruno Haible: Re: recode-3.6 +35. 3900-03-23 Bruno Haible: UCS-2 conversion +36. 3900-03-23 Bruno Haible: removing dead code +37. 3900-03-23 Ulrich Drepper: Re: removing dead code +38. 3900-03-28 Andreas Jaeger: Failure in iconv-test with UCS2 +39. 3900-03-27 Ulrich Drepper: Re: UCS-2 conversion +40. 3900-03-28 Ulrich Drepper: Re: Failure in iconv-test with UCS2 +41. 3900-03-29 Bruno Haible: Re: Failure in iconv-test with UCS2 +42. 3900-03-29 Bruno Haible: Re: utf-16 iconv requires aligned buffer +43. 3900-03-29 Ulrich Drepper: Re: Failure in iconv-test with UCS2 +44. 3900-03-29 François Pinard: `libiconv' pour Python? +45. 3900-03-30 Ulrich Drepper: Re: utf-16 iconv requires aligned buffer +46. 3900-04-04 Andreas Schwab: big5.c typo +47. 3900-04-04 Ulrich Drepper: Re: big5.c typo +48. 3900-04-04 jaeger@informatik.uni-kl.de: error in utf-16.c +49. 3900-04-04 Ulrich Drepper: Re: error in utf-16.c +50. 3900-04-04 jaeger@informatik.uni-kl.de: Re: error in utf-16.c +51. 3900-05-19 Bruno Haible: Re: Bug in gettext tools +52. 3900-06-12 Ulrich Drepper: next big iconv patch +53. 3900-06-13 Edmund GRIMLEY EVANS: glibc-2.1.3: iconv requiring extra byte wi +54. 3900-06-13 Ulrich Drepper: Re: glibc-2.1.3: iconv requiring extra byte with +55. 3900-06-27 François Pinard: Diagnostiques pour `libiconv' dans `recode' (bi +56. 3900-06-26 François Pinard: Diagnostics en compilant `libiconv' dans `recod +57. 3900-03-30 Bruno Haible: Re: `libiconv' pour Python? +58. 3900-03-30 François Pinard: Re: `libiconv' pour Python? +59. 3900-03-30 Bruno Haible: Re: `libiconv' pour Python? +60. 3900-04-25 Bruno Haible: recode + libiconv (3) +61. 3900-03-21 François Pinard: libiconv et recode - petite note +62. 1999-12-31 Bruno Haible: libiconv-0.3, recode-3.5b +63. 3900-01-04 Bruno Haible: libiconv-1.0 is released +64. 1999-12-09 Bruno Haible: cjk.tgz +65. 1999-12-09 François Pinard: Re: cjk.tgz ../asian/rmail/japanese 1. 1995-04-25 Ryutaro Susukita: Re: tar-1.11.2 SunOS-4.1.3 JLE-1.1.3 segmentai @@ -582,6 +532,7 @@ 4. 1996-05-22 Alain LaBont/e'/: Re: Nom des caracteres coreens dans l'ISO/CEI 5. 1998-12-16 Francois Yergeau: Tel que promis 6. 1998-12-16 Francois Yergeau: Re: recode et table =?ISO-8859-1?Q?fran=E7aise + 7. 3900-03-29 Mikael Olofsson: RE: Python - Next Release Questions ../asian/rmail/mule 1. 1998-03-28 Werner Lemberg: Re: MULE-UCS 0.01(YUME) Release. @@ -595,6 +546,42 @@ 9. 1999-02-04 Stainless Steel Rat: Re: More charset things 10. 1999-05-07 Takashi Nishimoto: Re: Need help to find doc 11. 1997-11-05 French GNU/LI List: Re: Donation process +12. 3900-01-12 Joshua Redstone: Re: Japanese/XEmacs21 +13. 3900-01-13 Satoru Tomura: Re: Japanese/XEmacs21 +14. 3900-04-27 François Pinard: [gnu.emacs.help] Re: Convert DOS to Unix +15. 3900-04-26 François Pinard: Re: Problems with 8-bit headers +16. 3900-04-27 Kenichi Handa: Re: Problems with 8-bit headers +17. 3900-04-30 Florian Weimer: Re: Problems with 8-bit headers +18. 3900-04-30 Janusz S. Bien: Re: Problems with 8-bit headers +19. 3900-05-01 Florian Weimer: Re: Problems with 8-bit headers +20. 3900-05-01 Kai Großjohann: Re: Problems with 8-bit headers +21. 3900-05-06 Florian Weimer: Re: more multibyte bugs + +../asian/rmail/mule-ucs + 1. 3900-04-24 Vladimir Volovich: Re: Problems with 8-bit headers + 2. 3900-04-26 Vladimir Volovich: Re: Problems with 8-bit headers + 3. 3900-04-26 Janusz S. Bien: Re: Problems with 8-bit headers + 4. 3900-05-01 Vladimir Volovich: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 =?iso-8859-1? + 5. 3900-05-01 Shenghuo ZHU: Re: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 + 6. 3900-05-01 Vladimir Volovich: Re: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 + 7. 3900-05-02 Shenghuo ZHU: Re: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 + 8. 3900-05-02 Shenghuo ZHU: Re: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 + 9. 3900-05-03 Janusz S. Bien: Re: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 +10. 3900-05-03 Shenghuo ZHU: Re: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 +11. 3900-05-16 Eli Zaretskii: Re: [leaders] Re: iso-8859-2 on team-sl +12. 3900-04-25 Kai Großjohann: Re: People with From: +13. 3900-04-25 Florian Weimer: Re: People with From: +14. 3900-04-26 Florian Weimer: Re: People with From: +15. 3900-04-26 Shenghuo ZHU: Re: People with From: +16. 3900-04-26 Florian Weimer: Re: People with From: +17. 3900-04-26 Shenghuo ZHU: Re: People with From: +18. 3900-04-26 Karl EICHWALDER: Re: UTF-8 +19. 3900-05-04 Karl EICHWALDER: Re: =?iso-8859-5?b?v+De0dAg39Xg0A==?= 1 +20. 3900-04-21 Michael Welsh Duggan: Re: UTF-8 +21. 3900-05-19 Lars Magne Ingebrigtsen: \201's back in 8-bit MIME parts +22. 3900-05-19 Shenghuo ZHU: Re: \201's back in 8-bit MIME parts +23. 3900-06-03 MIYASHITA Hisashi (=?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpIS +24. 3900-03-16 =?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpISU1J?=: Mule-UCS 0.7 ../asian/rmail/printing 1. 1998-02-11 Jungshik Shin: Re: Emacs 20.x desiderata @@ -645,6 +632,10 @@ 10. 1999-11-02 Toby Speight: Re: charset="Windows-1252" 11. 1999-11-04 Robert Bihlmeyer: Re: charset="Windows-1252" 12. 1999-11-04 Karl Eichwalder: Re: charset="Windows-1252" +13. 3900-05-12 Toby Speight: Re: decoding characters +14. 1999-10-02 Earl Hood: Re: Unrecognized character set +15. 1999-10-02 Mats Dufberg: Re: Unrecognized character set +16. 1999-10-04 Al Gilman: Re: Unrecognized character set ../charsets/rmail/5426 1. 1997-12-23 François Pinard: Re: ISO 5426 -> iso8859-1 converter @@ -683,6 +674,9 @@ 18. 1999-03-31 Alain LaBonté : Publication of Latin 9 19. 1998-03-24 Alain LaBonté : Re: registration of a new charset: iso-8859-15 20. 1998-04-17 Alain LaBonté : ISO/CEI FDIS 8859-15 (final text) +21. 3900-02-20 Stanislav Meduna: Nonbreakable space +22. 3900-03-27 E.I. Kolehmainen: (TC304.2270) SFS ISO/IEC 8859-15, "Latin-9" +23. 3900-06-16 Alain LaBonté : Re: French encoding [Was: Chapter on character s ../charsets/rmail/8859-7 1. 1999-10-29 Tom Tromey: forwarded message from Markus Kuhn @@ -691,6 +685,7 @@ 1. 1998-08-18 Laurent Bourbeau: Texinfo - EC-FC 2. 1998-08-25 Laurent Bourbeau: Recode 3.4h - Bilan BUG de Laurent 3. 1998-09-02 Laurent Bourbeau: Recode - Tests 2 + 4. 1998-09-16 Keld J|rn Simonsen: Re: [pinard@IRO.UMontreal.CA: Re: snapshot o ../charsets/rmail/ansel 1. 1998-04-06 Michael Taeschner: recode support for ANSI Z39.47 (1985) ? @@ -719,6 +714,17 @@ ../charsets/rmail/ascii-bs 1. 1997-04-23 V.S. Umamaheswaran: Contribution to SC2 on 8-bit codes and combi + 2. 3900-01-28 François Pinard: Re: Quotation marks + 3. 3900-01-29 Markus Kuhn: Re: Quotation marks + 4. 3900-01-29 Markus Kuhn: Re: Quotation marks + 5. 3900-02-02 François Pinard: Re: Quotation marks + 6. 1999-12-21 François Pinard: Re: Quotation marks + 7. 1999-12-20 Bruno Haible: Re: ASCII and Unicode Quotation Marks + 8. 1999-12-20 Karl Berry: Re: ASCII and Unicode Quotation Marks + 9. 1999-12-20 Tom Tromey: Re: ASCII and Unicode Quotation Marks +10. 1999-12-21 Karl Berry: Re: ASCII and Unicode Quotation Marks +11. 1999-12-21 Aharon Robbins: Re: ASCII and Unicode Quotation Marks +12. 1999-12-20 François Pinard: [Markus Kuhn ] ASCII ../charsets/rmail/ebcdic 1. 1990-08-31 Keld J|rn Simonsen: [comp.unix.questions] Re: EBCDIC to ASCII co @@ -744,6 +750,7 @@ 21. 1996-03-28 Larry Auton: dd conv=(ascii|ebcdic) 22. 1996-03-28 Jim Meyering: Re: dd conv=(ascii|ebcdic) 23. 1996-11-24 Joe Wright: Re: The char type crossing the 8 bit barrier? (Was R +24. 3900-03-09 Al Christians: Re: EBCDIC translation? ../charsets/rmail/euro 1. 1998-04-01 K I Larsson: (TC304.1649) More on Euro-codetables @@ -830,6 +837,9 @@ 22. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2 23. 1998-07-14 Santiago Vila: Bug #24436: recode: missing some things for latex 24. 1998-07-14 François Pinard: Re: Bug #24436: recode: missing some things for +25. 3900-02-08 Dinu C. Gherman: ANN: calie 0.5 (mostly for LaTeX users) +26. 3900-04-29 Andrei Mircea: Re: imperfect handling of international character +27. 3900-04-30 Mats Bengtsson: Patch + Re: imperfect handling of international ../charsets/rmail/latin1 1. 1989-07-10 der Mouse: (none) @@ -900,6 +910,13 @@ 52. 1999-03-31 Andreas Schwab: Re: Fix for AtariST encoding 53. 1999-03-31 Keld J|rn Simonsen: Re: Fix for AtariST encoding 54. 1999-01-02 François Pinard: recode dans doc +55. 3900-05-29 François Pinard: New charsets.def +56. 3900-05-29 François Pinard: Still processing charsets.def and iso10646.def +57. 3900-05-29 François Pinard: Processing charsets.def and iso10646.def togeth +58. 3900-05-29 François Pinard: New iso10646.def +59. 3900-05-29 François Pinard: Re: New iso10646.def +60. 3900-06-26 François Pinard: recode - warnings +61. 3900-03-01 Peter Kleiweg: recode 3.5: iso10646 & rfc-1345 ../charsets/rmail/t61 1. 1997-11-21 Ulrich Drepper: Re: Character set conversion API for libc @@ -908,6 +925,7 @@ ../charsets/rmail/tables 1. 1999-07-05 Bruno Haible: recode-3.5 conversion bug 2. 1994-12-20 Hennus Bergman: Re: Small GNU recode bugs + 3. 3900-01-24 Andrew Csillag: Re: stupid FORM problem ../charsets/rmail/tabular 1. 1995-06-21 Hilmar Schlegel: Re: recode problem @@ -962,6 +980,9 @@ 2. 1999-07-23 François Pinard: Re: recode x strip diacritics ? 3. 1999-08-17 Frantisek Hanzlik: Re: recode x strip diacritics ? +../engines/rmail/ieee + 1. 3900-03-09 Harry George: Re: EBCDIC translation? + ../engines/rmail/iso-paper 1. 1998-10-30 Thorgeir Sigurdsson: (TC304.2057) N854 Draft of MODEL PT deliver @@ -979,6 +1000,9 @@ 5. 1998-11-22 François Pinard: Re: Free X11 Unicode terminal font available 6. 1999-03-30 Andreas Schwab: Fix for AtariST encoding +../engines/rmail/memory-leak + 1. 3900-01-16 François Pinard: Re: Memory leaks in Recode ? + ../engines/rmail/mixed 1. 1992-11-23 mcgill-vision!corto.inria.fr!shapiro: recode 2. 1994-12-19 Martin Wendel: ANNOUNCE: Emil-2.0 is available @@ -1044,6 +1068,9 @@ 10. 1999-12-20 François Pinard: Re: Release: Free recode 3.5 11. 1999-12-20 Eli Zaretskii: Re: Release: Free recode 3.5 12. 1999-12-21 Bruno Haible: Re: libiconv et recode :-) +13. 1999-12-26 Eli Zaretskii: Re: Release: Free recode 3.5 +14. 1999-12-26 Eli Zaretskii: Re: Release: Free recode 3.5 +15. 1999-12-30 François Pinard: Re: Release: Free recode 3.5 ../fallbacks/rmail/Arabic 1. 1998-06-18 Roman Czyborra: Arabic renderer in four lines of Perl @@ -1089,6 +1116,8 @@ ../fallbacks/rmail/Danish 1. 1998-05-01 Bo Vagner Hoejer: Re: hello-1.3.10.da.po + 2. 3900-06-14 Kenneth Christiansen: Hi + 3. 3900-06-17 François Pinard: Re: ptx-0.4.2.da.po ../fallbacks/rmail/Dutch 1. 1999-03-22 Thorgeir Sigurdsson: (CEN/TC304-N889) Dutch Char Set Policy @@ -1140,6 +1169,42 @@ 4. 1998-04-28 Jochen.Hayek@acm.org: Re: what about `ASCII with easy German con 5. 1994-04-13 Ulrich Windl: recode 3.3 6. 1997-11-25 Markus Kuhn: Re: ISO 10646/UTF-8 support for recode 3.4 + 7. 1995-05-10 Ulrich Drepper: Re: Volunteering for translations + 8. 1995-05-10 François Pinard: Re: Volunteering for translations + 9. 1995-05-07 François Pinard: Re: Volunteering for translations +10. 1995-05-08 Ulrich Drepper: Re: Volunteering for translations +11. 1995-05-08 Martin Husemann: Re: Volunteering for translations +12. 1995-05-08 François Pinard: Re: Volunteering for translations +13. 1995-05-09 Ulrich Drepper: Re: Volunteering for translations +14. 1995-08-22 Ulrich Windl: Re: problem with recode 3 +15. 1995-08-22 François Pinard: Re: problem with recode 3 +16. 1995-07-25 François Pinard: Re: Patch for recode-3.4 +17. 1995-07-17 Juergen Weigert (Inf4 - hiwi): recode-3.4 extended 'flat' charac +18. 1995-06-07 Ulrich Drepper: something you might be interested in +19. 1995-06-06 François Pinard: Re: something you might be interested in +20. 1995-06-07 Ulrich Drepper: Re: something you might be interested in +21. 1995-06-07 François Pinard: Re: something you might be interested in +22. 1995-01-21 Markus Kuhn: Re: Unicode Matters +23. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1 +24. 1994-12-04 Francois Pinard: Re: Prerelease: GNU recode 3.4.1 +25. 1994-12-04 Francois Pinard: Re: Prerelease: GNU recode 3.4.1 +26. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1 +27. 1993-02-11 Markus Kuhn: Re: transcription iso-8859-1 to us-ascii? +28. 1994-07-19 haible@ma2s2.mathematik.uni-karlsruhe.de: latex conversions in r +29. 1994-07-19 Francois Pinard: Re: latex conversions in recode-3.3 +30. 1994-07-19 haible@ma2s2.mathematik.uni-karlsruhe.de: Re: latex conversions +31. 1994-09-28 gator@cs.tu-berlin.de: new charset for recode +32. 1994-09-30 Francois Pinard: Re: new charset for recode +33. 1994-10-01 gator@cs.tu-berlin.de: Re: new charset for recode +34. 1994-01-09 Thorbjoern Hansen: Suggestions for `recode' +35. 1994-01-11 Francois Pinard: Suggestions for `recode' +36. 1994-01-12 Thorbjoern Hansen: Re: Suggestions for `recode' +37. 1994-01-12 Francois Pinard: Re: Suggestions for `recode' +38. 1994-01-12 Francois Pinard: Re: Suggestions for `recode' +39. 1994-01-12 Thorbjoern Hansen: Re: Suggestions for `recode' +40. 1994-01-11 Francois Pinard: Suggestions for `recode' +41. 1994-01-09 Thorbjoern Hansen: Suggestions for `recode' +42. 1994-01-12 Francois Pinard: shar: diac.tar.gz ../fallbacks/rmail/Greek 1. 1994-10-13 Liam R. E. Quin: Re: Multilingual HTML, SGML documents? @@ -1151,6 +1216,14 @@ 4. 1997-10-01 Kenichi Handa: Re: Hebrew 5. 1997-10-01 Noam Shomron: Re: Hebrew 6. 1992-02-06 Nathaniel Borenstein: test of =?iso-8859-8?q?=FA=E9=F8=E1=F2?= i + 7. 3900-01-17 Uwe Brauer: mime and HEBREW + 8. 3900-01-17 Uwe Brauer: Mule without Mule + 9. 1999-06-17 Gene Sorensen: Re: Syriac fonts for the Mac (Apple) +10. 3900-05-20 Eli Zaretskii: Re: Bug in gettext tools +11. 3900-05-22 salvador: Re: Bug in gettext tools +12. 3900-05-22 Eli Zaretskii: Re: Bug in gettext tools +13. 3900-05-22 salvador: Re: Bug in gettext tools +14. 3900-05-23 Eli Zaretskii: Re: Bug in gettext tools ../fallbacks/rmail/Hungarian 1. 1995-11-02 Andras Kornai: Re: Hungarian @@ -1197,6 +1270,13 @@ 12. 1998-09-15 Stefan Haubenthal WWW-Userpage: Re: recode suggestions 13. 1998-07-08 Johan van Wingen: (TC304.1858) transliterating Greek 14. 1996-10-03 feeley@JSP.UMontreal.CA: (none) +15. 1999-06-03 Han-Wen Nienhuys: Unidentified subject! +16. 1999-06-03 Sigfrid Lundberg, Lub NetLab: Re: Unidentified subject! +17. 1993-03-18 Jan Labanowski: Translit --- transliterate foreign alphabets +18. 1999-10-29 Tom Tromey: forwarded message from Markus Kuhn +19. 3900-03-22 François Pinard: Re: recode-3.6 +20. 3900-03-22 Bruno Haible: Re: recode-3.6 +21. 3900-03-22 Bruno Haible: Re: recode-3.6 ../fallbacks/rmail/translit-iso 1. 1996-05-31 Alain LaBont/e'/: Réflecteur de courrier sur la translittération @@ -1243,14 +1323,6 @@ 42. 1997-11-25 Keld J|rn Simonsen: (i18n.416) Transliteration [and transcriptio 43. 1997-11-25 Keld J|rn Simonsen: (i18n.417) Transliteration [and transcriptio -../iso/rmail/14652 - 1. 1997-12-21 Alain LaBonté - 3: (SC22WG20.2149) 14652 FDC available - 2. 1998-01-07 Keld J|rn Simonsen: Re: ISO/IEC FCD 14651 and 14652 - 3. 1998-01-06 x.zhang@utoronto.ca: Re: ISO/IEC FCD 14651 and 14652 - 4. 1998-03-12 Keld J|rn Simonsen: Re: 9995-3 table 1 + registering Canadian lo - 5. 1998-03-12 Keld J|rn Simonsen: Re: 9995-3 table 1 + registering Canadian lo - 6. 1998-12-31 Keld J|rn Simonsen: (i18n.439) new sorting and locale drafts - ../iso/rmail/14766 1. 1998-05-19 Keld J|rn Simonsen: (iso14766.15) 14766 WD 3 @@ -1326,6 +1398,7 @@ 10. 1998-04-06 Þorvarður Kári Ólafsson: (TC304.1684) Project discussion lists 11. 1998-05-01 Keld J|rn Simonsen: (TC304.1742) guide on POSIX locales 12. 1998-05-06 Þorvarður Kári Ólafsson: (TC304.1750) Keyboards list +13. 3900-03-15 François Pinard: Re: Sorting a dictionary ../iso/rmail/mes 1. 1996-05-04 Michael Everson: (i18n.327) European Subsets of ISO/IEC 10646-1 @@ -1370,15 +1443,13 @@ 33. 1997-07-22 Keld J|rn Simonsen: (i18n.363) CEN cultural register 34. 1996-01-13 Keld J|rn Simonsen: (i18n.285) CEN/TC304 PT01 report 35. 1999-07-07 LaBonté, Alain: Enregistrement des jeux de caractères ISO - comi +36. 1998-12-20 Martin von Loewis martin@mira.isdn.cs.tu-berlin.de: [String-SIG] ../iso/rmail/références 1. 1998-04-03 Alain LaBonté : Re: Étude sur le codage des caractères 2. 1998-11-30 Roman Czyborra: finished thesis on Unicode in Unix -../iso/rmail/using-word - 1. 1996-10-06 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre - -../iso/rmail/web-sites +../iso/rmail/surf 1. 1997-11-03 Thorgeir Sigurdsson: (TC304.1326) Web of CEN and our Call 2. 1997-11-19 Michael Everson: (i18n.399) iso15924 list created 3. 1998-03-13 Thorgeir Sigurdsson: (TC304.1529) Inability to Distribute via ST @@ -1393,6 +1464,9 @@ 12. 1998-07-07 Thorgeir Sigurdsson: (TC304.1854) Database of Latin letters 13. 1998-08-05 Alain LaBonté : Re: Obtaining ISO standards in Canada +../iso/rmail/using-word + 1. 1996-10-06 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre + ../surfaces/rmail/base64 1. 1998-09-11 Lars Magne Ingebrigtsen: Re: [Various] base64-decode 2. 1998-09-10 Santiago Vila: Re: [Various] base64-decode @@ -1426,6 +1500,7 @@ ../surfaces/rmail/endlines 1. 1999-10-31 Matt Gushee: Re: A Small dos->UNIX convertor + 2. 3900-03-28 Fredrik Lundh: Re: chr(26) => file reading bug ../surfaces/rmail/graphic 1. 1994-11-16 Francois Pinard: Re: recode 3.4+ and HTML @@ -1483,6 +1558,9 @@ 2. 1996-03-22 asiascii@sesame.demon.co.uk (John Clews) (by way of Alain LaBont 3. 1996-08-23 Alain LaBont/e'/: Transliteration, ISO and bullet-proof Internet 4. 1997-12-16 Alain LaBonté - 1: Re: RFC1345 charset + 5. 1993-12-14 Michel Desmarais: CERT-Statistiques d'economie d'espace + 6. 1993-12-14 ALB@immedia.ca: CERT-Message precedent en format UUENCODE + 7. 1993-12-14 ALB@immedia.ca: CERT-Svp ajouter mon adresse a la liste/ + Sugge ../surfaces/rmail/uu-bigger-specs 1. 1993-09-05 mathew: Re: uuencode/uudecode @@ -1517,9 +1595,87 @@ 3. 1994-10-29 Michael Shields: Re: New `uudecode -w' option for easy multipart 4. 1994-10-29 Michael Shields: New `uudecode -w' option for easy multipart dec -../admin/reweb/RMAIL - 1. 1999-06-24 François Pinard: Re: Please tell me the URL of your home Web pag - 2. 1999-06-26 François Pinard: Re: Please tell me the URL of your home Web pag +../trees/rmail/rtf + 1. 1998-11-15 Marc Blanchet: Re: rapports divers + 2. 1992-09-25 develop!nextmime@ebony@sblab.att.com: More richtext questions/co + 3. 1988-03-26 Dominik Wujastyk: Microsoft Rich Text Format + 4. 1988-08-25 Peter Ilieve: Microsoft Rich Text Format, RTF + 5. 1991-03-04 Brain in Neutral: [text...] RTF file tool distribution 1.05 avai + 6. 1992-01-27 John R. Levine: [comp.text] Re: RTF Format + 7. 1992-10-08 Dan Connolly: [comp.windows.x.announce] XcRichText-1.5: RTF widg + 8. 1992-12-02 Brain in Neutral: Re: ASCII <-> rtf anyboday?? + 9. 1988-08-25 Peter Ilieve: Microsoft Rich Text Format, RTF +10. 1991-03-04 Brain in Neutral: [text...] RTF file tool distribution 1.05 avai +11. 1992-01-27 John R. Levine: [comp.text] Re: RTF Format +12. 1992-10-08 Dan Connolly: [comp.windows.x.announce] XcRichText-1.5: RTF widg +13. 1992-12-02 Brain in Neutral: Re: ASCII <-> rtf anyboday?? +14. 1994-11-17 Chris J. Hector: Re: ANNOUNCE: A DOS port of rtftohtml! +15. 1994-11-23 J-F Pitot de La Beaujardiere: Re: Ms Word 6.0 filter for HTML +16. 1995-05-19 Normand Ranger: SOMMAIRE: WP to HTML +17. 1996-05-25 François Pinard: (none) +18. 1997-11-29 Alain LaBonté - 1: Un tuyau intéressant pour générer du HTML +19. 1999-05-18 François Pinard: Re: ISO/IEC 2375 [ISO register of character set +20. 1998-11-15 Marc Blanchet: Re: rapports divers +21. 1997-04-14 Dirk Kutscher: Re: Word RTF -> SGML +22. 1997-04-23 Per-Ake Ling: Re: Word RTF -> SGML +23. 1997-04-24 Mikko Lounela: Re: Word RTF -> SGML +24. 1997-04-24 Rolf Marvin B|e Lindgren: Re: Word RTF -> SGML +25. 1997-04-26 William Hill: Re: RTF to SGML +26. 1997-07-24 Christian Tismer tismer@appliedbiometrics.com: [STRING-SIG] RTF +27. 1999-04-21 bruffaerts@my-dejanews.com: Re: LOOKING FOR a rtf 2 htm 'batch' +28. 1999-04-25 marduk@manson.ddns.org: Re: LOOKING FOR a rtf 2 htm 'batch' conv +29. 1999-04-26 liu singloon: Re: LOOKING FOR a rtf 2 htm 'batch' converter +30. 3900-02-15 Chris.Smith@raytheon.co.uk: Re: [SLE] Rich Text Format Editor? +31. 3900-02-15 Jon Pennington: Re: [SLE] Rich Text Format Editor? +32. 3900-02-15 Lenz Grimmer: Re: [SLE] Rich Text Format Editor? +33. 3900-02-15 Rafael E. Herrera: Re: [SLE] Rich Text Format Editor? +34. 3900-02-15 Andrei Mircea: Re: [SLE] Rich Text Format Editor? +35. 3900-03-23 Tres Seaver: Re: advice needed on processing rtf files +36. 3900-02-03 Linus Walleij: RTF for Recode +37. 3900-02-04 François Pinard: Re: RTF for Recode +38. 3900-02-04 Linus Walleij: Re: RTF for Recode +39. 3900-05-25 Lenz Grimmer: Re: [SLE] rtf +40. 1999-06-11 Kay Hayen: RTF backend degraded in V2? +41. 3900-06-28 François Pinard: Re: RTF for Recode +42. 3900-06-28 François Pinard: Re: RTF for Recode + +../trees/rmail/rtf-exemples + 1. 1992-09-25 develop!nextmime@ebony@sblab.att.com: More richtext questions/co + 2. 1997-09-15 Alain LaBont\i SCT: Re: Résolutions de la Plénière de l'ISO/CEI + 3. 1999-01-11 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Cours_de_f=E9vrier_= + 4. 1999-02-15 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Liste_des_cours_pour + 5. 1999-03-15 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Cours_d=27avril_=E0_ + 6. 1999-05-26 MORIN LOUISE-B. (formation): Correction nouveau Calendrier + 7. 1999-05-26 MORIN LOUISE-B. (formation): Nouveau Calendrier des stages de fo + 8. 1998-12-07 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Cours_de_janvier_199 + 9. 1999-08-12 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Cours_=E0_la_Soci=E9 +10. 1998-01-20 Bernard Mataigne: Programme de soutien a l'innovation du MEQ +11. 1998-08-10 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Cours_de_septembre_= +12. 1998-07-02 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Stages_de_la_GRICS_p +13. 1998-07-03 MORIN LOUISE-B. (formation): Calendrier des stages de formation +14. 3900-06-02 Erkki Kolehmainen: (TC304.2306) Liaison Report from CEN TC 304 t +15. 3900-06-28 SOUTHERN DIANA: =?iso-8859-1?Q?Lancement_de_concours_=3A__r=E9su + +../trees/rmail/structural + 1. 3900-02-23 Christopher Browne: Re: Cool things about Ruby on the way out of + 2. 1996-01-07 Brian Bartholomew: Initial brainstorm for emacs sql database bro + 3. 3900-02-07 François Pinard: Re: [Doc-SIG] Monty: A structured text syntax i + +../trees/rmail/texinfo + 1. 3900-03-03 François Pinard: Texinfo recodings + 2. 3900-06-16 Karl Heinz Marbaise: recode-3.5c: patch for Latin-1 => Texinfo ( + 3. 3900-06-28 François Pinard: Re: recode-3.5c: patch for Latin-1 => Texinfo ( + +../admin/usoft/RMAIL + 1. 1997-12-29 Wojciech Galazka: Re: DJGPP port of recode + 2. 1997-12-29 Eli Zaretskii: Re: DJGPP port of recode + 3. 1998-03-26 François Pinard: Re: find reco dos executable + 4. 1998-06-25 kotter@dei.unipd.it: recode for dos + 5. 1998-06-30 François Pinard: Re: recode for dos + 6. 1998-07-03 kotter@dei.unipd.it: Re: recode for dos + 7. 1994-04-13 Ulrich Windl: recode 3.3 + 8. 1997-09-30 Wojciech Galazka: Re: Question on GNU recode package + 9. 1998-01-12 François Pinard: Re: [recode] "failed (reversibility problem?)" ../asian/martin/RMAIL 1. 1998-12-18 Martin J. Duerst: Re: Prerelease: GNU recode 3.4i @@ -1547,6 +1703,21 @@ 20. 1999-12-22 Nguyen-Dai Quy: recode-3.5a 21. 1999-12-22 Nguyen-Dai Quy: recode-3.5a : VIQR..another_charset 22. 1999-12-22 Nguyen-Dai Quy: Re: =?iso-8859-1?Q?Probl=E8me?= VNI +23. 1999-12-25 Nguyen-Dai Quy: recode 3.5b : bug report +24. 1999-12-25 Nguyen-Dai Quy: [Fwd: Returned mail: User unknown] +25. 1999-12-26 Laurent Bourbeau: Re: =?iso-8859-1?q?Probl=E8me?= VNI +26. 1999-12-30 François Pinard: Re: recode 3.5b : bug report +27. 1999-12-30 Nguyen-Dai Quy: Re: recode 3.5b : bug report +28. 1999-12-30 François Pinard: Re: recode 3.5b : bug report +29. 3900-03-20 dangit@ix.netcom.com: Vietnamese Font for NT Emacs +30. 3900-03-21 Kenichi Handa: Re: Vietnamese Font for NT Emacs +31. 3900-03-21 Miyashita Hisashi (=?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpIS +32. 3900-03-20 dangit@ix.netcom.com: Re: Vietnamese Font for NT Emacs +33. 3900-03-20 dangit@ix.netcom.com: Vietnamese Font for NT Emacs +34. 3900-03-20 dangit@ix.netcom.com: Re: Vietnamese Font for NT Emacs +35. 3900-01-13 Nguyen-Dai Quy: Vietnam : un mois de salaire pour dix heures de +36. 3900-03-21 Kenichi Handa: Re: Vietnamese Font for NT Emacs +37. 3900-03-21 =?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpISU1J?=: Re: Vietname ../charsets/mule/RMAIL 1. 1993-08-12 Kenichi Handa: The official release of Mule Ver.1.0 (Patch Level @@ -1647,6 +1818,10 @@ 96. 1999-07-29 Kenichi Handa: shift to a new mailing list server. 97. 1999-07-29 Mito: Re: FAQ: UNICODE conversion support planned? 98. 1999-07-31 FUJITA Kazutoshi: Re: shift to a new mailing list server. +99. 3900-01-18 PILCH Hartmut: mule stuff +100. 3900-01-19 Miyashita Hisashi (=?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpI +101. 3900-01-19 PILCH Hartmut: Re: mule stuff +102. 3900-01-19 PILCH Hartmut: Re: mule stuff ../engines/abrahamsen/RMAIL 1. 1993-03-11 Per Abrahamsen: min-key.el: Keyboard Remapping and Character Set @@ -1661,54 +1836,11 @@ 3. 1993-02-10 Markus Kuhn: Re: transcription iso-8859-1 to us-ascii? 4. 1993-12-07 Markus Kuhn (CIP 90): Re: transcription iso-8859-1 to us-ascii? -../engines/translit/RMAIL - 1. 1993-03-18 Jan Labanowski: Translit --- transliterate foreign alphabets - 2. 1999-06-03 Han-Wen Nienhuys: Unidentified subject! - 3. 1999-06-03 Sigfrid Lundberg, Lub NetLab: Re: Unidentified subject! - ../engines/wilson/RMAIL 1. 1994-10-27 David E A Wilson: recode-3.3 2. 1994-10-28 David E A Wilson: Re: recode-3.3 3. 1994-10-28 David E A Wilson: charset program -../fallbacks/German/RMAIL - 1. 1994-01-09 Thorbjoern Hansen: Suggestions for `recode' - 2. 1994-01-11 Francois Pinard: Suggestions for `recode' - 3. 1994-01-12 Thorbjoern Hansen: Re: Suggestions for `recode' - 4. 1994-01-12 Francois Pinard: shar: diac.tar.gz - 5. 1994-01-12 Francois Pinard: Re: Suggestions for `recode' - 6. 1994-01-09 Thorbjoern Hansen: Suggestions for `recode' - 7. 1994-01-11 Francois Pinard: Suggestions for `recode' - 8. 1994-01-12 Thorbjoern Hansen: Re: Suggestions for `recode' - 9. 1994-01-12 Francois Pinard: Re: Suggestions for `recode' -10. 1994-09-28 gator@cs.tu-berlin.de: new charset for recode -11. 1994-09-30 Francois Pinard: Re: new charset for recode -12. 1994-10-01 gator@cs.tu-berlin.de: Re: new charset for recode -13. 1994-07-19 haible@ma2s2.mathematik.uni-karlsruhe.de: latex conversions in r -14. 1994-07-19 Francois Pinard: Re: latex conversions in recode-3.3 -15. 1994-07-19 haible@ma2s2.mathematik.uni-karlsruhe.de: Re: latex conversions -16. 1993-02-11 Markus Kuhn: Re: transcription iso-8859-1 to us-ascii? -17. 1994-12-04 Francois Pinard: Re: Prerelease: GNU recode 3.4.1 -18. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1 -19. 1994-12-04 Francois Pinard: Re: Prerelease: GNU recode 3.4.1 -20. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1 -21. 1995-01-21 Markus Kuhn: Re: Unicode Matters -22. 1995-05-09 Ulrich Drepper: Re: Volunteering for translations -23. 1995-05-10 Ulrich Drepper: Re: Volunteering for translations -24. 1995-05-10 François Pinard: Re: Volunteering for translations -25. 1995-06-07 Ulrich Drepper: something you might be interested in -26. 1995-06-06 François Pinard: Re: something you might be interested in -27. 1995-06-07 Ulrich Drepper: Re: something you might be interested in -28. 1995-06-07 François Pinard: Re: something you might be interested in -29. 1995-07-17 Juergen Weigert (Inf4 - hiwi): recode-3.4 extended 'flat' charac -30. 1995-07-25 François Pinard: Re: Patch for recode-3.4 -31. 1995-08-22 Ulrich Windl: Re: problem with recode 3 -32. 1995-08-22 François Pinard: Re: problem with recode 3 -33. 1995-05-07 François Pinard: Re: Volunteering for translations -34. 1995-05-08 Ulrich Drepper: Re: Volunteering for translations -35. 1995-05-08 Martin Husemann: Re: Volunteering for translations -36. 1995-05-08 François Pinard: Re: Volunteering for translations - ../surfaces/abe/RMAIL 1. 1991-01-17 Francois Pinard: abe and directories; dabe and Turbo-C 2. 1991-01-27 Brad Templeton: Re: abe part numbering @@ -1764,6 +1896,7 @@ ../charsets/cyrillic/rmail/documentation 1. 1999-06-08 Lukas Petrlik: recode 3.5 docs + 2. 3900-05-05 George Zeigler: Max ../charsets/cyrillic/rmail/emacs 1. 1997-08-21 Kenichi Handa: Re: input cyrillic @@ -1797,6 +1930,13 @@ ../charsets/cyrillic/rmail/latin5 1. 1997-12-28 François Pinard: Re: cyrillic support in recode - patch +../charsets/cyrillic/rmail/mule + 1. 3900-02-05 Vladimir Volovich: Re: Mule-UCS 0.71 (KITANOTENMANGU) release. + 2. 3900-02-05 Werner LEMBERG: Re: Mule-UCS 0.71 (KITANOTENMANGU) release. + 3. 3900-02-07 Vladimir Volovich: Re: Mule-UCS 0.71 (KITANOTENMANGU) release. + 4. 3900-02-11 Miyashita Hisashi (=?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpIS + 5. 3900-02-14 Werner LEMBERG: Re: Mule-UCS 0.71 (KITANOTENMANGU) release. + ../charsets/cyrillic/rmail/unified 1. 1997-12-05 Roman Czyborra: new Ukrainian KOI8 charsets 2. 1997-12-05 Keld J|rn Simonsen: Re: ISO-IR-111 Cyrillic wrong in RFC 1345 an @@ -1843,6 +1983,8 @@ 32. 1999-04-13 Karlsson Kent - keka: (TC304.2153) RE: (SC22WG20.2685) (SC22WG20 33. 1999-04-15 Konstantin Chuguev: (TC304.2154) (SC22WG20.2686) RE: (SC22WG20.2 34. 1996-10-13 Alexander L. Belikoff: Linux Cyrillic HOWTO (part 1/1) +35. 3900-02-14 Werner LEMBERG: Re: Mule-UCS 0.71 (KITANOTENMANGU) release. +36. 3900-03-18 George Zeigler: [SLE] CorelDraw cyrillic character set ../charsets/ucs/rmail/10646 1. 1996-03-15 Alain LaBont:e':: Impact of ISO/IEC 10646 on POSIX - Draft perso @@ -1853,6 +1995,7 @@ ../charsets/ucs/rmail/byte-order-mark 1. 1999-08-01 Marc Feeley: Unicode BOM + 2. 1999-08-01 Marc Feeley: Unicode BOM ../charsets/ucs/rmail/dns 1. 1999-07-07 Stuart Kwan: RE: skwan-utf8-dns (RE: (Almost final) Agenda for d @@ -1872,102 +2015,29 @@ 12. 1998-03-24 Alain LaBonté : Re: Erreurs de nomenclature dans Windows NT4 13. 1998-05-05 Alain LaBonté : Codage de la langue dans le jeu universel de car -../charsets/ucs/rmail/fontes - 1. 1997-10-28 Martin J. Dürst: Re: Mule -> NT - 2. 1995-06-05 Michael Everson: (i18n.265) Announcing Everson Mono 10646 - 3. 1995-12-14 Ulrich Drepper: Unicode mappings - 4. 1996-04-30 Yann Dirson: Re: recode: suggestion - 5. 1995-12-11 Ulrich Drepper: Re: check successful message - 6. 1998-09-29 Roman Czyborra: proposal for a GNU Unicode font - 7. 1998-09-30 Jungshik Shin: Re: proposal for a GNU Unicode font - 8. 1998-10-04 Primoz Peterlin: Re: proposal for a GNU Unicode font - 9. 1998-10-04 Markus Kuhn: Re: proposal for a GNU Unicode font -10. 1998-10-05 Primoz Peterlin: Re: proposal for a GNU Unicode font -11. 1998-10-02 Markus Kuhn: Re: proposal for a GNU Unicode font -12. 1998-10-03 Markus Kuhn: Re: proposal for a GNU Unicode font -13. 1998-10-06 Jungshik Shin: Re: proposal for a GNU Unicode font -14. 1998-10-07 Mark Leisher: Re: proposal for a GNU Unicode font -15. 1998-10-07 Jungshik Shin: Re: proposal for a GNU Unicode font -16. 1998-10-02 Mark Leisher: Clearly U BDF font update -17. 1998-10-05 James Matthew Farrow: Font editors... -18. 1997-11-24 Mark Leisher: Unicode BDF fonts available -19. 1998-11-24 François Pinard: Re: Free X11 Unicode terminal font available -20. 1997-06-14 mike@vlsivie.tuwien.ac.at: Finding Fonts for Internationalizatio -21. 1999-06-04 Martin J. Duerst: Re: UTF-8 table output -22. 1999-06-03 François Pinard: Re: UTF-8 table output -23. 1999-07-17 Markus Kuhn: Unicode fonts for X11 - ../charsets/ucs/rmail/français 1. 1996-05-11 Alain LaBont/e'/: Re: French names for 10646 2. 1996-10-24 Alain LaBont/e'/: Quelques adresses pour les références à mes tr 3. 1998-04-29 Alain LaBonté : Use of the Glyphs associated to the Unicode char 4. 1998-09-17 Alain LaBonté : Character identifiers, names and mnemonicity -- 5. 1998-12-17 François Pinard: Tables française pour les noms JUC - -../charsets/ucs/rmail/html - 1. 1995-12-21 Francois Yergeau: RFC sur l'i18n de HTML - 2. 1996-05-30 Alain LaBont/e'/: Internationalisation de HTML - 3. 1995-03-29 alb@riq.qc.ca: http://www.echo.lu/other/norm - 4. 1994-10-08 Gary Houston: Re: multilingual HTML, SGML documents - 5. 1997-04-25 Henry Churchyard: Re: ’ valid HTML or no? - 6. 1997-04-30 Henry Churchyard: Re: ’ valid HTML or no? - 7. 1997-04-30 Paul Eggert: Re: ’ valid HTML or no? - 8. 1997-04-27 Tall Ethnic Person: Re: ’ valid HTML or no? - 9. 1997-04-27 Markus Kuhn: Re: ’ valid HTML or no? -10. 1999-04-09 Pierre Laplante: Re: =?iso-8859-1?Q?param=E8tres?= avec script c - -../charsets/ucs/rmail/libutf8 - 1. 1999-07-30 Jim Meyering: Re: [François Pinard ] Re - 2. 1999-07-30 François Pinard: Re: UTF-8 - 3. 1999-07-30 Bruno Haible: Re: [François Pinard ] R - 4. 1999-07-30 Bruno Haible: Re: [=?iso-8859-1?q?Fran=E7ois?= Pinard Reuters format? 3. ---- -- -- C.Douglas O'Brien [SMTP:dobrien@idon.com]: RE: Necessity of a be + 4. 1998-12-22 Martin von Loewis martin@mira.isdn.cs.tu-berlin.de: [String-SIG] ../charsets/ucs/rmail/utf-32 1. 1999-04-07 Hart, Edwin F.: RE: UTF-32 ../charsets/ucs/rmail/utf-7 1. 1998-09-11 François Pinard: Re: "Coding system"? Eh? + 2. 3900-03-29 =?utf-7?Q?Kevin_Jackson?=: [SLE] =?utf-7?Q?RE=3A_+AFs-SLE+AF0-_G + 3. 3900-05-17 Z 3 Penguin: accesing socket at a lower level? ../charsets/ucs/rmail/utf-8 1. 1994-05-05 Martin J. Duerst: Re: What is status of internationalization of @@ -2060,15 +2188,20 @@ 21. 1999-02-09 François Pinard: Re: More charset things 22. 1999-02-09 Steinar Bang: Re: More charset things 23. 1999-02-14 Steinar Bang: UTF-8 (Was: More charset things) +24. 1999-12-15 Earl Hood: Re: postprocessing filter for archive files +25. 1999-12-06 ADEMIRNET@aol.com: =?ISO-8859-1?Q?Bulletin=20N=B014=20Ademirnet= +26. 1999-08-04 François Pinard: UTF-8 in GNU +27. 1999-07-09 Jungshik Shin: Re: X11 UTF-8 and Unicode support +28. 1998-12-21 Paul Prescod paul@prescod.net: [String-SIG] Implementing Unicode +29. 3900-03-31 ADEMIRNET@aol.com: =?ISO-8859-1?Q?Bulletin=20ademirnet=20N16=20= +30. 3900-03-31 ADEMIRNET@aol.com: =?ISO-8859-1?Q?Bulletin=20ademirnet=20N16=20= +31. 3900-04-26 Karl EICHWALDER: Re: UTF-8 +32. 3900-05-03 ADEMIRNET@aol.com: =?ISO-8859-1?Q?Bulletin=20Ademirnet=20N=B017= +33. 3900-05-12 Fredrik Lundh: Re: Convert Latin-1 to UTF-8 ../charsets/ucs/rmail/utf-mnemonics 1. 1998-07-18 Markus Kuhn: (TC304.1872) German reaction to Enquiry among membe -../charsets/ucs/rmail/voir-web - 1. 1996-10-28 unicode@Unicode.ORG: Repertoires of European Letters: Draft Four - 2. 1997-01-09 Michael Everson: (none) - 3. 1999-02-15 umavs@ca.ibm.com: FYI: Draft Irish comments on JTC1 N5698 - ../charsets/ucs/rmail/xterm 1. 1995-11-22 Gary Capell: Unicode/UTF text editor: wily 0.9.8 (beta) 2. 1996-06-07 Arnold D. Robbins: Re: terminal emulator recommendation? diff --git a/COPYING b/COPYING index eeb586b..d60c31a 100644 --- a/COPYING +++ b/COPYING @@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - Copyright (C) 19yy + Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision version 69, Copyright (C) year name of author Gnomovision 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. diff --git a/COPYING-LIB b/COPYING-LIB index bbe3fe1..43d4870 100644 --- a/COPYING-LIB +++ b/COPYING-LIB @@ -1,112 +1,129 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - Copyright (C) 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. -[This is the first released version of the library GPL. It is - numbered 2 because it goes with version 2 of the ordinary GPL.] +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] - Preamble + Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. - This license, the Library General Public License, applies to some -specially designated Free Software Foundation software, and to any -other libraries whose authors decide to use it. You can use it for -your libraries, 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 -this service 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. + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations +below. + + When we speak of free software, we are referring to freedom of use, +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 this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if -you distribute copies of the library, or if you modify it. +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source -code. If you link a program with the library, you must provide -complete object files to the recipients so that they can relink them -with the library, after making changes to the library and recompiling +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. - Our method of protecting your rights has two steps: (1) copyright -the library, and (2) offer you this license which gives you legal + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. - Also, for each distributor's protection, we want to make certain -that everyone understands that there is no warranty for this free -library. If the library is modified by someone else and passed on, we -want its recipients to know that what they have is not the original -version, so that any problems introduced by others will not reflect on -the original authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that companies distributing free -software will individually obtain patent licenses, thus in effect -transforming the program into proprietary software. To prevent this, -we have made it clear that any patent must be licensed for everyone's -free use or not licensed at all. - - Most GNU software, including some libraries, is covered by the ordinary -GNU General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary -one; be sure to read it in full, and don't assume that anything in it is -the same as in the ordinary license. - - The reason we have a separate public license for some libraries is that -they blur the distinction we usually make between modifying or adding to a -program and simply using it. Linking a program with a library, without -changing the library, is in some sense simply using the library, and is -analogous to running a utility program or application program. However, in -a textual and legal sense, the linked executable is a combined work, a -derivative of the original library, and the ordinary General Public License -treats it as such. - - Because of this blurred distinction, using the ordinary General -Public License for libraries did not effectively promote software -sharing, because most developers did not use the libraries. We -concluded that weaker conditions might promote sharing better. - - However, unrestricted linking of non-free programs would deprive the -users of those programs of all benefit from the free status of the -libraries themselves. This Library General Public License is intended to -permit developers of non-free programs to use free libraries, while -preserving your freedom as a user of such programs to change the free -libraries that are incorporated in them. (We have not seen how to achieve -this as regards changes in header files, but we have achieved it as regards -changes in the actual functions of the Library.) The hope is that this -will lead to faster development of free libraries. + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. +^L + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it +becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The -former contains code derived from the library, while the latter only -works together with the library. - - Note that it is possible for a library to be covered by the ordinary -General Public License rather than by this special one. - - GNU LIBRARY GENERAL PUBLIC LICENSE +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. +^L + GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - 0. This License Agreement applies to any software library which -contains a notice placed by the copyright holder or other authorized -party saying it may be distributed under the terms of this Library -General Public License (also called "this License"). Each licensee is -addressed as "you". + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs @@ -123,7 +140,8 @@ included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation +interface definition files, plus the scripts used to control +compilation and installation of the library. Activities other than copying, distribution and modification are not @@ -203,7 +221,7 @@ instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. - +^L Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. @@ -254,8 +272,8 @@ Library will still fall under Section 6.) distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also compile or +^L + 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit @@ -282,23 +300,31 @@ of these things: Library will not necessarily be able to recompile the application to use the modified definitions.) - b) Accompany the work with a written offer, valid for at + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. - c) If distribution of the work is made by offering access to copy + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. - d) Verify that the user has already received a copy of these + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, -the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. @@ -308,7 +334,7 @@ restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. - +^L 7. 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 not covered by this License, and distribute such a combined @@ -347,9 +373,9 @@ Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to +You are not responsible for enforcing compliance by third parties with this License. - +^L 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or @@ -363,9 +389,10 @@ all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply, and the section as a whole is intended to apply in other +circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any @@ -383,14 +410,14 @@ be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. +original copyright holder who places the Library under this License +may add an explicit geographical distribution limitation excluding those +countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new -versions of the Library General Public License from time to time. +versions of the 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. @@ -401,7 +428,7 @@ conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. - +^L 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is @@ -411,7 +438,7 @@ decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. - NO WARRANTY + NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. @@ -434,46 +461,51 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Libraries + END OF TERMS AND CONDITIONS +^L + How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). +redistribution under these terms (or, alternatively, under the terms +of the ordinary General Public License). + + To apply these terms, attach the following notices to the library. +It is safest to attach them to the start of each source file to most +effectively convey the exclusion of warranty; and each file should +have at least the "copyright" line and a pointer to where the full +notice is found. - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - + Copyright (C) This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + 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. + version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -Also add information on how to contact you by electronic and paper mail. +Also add information on how to contact you by electronic and paper +mail. -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: +You should also get your employer (if you work as a programmer) or +your school, if any, to sign a "copyright disclaimer" for the library, +if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. + library `Frob' (a library for tweaking knobs) written by James + Random Hacker. , 1 April 1990 Ty Coon, President of Vice diff --git a/ChangeLog b/ChangeLog index 62c09ed..c4fcb78 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,42 @@ +2000-06-28 François Pinard + + * Makefile.am (POTFILES): Rename debug.c to testdump.c. + +2000-06-27 François Pinard + + * configure.in: Check for struct utimbuf. + Reported by Jim Meyering and Tom Hageman. + + * configure.in: Use ad_AC_PROG_FLEX instead of AM_PROG_LEX. + Reported by Akim Demaille. + +2000-05-07 François Pinard + + * PATCHES-AC: New for Autoconf 2.14a. + * Makefile.am (EXTRA_DIST): Adjusted. + +2000-04-25 François Pinard + + * acconfig.h: Remove LIBICONV_PLUG. + Reported by Bruno Haible. + +2000-03-28 François Pinard + + * recode.spec: New file. + * Makefile.am (EXTRA_DIST): Adjusted. + +2000-03-21 François Pinard + + * acconfig.h: Define LIBICONV_PLUG. + +2000-01-28 François Pinard + + * Makefile.am (install-stow): New goal. + +2000-01-27 François Pinard + + * configure.in (ALL_LINGUAS): Add gl. + 1999-12-28 François Pinard * configure.in: Remove --with-libiconv test. @@ -7,7 +46,7 @@ 1999-12-24 François Pinard * configure.in: Version 3.5c. - + 1999-12-20 François Pinard * configure.in: Version 3.5b. diff --git a/Makefile.am b/Makefile.am index b88f53d..210d78d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,5 @@ # Main Makefile for GNU recode. -# Copyright © 1992, 93, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc. +# Copyright © 1992,93,94,95,96,97,98,99,00 Free Software Foundation, Inc. # François Pinard , 1992. # This program is free software; you can redistribute it and/or modify @@ -21,13 +21,20 @@ AUTOMAKE_OPTIONS = gnits ACLOCAL_AMFLAGS = -I m4 BABYL = ../rmail/* ../*/rmail/* ../*/*/RMAIL ../*/*/rmail/* -EXTRA_DIST = rebox.el COPYING-LIB +EXTRA_DIST = COPYING-LIB PATCHES-AC rebox.el recode.spec SUBDIRS = m4 doc lib libiconv i18n src tests contrib -POTFILES = src/debug.c src/main.c src/names.c src/outer.c src/recode.c \ -src/request.c src/strip-data.c src/task.c +POTFILES = src/main.c src/names.c src/outer.c src/recode.c \ +src/request.c src/strip-data.c src/task.c src/testdump.c all-local: $(srcdir)/stamp-pot $(srcdir)/stamp-pot: $(POTFILES) @echo "$(POTFILES)" > $@ + +install-stow: + $(MAKE) install \ + prefix=$(exec_prefix)/stow/$(PACKAGE)-$(VERSION) \ + exec_prefix=$(exec_prefix)/stow/$(PACKAGE)-$(VERSION) + rm -f $(exec_prefix)/stow/$(PACKAGE)-$(VERSION)/info/dir + cd $(exec_prefix)/stow && stow $(PACKAGE)-$(VERSION) diff --git a/Makefile.in b/Makefile.in index d0a71e7..b3fdb9d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -11,7 +11,7 @@ # PARTICULAR PURPOSE. # Main Makefile for GNU recode. -# Copyright © 1992, 93, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc. +# Copyright © 1992,93,94,95,96,97,98,99,00 Free Software Foundation, Inc. # François Pinard , 1992. # This program is free software; you can redistribute it and/or modify @@ -83,53 +83,34 @@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ CC = @CC@ CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ LEX = @LEX@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ MOFILES = @MOFILES@ -MSGFMT = @MSGFMT@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ RANLIB = @RANLIB@ U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ VERSION = @VERSION@ -l = @l@ AUTOMAKE_OPTIONS = gnits ACLOCAL_AMFLAGS = -I m4 BABYL = ../rmail/* ../*/rmail/* ../*/*/RMAIL ../*/*/rmail/* -EXTRA_DIST = rebox.el COPYING-LIB +EXTRA_DIST = COPYING-LIB PATCHES-AC rebox.el recode.spec SUBDIRS = m4 doc lib libiconv i18n src tests contrib -POTFILES = src/debug.c src/main.c src/names.c src/outer.c src/recode.c src/request.c src/strip-data.c src/task.c +POTFILES = src/main.c src/names.c src/outer.c src/recode.c src/request.c src/strip-data.c src/task.c src/testdump.c ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -155,8 +136,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status -$(ACLOCAL_M4): configure.in acinclude.m4 m4/atconfig.m4 m4/gettext.m4 \ - m4/malloc.m4 m4/microsoft.m4 m4/realloc.m4 +$(ACLOCAL_M4): configure.in acinclude.m4 m4/atconfig.m4 m4/flex.m4 \ + m4/gettext.m4 m4/lcmessage.m4 m4/malloc.m4 \ + m4/microsoft.m4 m4/realloc.m4 m4/utimbuf.m4 cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -424,6 +406,13 @@ all-local: $(srcdir)/stamp-pot $(srcdir)/stamp-pot: $(POTFILES) @echo "$(POTFILES)" > $@ +install-stow: + $(MAKE) install \ + prefix=$(exec_prefix)/stow/$(PACKAGE)-$(VERSION) \ + exec_prefix=$(exec_prefix)/stow/$(PACKAGE)-$(VERSION) + rm -f $(exec_prefix)/stow/$(PACKAGE)-$(VERSION)/info/dir + cd $(exec_prefix)/stow && stow $(PACKAGE)-$(VERSION) + # 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 index 9cc778a..444d304 100644 --- a/NEWS +++ b/NEWS @@ -1,35 +1,37 @@ Free recode NEWS - User visible changes. -*- outline -*- (allout) -Copyright © 1993, 1994, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +Copyright © 1993, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. -* Version 3.5c - François Pinard, 1999-12. +* Version 3.5d - François Pinard, 2000-03. .* General changes . + The Texinfo manual is now indexed, by charset, by concept, etc. -. + Program messages are also available in Greek and Italian. +. + Program messages are also available in Greek, Gallicean and Italian. . + Bruno Haible's nice portable iconv library has been integrated. +. + RFC 1345 tables and French character names have been updated. +. + The Texinfo charset has been refreshed, and made reversible. -.* New charsets (most from libiconv) +.* New charsets (most from libiconv) [list to be revised] . + Japanese - EUC-JP (CSEUCPKDFMTJAPANESE, - EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE); - ISO-2022-JP (CSISO2022JP); ISO-2022-JP-1; ISO-2022-JP-2 (CSISO2022JP2); - JIS_X0201 (CSHALFWIDTHKATAKANA, JISX0201-1976, JISX0201.1976-0, X0201); + EUC-JP (csEUCPkdFmtJapanese, + Extended_UNIX_Code_Packed_Format_for_Japanese); + ISO-2022-JP (csISO2022JP); ISO-2022-JP-1; ISO-2022-JP-2 (csISO2022JP2); + JIS_X0201 (csHalfWidthKatakana, JISX0201-1976, JISX0201.1976-0, X0201); JIS_X0208 (JIS0208, JIS_X0208.1983-0, JIS_X0208-1983, JIS_X0208-1990, JIS_X0208.1983-1); - JIS_X0212 (CSISO159JISX02121990, ISO-IR-159, JIS_X0212.1990-0, + JIS_X0212 (csISO159JISX02121990, ISO-IR-159, JIS_X0212.1990-0, JIS_X0212-1990, X0212); - SJIS (CSSHIFTJIS, MS_KANJI, SHIFT-JIS). + SJIS (csShiftJIS, MS_KANJI, SHIFT-JIS). . + Chinese - BIG5 (BIG-5, BIG-FIVE, BIGFIVE, CSBIG5); - EUC-CN (CSGB2312, EUCCN, GB2312); EUC-TW (CSEUCTW, EUCTW); - HZ (HZ-GB-2312); ISO-2022-CN (CSISO2022CN); ISO-2022-CN-EXT. + BIG5 (BIG-5, BIG-FIVE, BIGFIVE, csBig5); + EUC-CN (csGB2312, EUCCN, GB2312); EUC-TW (csEUCTW, EUCTW); + HZ (HZ-GB-2312); ISO-2022-CN (csISO2022CN); ISO-2022-CN-EXT. . + Korean - JOHAB (CP1361); EUC-KR (CSEUCKR, EUCKR); GBK (CP936); - ISO-2022-KR (CSISO2022KR); - KSC_5601 (CP949, CSKSC56011987, ISO-IR-149, KOREAN, KSC5601.1987-0, + JOHAB (CP1361); EUC-KR (csEUCKR, EUCKR); GBK (CP936); + ISO-2022-KR (csISO2022KR); + KSC_5601 (CP949, csKSC56011987, ISO-IR-149, KOREAN, KSC5601.1987-0, KS_C_5601-1987, KS_C_5601-1989). . + Vietnamese (independently of libiconv) @@ -46,28 +48,29 @@ Copyright MacHebrew; MacIceland; MacRomania; MacThai; MacTurkish; MacUkraine . + Unicode - JAVA; UCS-2-BE (UNICODEBIG); UCS-2-INTERNAL; UCS-2-LE (UNICODELITTLE); - UCS-2-SWAPPED; UCS-4-BE; UCS-4-INTERNAL; UCS-4-LE; UCS-4-SWAPPED + JAVA; UCS-2-BE (csUnicode11, UNICODE-1-1, UnicodeBIG); UCS-2-INTERNAL; + UCS-2-LE (UnicodeLITTLE); UCS-2-SWAPPED; UCS-4-BE; UCS-4-INTERNAL; + UCS-4-LE; UCS-4-SWAPPED; UCS-2BE; UCS-2LE; UCS-4BE; UCS-4LE. . + Others - CP932; CP950; CP866 (866, CSIBM866, IBM866). + CP932; CP950; CP866 (866, csIBM866, IBM866). . + Recode internal :libiconv: (:) [so option -x: avoids going through libiconv] -.* New aliases (from libiconv) - CSASCII (for ANSI_X3.4-1968); CSHPROMAN8 (for hp-roman8); - CSISOLATIN1 (for ISO-8859-1); CSISOLATIN2 (for ISO-8859-2); - CSISOLATIN3 (for ISO-8859-3); CSISOLATIN4 (for ISO-8859-4); - CSISOLATIN5 (for ISO-8859-9); - CSISOLATIN6 and ISO_8859-10:1992 (for ISO-8859-10); - CSISOLATINARABIC (for ISO-8859-6); CSISOLATINCYRILLIC (for ISO-8859-5); - CSISOLATINGREEK (for ISO-8859-7); CSISOLATINHEBREW (for ISO-8859-8); - CSKOI8R (for KOI8-R); CSPC850MULTILINGUAL (for IBM850); - CSUCS4 (for ISO-10646-UCS-4); CSUNICODE (for ISO-10646-UCS-2); - CSUNICODE11UTF7 (for UNICODE-1-1-UTF-7); - CSVISCII and VISCII1.1-1 (for VISCII); - ISO-IR-179 (for ISO-8859-13); MACROMAN (for macintosh); +.* New aliases (from libiconv) [list to be revised] + csASCII (for ANSI_X3.4-1968); csHPRoman8 (for hp-roman8); + csISOLatin1 (for ISO-8859-1); csISOLatin2 (for ISO-8859-2); + csISOLatin3 (for ISO-8859-3); csISOLatin4 (for ISO-8859-4); + csISOLatin5 (for ISO-8859-9); + csISOLatin6 and ISO_8859-10:1992 (for ISO-8859-10); + csISOLatinArabic (for ISO-8859-6); csISOLatinCyrillic (for ISO-8859-5); + csISOLatinGreek (for ISO-8859-7); csISOLatinHebrew (for ISO-8859-8); + csKOI8R (for KOI8-R); csPC850Multilingual (for IBM850); + csUCS4 (for ISO-10646-UCS-4); csUnicode (for ISO-10646-UCS-2); + csUnicode11UTF7 (for UNICODE-1-1-UTF-7); + csVISCII and VISCII1.1-1 (for VISCII); + ISO-IR-179 (for ISO-8859-13); csMacintosh and MacRoman (for macintosh); TCVN5712-1, TCVN5712-1:1993 and TCVN-5712 (for TCVN). * Version 3.5 - François Pinard, 1999-05. diff --git a/PATCHES-AC b/PATCHES-AC new file mode 100644 index 0000000..4285ab5 --- /dev/null +++ b/PATCHES-AC @@ -0,0 +1,126 @@ +--- acgeneral.m4 2000/05/07 12:55:24 1.1 ++++ acgeneral.m4 2000/05/07 13:34:20 +@@ -1085,6 +1085,9 @@ + esac + done + ++# Support of DJGPP port of bash. ++if test -n "$COMSPEC$ComSpec"; then ac_x=-x; else ac_x=-f; fi ++ + # NLS nuisances. + # Only set these to C if already set. These must not be set unconditionally + # because not all systems understand e.g. LANG=C (notably SCO). +@@ -1735,7 +1738,7 @@ + # | => \`active' + # | _AC_SH_QUOTE([\`active']) + # | => \`active' +-# | error-->c.in:8: warning: backquotes should not be backslashed\ ++# | error-->c.in:8: WARNING: backquotes should not be backslashed\ + # ... in: \`active' + # + define(_AC_SH_QUOTE, +@@ -1787,7 +1790,7 @@ + + # AC_MSG_WARN(PROBLEM-DESCRIPTION) + define(AC_MSG_WARN, +-[_AC_ECHO([configure: warning: $1], 2)]) ++[_AC_ECHO([configure: WARNING: $1], 2)]) + + # AC_MSG_ERROR(ERROR-DESCRIPTION, [EXIT-STATUS]) + define(AC_MSG_ERROR, +@@ -2029,7 +2032,7 @@ + ac_dummy="ifelse([$5], , $PATH, [$5])" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/$ac_word; then ++ if test $ac_x $ac_dir/$ac_word; then + ifelse([$6], , , dnl + [ if test "[$ac_dir/$ac_word]" = "$6"; then + ac_prog_rejected=yes +@@ -2110,7 +2113,7 @@ + ac_dummy="ifelse([$4], , $PATH, [$4])" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_word"; then ++ if test $ac_x "$ac_dir/$ac_word"; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi +@@ -3693,7 +3696,7 @@ + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; +- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; ++ /* | ?:/*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; +@@ -3701,7 +3704,7 @@ + + ifdef([AC_PROVIDE_AC_PROG_INSTALL], + [[ case "$ac_given_INSTALL" in +- [/$]*) INSTALL="$ac_given_INSTALL" ;; ++ [/$]* | ?:/*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + ]])dnl +@@ -4009,7 +4012,7 @@ + + case "$srcdir" in + changequote(, )dnl +- [/$]*) ac_rel_source="$srcdir/$ac_source" ;; ++ [/$]* | ?:/*) ac_rel_source="$srcdir/$ac_source" ;; + changequote([, ])dnl + *) ac_rel_source="$ac_dots$srcdir/$ac_source" ;; + esac +@@ -4131,7 +4134,7 @@ + case "$srcdir" in + .) # No --srcdir option. We are building in place. + ac_sub_srcdir=$srcdir ;; +- /*) # Absolute path. ++ /* | ?:/*) # Absolute path. + ac_sub_srcdir=$srcdir/$ac_config_dir ;; + *) # Relative path. + ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;; +@@ -4152,13 +4155,13 @@ + + # Make the cache file name correct relative to the subdirectory. + case "$cache_file" in +- /*) ac_sub_cache_file=$cache_file ;; ++ /* | ?:/*) ac_sub_cache_file=$cache_file ;; + *) # Relative path. + ac_sub_cache_file="$ac_dots$cache_file" ;; + esac + ifdef([AC_PROVIDE_AC_PROG_INSTALL], + [[ case "$ac_given_INSTALL" in +- [/$]*) INSTALL="$ac_given_INSTALL" ;; ++ [/$]* | ?:/*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + ]])dnl +--- acspecific.m4 2000/05/07 13:09:31 1.1 ++++ acspecific.m4 2000/05/07 13:54:44 +@@ -824,7 +824,7 @@ + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do +- if test -f $ac_dir/$ac_prog; then ++ if test $ac_x $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. +@@ -834,8 +834,14 @@ + # program-specific install script used by HP pwplus--don't use. + : + else ++ if test $ac_prog = installbsd && ++ grep src/bos $ac_dir/$ac_prog >/dev/null 2>&1; then ++ # AIX installbsd doesn't work without option "-g". ++ : ++ else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 ++ fi + fi + fi + done diff --git a/README b/README index 0fbf7c2..4de18b4 100644 --- a/README +++ b/README @@ -1,13 +1,13 @@ * README file for `recode' allout -*- outline -*- - Here is version 3.5c for the Free `recode' program and library. Glance + Here is version 3.5d for the Free `recode' program and library. Glance through this `README' file before starting configuration. Make sure you read files `ABOUT-NLS' and `INSTALL' if you are not familiar with them already. The canonical distribution point for this version is: - http://www.iro.umontreal.ca/contrib/recode/recode-3.5c.tar.gz + http://www.iro.umontreal.ca/contrib/recode/recode-3.5d.tar.gz yet the second URL (the FTP one) might disappear one day. GNU mirrors usually hold a copy of non-pretest releases, the canonical distribution @@ -21,13 +21,14 @@ . + Presentation The `recode' library converts files between character sets and usages. - The library recognises or produces nearly 150 different character sets - and is able to transliterate files between almost any pair. When exact - transliteration are not possible, it may get rid of the offending - characters or fall back on approximations. Most RFC 1345 character sets - are supported. The `recode' program is a handy front-end to the library. - - The `recode' program and library have been written by François Pinard. + It recognises or produces more than 300 different character sets and + transliterates files between almost any pair. When exact transliteration + are not possible, it gets rid of offending characters or fall back + on approximations. The `recode' program is a handy front-end to + the library. + + The `recode' program and library have been written by François Pinard, + yet it significantly reuses works from Keld Simonsen and Bruno Haible. It is an evolving package, and specifications might change in future releases. Option `-f' is now fairly implemented, yet not fully. @@ -68,11 +69,11 @@ For comprehensive modifications to `recode', you might need tools beyond those used in simple installations. If not done already, get: - autoconf ftp://ftp.gnu.org/pub/gnu/autoconf/autoconf-2.13.tar.gz + autoconf ftp://ftp.enst.fr/pub/unix/a2ps/autoconf-2.14a.tar.gz automake ftp://sourceware.cygnus.com/pub/automake/automake-1.4.tar.gz flex ftp://ftp.gnu.org/pub/gnu/flex/flex-2.5.4a.tar.gz gettext ftp://ftp.cygnus.com/pub/home/drepper/gettext-0.10.35.tar.gz - help2man http://www.ozemail.com.au/~bod/help2man-1.019.tar.gz + help2man http://www.ozemail.com.au/~bod/help2man-1.020.tar.gz libtool http://www.oranda.demon.co.uk/dist/libtool-1.3.4.tar.gz m4 ftp://ftp.seindal.dk/pub/rene/gnu/m4-1.4n.tar.gz perl ftp://ftp.gnu.org/pub/gnu/perl/perl-5.005.03.tar.gz @@ -80,7 +81,8 @@ tar ftp://ftp.gnu.org/pub/gnu/tar/tar-1.12.tar.gz Make sure GNU `m4' is fully installed before you start installing - Autoconf. Have Perl installed before Automake and `help2man'. + Autoconf. Apply `PATCHES-AC' to Autoconf before installing it. + Have Perl installed before Automake and `help2man'. Python 1.5 and Flex 2.5, or better, are needed for remaking `merged.c', after you modify or add an `.l' source file. @@ -98,10 +100,10 @@ subscribe recode-forum - Look into `http://www.iro.umontreal.ca/contrib/recode' for various - releases, pretests, and related files. In particular, subdirectory - `dist/' contains a weekly mirror of the current unpackaged work files, - while subdirectory `rmail/' contains saved or pending correspondence. + Look into `http://www.iro.umontreal.ca/contrib/recode for various + releases, pretests, and related files. In particular, button `Browse' + gives access to a weekly mirror of the current unpackaged work files, + while button `Folders' gives access to saved or pending correspondence. Please do _not_ widely redistribute releases having a letter after the version numbers, as these are meant for pretesting only, and might diff --git a/README-alpha b/README-alpha index bb4dda0..a4171c6 100644 --- a/README-alpha +++ b/README-alpha @@ -1,11 +1,12 @@ A new pretest for the `recode' program and library is now available as: - http://www.iro.umontreal.ca/contrib/recode/recode-3.5c.tar.gz + http://www.iro.umontreal.ca/contrib/recode/recode-3.5d.tar.gz -This is beta status software. You are invited to use the mailing list -mailto:recode-forum@iro.umontreal.ca, but you could also write to me either -at mailto:recode-bugs@iro.umontreal.ca or mailto:pinard@iro.umontreal.ca. +This pretest release is a snapshot to help testing `libiconv' matters. +Many matters are pending yet, to my knowledge, none is critical. I might +process a few more, not much, with the goal of freezing features at the +next pretest, and then prepare a real release if all goes well enough. -The `libiconv' library, from Bruno Haible, has been integrated within -`recode', it is not necessary to pre-install it anymore. Please read the -`libiconv' node in the Texinfo manual before testing. +Use mailto:recode-bugs@iro.umontreal.ca to report problems, or +mailto:recode-forum@iro.umontreal.ca for a discussion mailing list. +You need to subscribe first, see the `README' file to find how. diff --git a/THANKS b/THANKS index 70b9468..c8af87d 100644 --- a/THANKS +++ b/THANKS @@ -1,11 +1,11 @@ -Free recode has originally been written by Frangois Pinard. Other people +Free recode has originally been written by François Pinard. Other people contributed to Free recode by reporting problems, suggesting various improvements or submitting actual code. Here is a list of these people. Help me keeping it complete and exempt of errors. See various ChangeLogs for a detailed description of contributions. Akim Demaille demaille@inf.enst.fr -Alain Labonti alb@riq.qc.ca +Alain Labonté alb@riq.qc.ca Alain Magloire alainm@macs.ee.mcgill.ca Alan J. Flavell flavell@a5.ph.gla.ac.uk Alexander L. Belikoff abel@vallinor4.com @@ -57,14 +57,15 @@ Erwan Mas erwanmas@chez.com http://www.chez.com/erwanmas/ Farzad Farid Florian Oelmaier 100265.2501@compuserve.com -Frangois Pinard pinard@iro.umontreal.ca +François Pinard pinard@iro.umontreal.ca http://www.iro.umontreal.ca/~pinard -Frangois Robitaille -Frangois Yergeau yergeau@alis.com +François Robitaille +François Yergeau yergeau@alis.com http://www.alis.com/~yergeau/ -Frangoise Audebrand audebran@ere.umontreal.ca +Francois-Xavier Bergot bergotfx@com.enst.fr +Françoise Audebrand audebran@ere.umontreal.ca Frederic Albrecht -Frhre Roy roy@taize.fr +Frère Roy roy@taize.fr http://www.taize.fr Gabriel P. Silva gpsilva@geocities.com http://www.nce.ufrj.br/~gabriel @@ -90,7 +91,7 @@ Jim Meyering meyering@na-net.ornl.gov Joelle Stemp John van Krieken John.van.Krieken@ATComputing.nl http://www.ATComputing.nl/images/pasfotos/john.jpg -Jvrg Hvhle Joerg.Hoehle@gmd.de +Jörg Höhle Joerg.Hoehle@gmd.de http://fit.gmd.de/~hoehle/ Jose Joao Almeida jj@di.uminho.pt http://www.di.uminho.pt/~jj @@ -100,12 +101,12 @@ Juergen Zeller zet@rupert.franken.de Kai Uwe Rommel Karl Berry karl@cs.umb.edu http://www.cs.umb.edu/~karl/ -Keld Jxrn Simonsen keld@dkuug.dk +Keld Jørn Simonsen keld@dkuug.dk Kester Habermann kester@unix-ag.uni-kl.de http://www.unix-ag.uni-kl.de/~kester/ Kevin Stuckless kevins@stuck.warped.com http://stuck.warped.com/~kevins -Kristian K.AŽöhntopp kk@netuse.de +Kristian Köhntopp kk@netuse.de Laurent Bourbeau bourbeau@progiciels-bpi.ca Larry W. Virden lvirden@cas.org http://purl.org/net/lvirden/ @@ -120,7 +121,7 @@ Marc Verreault Mario Gay mgay@ti-edu.ch Markus Kuhn Markus.Kuhn@cl.cam.ac.uk http://www.cl.cam.ac.uk/~mgk25/ -Martin J. D|rst duerst@w3.org +Martin J. Dürst duerst@w3.org http://www.w3.org/People/D%C3%BCrst Martin Maechler maechler@stat.math.ethz.ch Martin Mares mj@ucw.cz @@ -136,15 +137,16 @@ Mikko Silvonen silvonen@iki.fi Nathanael Makarevitch Nathaniel Borenstein nsb@aa.fv.com Neal McBurnett http://bcn.boulder.co.us/~neal/ -NguyŽên-ŽÐai QuŽý daiquy.nguyen@ulg.ac.be - http://iris.rupt.ltas.ulg.ac.be/~quy +Nguyên-Ðai Quý daiquy.nguyen@ulg.ac.be Nicolas Anquetil Nicolas Thiery Nicolas.Thiery@jonas.univ-lyon1.fr http://www.lmd.univ-lyon1.fr/home/nthiery/ Niels Kr. Bech Jensen nkbj@image.dk http://www.image.dk/~nkbj/ +Olivier Lecarme Olivier.Lecarme@unice.fr Olivier Tharan olive@laria.u-picardie.fr http://www.laria.u-picardie.fr/~olive/ +Patrick Andries pandries@iti.qc.ca Pawel Krawczyk kravietz@ceti.pl http://ceti.pl/~kravietz/ Per Andersson perand@stacken.kth.se @@ -158,14 +160,15 @@ Pierre Gaumond gaumondp@ere.umontreal.ca Pierre Girard pierreg@crt.umontreal.ca Pierre Mathieu mathieu@geod.emr.ca Povl H. Pedersen pope@netguide.dk -Primo.B޾ Peterlin primoz.peterlin@biofiz.mf.uni-lj.si +Primo¾ Peterlin primoz.peterlin@biofiz.mf.uni-lj.si http://sizif.mf.uni-lj.si/~peterlin/ Rejean Payette rejean.payette@rtsq.qc.ca Ricard Torres torres@upf.es Richard Plasun plasun@iue.tuwien.ac.at Richard Stallman rms@gnu.org Robert Joop rj@rainbow.in-berlin.de -Roman Czyborra czyborra@cs.tu-berlin.de +Roman Czyborra roman@czyborra.com + http://czyborra.com/ Ronald C.F. Antony rcfa@cubiculum.com http://www.cubiculum.com/~rcfa Santiago Vila Doncel sanvila@unex.es @@ -193,7 +196,7 @@ Ulrich Windl Ulrich.Windl@rz.uni-regensburg.de http://www.uni-regensburg.de/Einrichtungen/Rechenzentrum/Orientierung/Mitarbeiter/windl.html Vern Paxson vern@ee.lbl.gov Vitor Duarte vad@di.fct.unl.pt -Walter M.AŽüller walt@pi4.informatik.uni-mannheim.de +Walter Müller walt@pi4.informatik.uni-mannheim.de Wiel Seuskens wiel@xs4all.nl http://www.xs4all.nl/~wiel/ Wilhelm Zadrapa wfz@aon.at diff --git a/TODO b/TODO index 654bccd..f488757 100644 --- a/TODO +++ b/TODO @@ -7,13 +7,16 @@ Significant contributions require written assignments and disclaimers. .* Before next official release +. + Update NEWS for latest libiconv and latest Keld tables. . + Remove TeX edition warnings, rephrase whatever required. . + Complete inter-node and menu references, as necessary. +. + Resolve THANKS, which Emacs does not save correctly. +. + Check with recent versions for Autoconf, Automake, Libtool. .* Particular notes . + Autoconf and DOSWIN -. + New RFC 1345 tables, still many diagnostics +. + New RFC 1345 tables, still some diagnostics . + Check notes from ORA . @ ~/libit/rmail/m4 . @ ~/libit/rmail/gettext diff --git a/acconfig.h b/acconfig.h index c60c4ee..97863dc 100644 --- a/acconfig.h +++ b/acconfig.h @@ -1,5 +1,5 @@ /* Special definitions for GNU recode, processed by autoheader. - Copyright © 1993, 1998, 1999 Free Software Foundation, Inc. + Copyright © 1993, 1998, 1999, 2000 Free Software Foundation, Inc. François Pinard , 1993. */ diff --git a/aclocal.m4 b/aclocal.m4 index 4851330..645e9a3 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -535,11 +535,12 @@ fi AC_SUBST($1)]) -# Single argument says where are built sources to test, relative to the -# built test directory. Maybe omitted if the same (flat distribution). +# The argument (often `../src') says where are the built sources to test, +# relative to the built test directory. Empty for a flat distribution, as +# `.' gets always added in front of the search path by the `atconfig' script. AC_DEFUN(AT_CONFIG, -[AT_TESTPATH=ifelse($1, , ., $1) +[AT_TESTPATH=$1 AC_SUBST(AT_TESTPATH) fp_PROG_ECHO ]) @@ -682,38 +683,75 @@ esac ]) -dnl AM_PROG_LEX -dnl Look for flex, lex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT -AC_DEFUN(AM_PROG_LEX, -[missing_dir=ifelse([$1],,`cd $ac_aux_dir && pwd`,$1) -AC_CHECK_PROGS(LEX, flex lex, "$missing_dir/missing flex") -AC_PROG_LEX -AC_DECL_YYTEXT]) +# serial 2 -#serial 1 +dnl ad_AC_PROG_FLEX +dnl Look for flex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT +AC_DEFUN(ad_AC_PROG_FLEX, +[AC_CHECK_PROGS(LEX, flex, missing) +if test "$LEX" = missing; then + LEX="\$(top_srcdir)/$ac_aux_dir/missing flex" + LEX_OUTPUT_ROOT=lex.yy + AC_SUBST(LEX_OUTPUT_ROOT)dnl +else + AC_PROG_LEX + AC_DECL_YYTEXT +fi]) + +#serial 2 + +dnl From Jim Meyering + +dnl Define HAVE_STRUCT_UTIMBUF if `struct utimbuf' is declared -- +dnl usually in . +dnl Some systems have utime.h but don't declare the struct anywhere. + +AC_DEFUN(jm_STRUCT_UTIMBUF, +[ + AC_CHECK_HEADERS(utime.h) + AC_REQUIRE([AC_HEADER_TIME]) + AC_CACHE_CHECK([for struct utimbuf], fu_cv_sys_struct_utimbuf, + [AC_TRY_COMPILE( + [ +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif +#ifdef HAVE_UTIME_H +# include +#endif + ], + [static struct utimbuf x; x.actime = x.modtime;], + fu_cv_sys_struct_utimbuf=yes, + fu_cv_sys_struct_utimbuf=no) + ]) + + if test $fu_cv_sys_struct_utimbuf = yes; then + AC_DEFINE_UNQUOTED(HAVE_STRUCT_UTIMBUF, 1, +[Define if struct utimbuf is declared -- usually in . + Some systems have utime.h but don't declare the struct anywhere. ]) + fi +]) + +#serial 3 dnl From Jim Meyering. dnl Determine whether malloc accepts 0 as its argument. dnl If it doesn't, arrange to use the replacement function. dnl -dnl If you use this macro in a package, you should -dnl add the following two lines to acconfig.h: -dnl /* Define to rpl_malloc if the replacement function should be used. */ -dnl #undef malloc -dnl AC_DEFUN(jm_FUNC_MALLOC, [ - if test x = y; then - dnl This code is deliberately never run via ./configure. - dnl FIXME: this is a gross hack to make autoheader put an entry - dnl for this symbol in config.h.in. - AC_CHECK_FUNCS(DONE_WORKING_MALLOC_CHECK) - fi dnl xmalloc.c requires that this symbol be defined so it doesn't dnl mistakenly use a broken malloc -- as it might if this test were omitted. - ac_kludge=HAVE_DONE_WORKING_MALLOC_CHECK - AC_DEFINE_UNQUOTED($ac_kludge) + AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_MALLOC_CHECK, 1, + [Define if the malloc check has been performed. ]) AC_CACHE_CHECK([for working malloc], jm_cv_func_working_malloc, [AC_TRY_RUN([ @@ -730,35 +768,26 @@ AC_DEFUN(jm_FUNC_MALLOC, jm_cv_func_working_malloc=no) ]) if test $jm_cv_func_working_malloc = no; then - LIBOBJS="$LIBOBJS malloc.o" - AC_DEFINE_UNQUOTED(malloc, rpl_malloc) + AC_SUBST(LIBOBJS) + LIBOBJS="$LIBOBJS malloc.$ac_objext" + AC_DEFINE_UNQUOTED(malloc, rpl_malloc, + [Define to rpl_malloc if the replacement function should be used.]) fi ]) -#serial 1 +#serial 3 dnl From Jim Meyering. dnl Determine whether realloc works when both arguments are 0. dnl If it doesn't, arrange to use the replacement function. dnl -dnl If you use this macro in a package, you should -dnl add the following two lines to acconfig.h: -dnl /* Define to rpl_realloc if the replacement function should be used. */ -dnl #undef realloc -dnl AC_DEFUN(jm_FUNC_REALLOC, [ - if test x = y; then - dnl This code is deliberately never run via ./configure. - dnl FIXME: this is a gross hack to make autoheader put an entry - dnl for this symbol in config.h.in. - AC_CHECK_FUNCS(DONE_WORKING_REALLOC_CHECK) - fi dnl xmalloc.c requires that this symbol be defined so it doesn't dnl mistakenly use a broken realloc -- as it might if this test were omitted. - ac_kludge=HAVE_DONE_WORKING_REALLOC_CHECK - AC_DEFINE_UNQUOTED($ac_kludge) + AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_REALLOC_CHECK, 1, + [Define if the realloc check has been performed. ]) AC_CACHE_CHECK([for working realloc], jm_cv_func_working_realloc, [AC_TRY_RUN([ @@ -775,8 +804,10 @@ AC_DEFUN(jm_FUNC_REALLOC, jm_cv_func_working_realloc=no) ]) if test $jm_cv_func_working_realloc = no; then - LIBOBJS="$LIBOBJS realloc.o" - AC_DEFINE_UNQUOTED(realloc, rpl_realloc) + AC_SUBST(LIBOBJS) + LIBOBJS="$LIBOBJS realloc.$ac_objext" + AC_DEFINE_UNQUOTED(realloc, rpl_realloc, + [Define to rpl_realloc if the replacement function should be used.]) fi ]) @@ -945,369 +976,18 @@ AC_DEFUN(fp_WITH_GETTEXT, [ fi fi]) -# Macro to add for using GNU gettext. -# Ulrich Drepper , 1995. -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU Public License -# but which still want to provide support for the GNU gettext functionality. -# Please note that the actual code is *not* freely available. - -# serial 5 - -AC_DEFUN(AM_WITH_NLS, - [AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE(nls, - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) - - USE_INCLUDED_LIBINTL=no - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - AC_DEFINE(ENABLE_NLS) - AC_MSG_CHECKING([whether included gettext is requested]) - AC_ARG_WITH(included-gettext, - [ --with-included-gettext use the GNU gettext library included here], - nls_cv_force_use_gnu_gettext=$withval, - nls_cv_force_use_gnu_gettext=no) - AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If gettext or catgets are available (in this order) we - dnl use this. Else we have to fall back to GNU NLS library. - dnl catgets is only used if permitted by option --with-catgets. - nls_cv_header_intl= - nls_cv_header_libgt= - CATOBJEXT=NONE - - AC_CHECK_HEADER(libintl.h, - [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc, - [AC_TRY_LINK([#include ], [return (int) gettext ("")], - gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)]) - - if test "$gt_cv_func_gettext_libc" != "yes"; then - AC_CHECK_LIB(intl, bindtextdomain, - [AC_CACHE_CHECK([for gettext in libintl], - gt_cv_func_gettext_libintl, - [AC_CHECK_LIB(intl, gettext, - gt_cv_func_gettext_libintl=yes, - gt_cv_func_gettext_libintl=no)], - gt_cv_func_gettext_libintl=no)]) - fi - - if test "$gt_cv_func_gettext_libc" = "yes" \ - || test "$gt_cv_func_gettext_libintl" = "yes"; then - AC_DEFINE(HAVE_GETTEXT) - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl - if test "$MSGFMT" != "no"; then - AC_CHECK_FUNCS(dcgettext) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) - AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; - return _nl_msg_cat_cntr], - [CATOBJEXT=.gmo - DATADIRNAME=share], - [CATOBJEXT=.mo - DATADIRNAME=lib]) - INSTOBJEXT=.mo - fi - fi - ]) - - if test "$CATOBJEXT" = "NONE"; then - AC_MSG_CHECKING([whether catgets can be used]) - AC_ARG_WITH(catgets, - [ --with-catgets use catgets functions if available], - nls_cv_use_catgets=$withval, nls_cv_use_catgets=no) - AC_MSG_RESULT($nls_cv_use_catgets) - - if test "$nls_cv_use_catgets" = "yes"; then - dnl No gettext in C library. Try catgets next. - AC_CHECK_LIB(i, main) - AC_CHECK_FUNC(catgets, - [AC_DEFINE(HAVE_CATGETS) - INTLOBJS="\$(CATOBJS)" - AC_PATH_PROG(GENCAT, gencat, no)dnl - if test "$GENCAT" != "no"; then - AC_PATH_PROG(GMSGFMT, gmsgfmt, no) - if test "$GMSGFMT" = "no"; then - AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no) - fi - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) - USE_INCLUDED_LIBINTL=yes - CATOBJEXT=.cat - INSTOBJEXT=.cat - DATADIRNAME=lib - INTLDEPS='$(top_builddir)/intl/libintl.a' - INTLLIBS=$INTLDEPS - LIBS=`echo $LIBS | sed -e 's/-lintl//'` - nls_cv_header_intl=intl/libintl.h - nls_cv_header_libgt=intl/libgettext.h - fi]) - fi - fi - - if test "$CATOBJEXT" = "NONE"; then - dnl Neither gettext nor catgets in included in the C library. - dnl Fall back on GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions used to generate GNU NLS library. - INTLOBJS="\$(GETTOBJS)" - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) - AC_SUBST(MSGFMT) - USE_INCLUDED_LIBINTL=yes - CATOBJEXT=.gmo - INSTOBJEXT=.mo - DATADIRNAME=share - INTLDEPS='$(top_builddir)/intl/libintl.a' - INTLLIBS=$INTLDEPS - LIBS=`echo $LIBS | sed -e 's/-lintl//'` - nls_cv_header_intl=intl/libintl.h - nls_cv_header_libgt=intl/libgettext.h - fi - - dnl Test whether we really found GNU xgettext. - if test "$XGETTEXT" != ":"; then - dnl If it is no GNU xgettext we define it as : so that the - dnl Makefiles still can work. - if $XGETTEXT --omit-header /dev/null 2> /dev/null; then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - fi - - # We need to process the po/ directory. - POSUB=po - else - DATADIRNAME=share - nls_cv_header_intl=intl/libintl.h - nls_cv_header_libgt=intl/libgettext.h - fi - AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl) - AC_OUTPUT_COMMANDS( - [case "$CONFIG_FILES" in *po/Makefile.in*) - sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile - esac]) - - - # If this is used in GNU gettext we have to set USE_NLS to `yes' - # because some of the sources are only built for this goal. - if test "$PACKAGE" = gettext; then - USE_NLS=yes - USE_INCLUDED_LIBINTL=yes - fi - - dnl These rules are solely for the distribution goal. While doing this - dnl we only have to keep exactly one list of the available catalogs - dnl in configure.in. - for lang in $ALL_LINGUAS; do - GMOFILES="$GMOFILES $lang.gmo" - POFILES="$POFILES $lang.po" - done - - dnl Make all variables we use known to autoconf. - AC_SUBST(USE_INCLUDED_LIBINTL) - AC_SUBST(CATALOGS) - AC_SUBST(CATOBJEXT) - AC_SUBST(DATADIRNAME) - AC_SUBST(GMOFILES) - AC_SUBST(INSTOBJEXT) - AC_SUBST(INTLDEPS) - AC_SUBST(INTLLIBS) - AC_SUBST(INTLOBJS) - AC_SUBST(POFILES) - AC_SUBST(POSUB) - ]) - -AC_DEFUN(AM_GNU_GETTEXT, - [AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_PROG_RANLIB])dnl - AC_REQUIRE([AC_ISC_POSIX])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_OFF_T])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - - AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \ -unistd.h sys/param.h]) - AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \ -strdup __argz_count __argz_stringify __argz_next]) - - if test "${ac_cv_func_stpcpy+set}" != "set"; then - AC_CHECK_FUNCS(stpcpy) - fi - if test "${ac_cv_func_stpcpy}" = "yes"; then - AC_DEFINE(HAVE_STPCPY) - fi - - AM_LC_MESSAGES - AM_WITH_NLS - - if test "x$CATOBJEXT" != "x"; then - if test "x$ALL_LINGUAS" = "x"; then - LINGUAS= - else - AC_MSG_CHECKING(for catalogs to be installed) - NEW_LINGUAS= - for lang in ${LINGUAS=$ALL_LINGUAS}; do - case "$ALL_LINGUAS" in - *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; - esac - done - LINGUAS=$NEW_LINGUAS - AC_MSG_RESULT($LINGUAS) - fi - - dnl Construct list of names of catalog files to be constructed. - if test -n "$LINGUAS"; then - for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done - fi - fi - - dnl The reference to in the installed file - dnl must be resolved because we cannot expect the users of this - dnl to define HAVE_LOCALE_H. - if test $ac_cv_header_locale_h = yes; then - INCLUDE_LOCALE_H="#include " - else - INCLUDE_LOCALE_H="\ -/* The system does not provide the header . Take care yourself. */" - fi - AC_SUBST(INCLUDE_LOCALE_H) - - dnl Determine which catalog format we have (if any is needed) - dnl For now we know about two different formats: - dnl Linux libc-5 and the normal X/Open format - test -d intl || mkdir intl - if test "$CATOBJEXT" = ".cat"; then - AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen) - - dnl Transform the SED scripts while copying because some dumb SEDs - dnl cannot handle comments. - sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed - fi - dnl po2tbl.sed is always needed. - sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \ - $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed - - dnl In the intl/Makefile.in we have a special dependency which makes - dnl only sense for gettext. We comment this out for non-gettext - dnl packages. - if test "$PACKAGE" = "gettext"; then - GT_NO="#NO#" - GT_YES= - else - GT_NO= - GT_YES="#YES#" - fi - AC_SUBST(GT_NO) - AC_SUBST(GT_YES) - - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but ($top_srcdir). - dnl Try to locate is. - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) - - dnl *** For now the libtool support in intl/Makefile is not for real. - l= - AC_SUBST(l) - - dnl Generate list of files to be processed by xgettext which will - dnl be included in po/Makefile. - test -d po || mkdir po - if test "x$srcdir" != "x."; then - if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then - posrcprefix="$srcdir/" - else - posrcprefix="../$srcdir/" - fi - else - posrcprefix="../" - fi - rm -f po/POTFILES - sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ - < $srcdir/po/POTFILES.in > po/POTFILES - ]) - -# Search path for a program which passes the given test. -# Ulrich Drepper , 1996. -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU Public License -# but which still want to provide support for the GNU gettext functionality. -# Please note that the actual code is *not* freely available. - -# serial 1 +# Define a conditional. -dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -AC_DEFUN(AM_PATH_PROG_WITH_TEST, -[# Extract the first word of "$2", so it can be a program name with args. -set dummy $2; ac_word=[$]2 -AC_MSG_CHECKING([for $ac_word]) -AC_CACHE_VAL(ac_cv_path_$1, -[case "[$]$1" in - /*) - ac_cv_path_$1="[$]$1" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in ifelse([$5], , $PATH, [$5]); do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if [$3]; then - ac_cv_path_$1="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" -dnl If no 4th arg is given, leave the cache variable unset, -dnl so AC_PATH_PROGS will keep looking. -ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -])dnl - ;; -esac])dnl -$1="$ac_cv_path_$1" -if test -n "[$]$1"; then - AC_MSG_RESULT([$]$1) +AC_DEFUN(AM_CONDITIONAL, +[AC_SUBST($1_TRUE) +AC_SUBST($1_FALSE) +if $2; then + $1_TRUE= + $1_FALSE='#' else - AC_MSG_RESULT(no) -fi -AC_SUBST($1)dnl -]) + $1_TRUE='#' + $1_FALSE= +fi]) # Check whether LC_MESSAGES is available in . # Ulrich Drepper , 1995. @@ -1317,7 +997,9 @@ AC_SUBST($1)dnl # but which still want to provide support for the GNU gettext functionality. # Please note that the actual code is *not* freely available. -# serial 1 +# serial 2 + +AC_PREREQ(2.13) dnl Minimum Autoconf version required. AC_DEFUN(AM_LC_MESSAGES, [if test $ac_cv_header_locale_h = yes; then @@ -1325,20 +1007,8 @@ AC_DEFUN(AM_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then - AC_DEFINE(HAVE_LC_MESSAGES) + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your locale.h file contains LC_MESSAGES.]) fi fi]) -# Define a conditional. - -AC_DEFUN(AM_CONDITIONAL, -[AC_SUBST($1_TRUE) -AC_SUBST($1_FALSE) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi]) - diff --git a/config.guess b/config.guess old mode 100755 new mode 100644 index e1b5871..cca6757 --- a/config.guess +++ b/config.guess @@ -156,9 +156,6 @@ EOF wgrisc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; @@ -331,18 +328,15 @@ EOF 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 + if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ + -o ${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} + echo m88k-dg-dguxbcs${UNAME_RELEASE} fi + else echo i586-dg-dgux${UNAME_RELEASE} + fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 @@ -459,7 +453,7 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` + ($CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` rm -f $dummy.c $dummy esac HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` @@ -594,7 +588,7 @@ EOF echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; *:NetBSD:*:*) - echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'` + echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` @@ -624,6 +618,12 @@ EOF echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; *:Linux:*:*) + # uname on the ARM produces all sorts of strangeness, and we need to + # filter it out. + case "$UNAME_MACHINE" in + armv*) UNAME_MACHINE=$UNAME_MACHINE ;; + arm* | sa110*) UNAME_MACHINE="arm" ;; + esac # 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 @@ -636,39 +636,13 @@ EOF s/ .*// p'` case "$ld_supported_emulations" in - *ia64) - echo "${UNAME_MACHINE}-unknown-linux" - exit 0 - ;; - i?86linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 - ;; - i?86coff) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 - ;; - sparclinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - armlinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32arm*) - echo "${UNAME_MACHINE}-unknown-linux-gnu" - exit 0 - ;; - armelf_linux*) - echo "${UNAME_MACHINE}-unknown-linux-gnu" - exit 0 - ;; - m68klinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32ppc) + *ia64) echo "${UNAME_MACHINE}-unknown-linux" ; exit 0 ;; + i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; + i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; + sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + elf32ppc | elf32ppclinux) # Determine Lib Version cat >$dummy.c < @@ -697,9 +671,7 @@ EOF fi fi rm -f $dummy.c $dummy - echo powerpc-unknown-linux-gnu${LIBC} - exit 0 - ;; + echo powerpc-unknown-linux-gnu${LIBC} ; exit 0 ;; esac if test "${UNAME_MACHINE}" = "alpha" ; then @@ -826,21 +798,19 @@ EOF echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; 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} + echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} fi exit 0 ;; i?86:*:5:7*) - # Fixed at (any) Pentium or better - UNAME_MACHINE=i586 - if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then - echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} - fi + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) && UNAME_MACHINE=i586 + (/bin/uname -X|egrep '^Machine.*Pent.*II' >/dev/null) && UNAME_MACHINE=i686 + (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) && UNAME_MACHINE=i585 + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}${UNAME_VERSION}-sysv${UNAME_RELEASE} exit 0 ;; i?86:*:3.2:*) if test -f /usr/options/cb.name; then @@ -974,9 +944,6 @@ EOF *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; - *:QNX:*:4*) - echo i386-qnx-qnx${UNAME_VERSION} - exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 diff --git a/config.h.in b/config.h.in index 750951d..2248953 100644 --- a/config.h.in +++ b/config.h.in @@ -1,72 +1,8 @@ /* config.h.in. Generated automatically from configure.in by autoheader. */ -/* Define if on AIX 3. - System headers sometimes define this. - We just want to avoid a redefinition error message. */ -#ifndef _ALL_SOURCE -#undef _ALL_SOURCE -#endif - -/* Define if using alloca.c. */ -#undef C_ALLOCA - -/* Define to empty if the keyword does not work. */ -#undef const - -/* 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 if you have alloca, as a function or macro. */ -#undef HAVE_ALLOCA - -/* Define if you have and it should be used (not on Ultrix). */ -#undef HAVE_ALLOCA_H - -/* Define if you don't have vprintf but do have _doprnt. */ -#undef HAVE_DOPRNT - -/* Define if you have the vprintf function. */ -#undef HAVE_VPRINTF - -/* Define as __inline if that's what the C compiler calls it. */ -#undef inline - -/* Define if on MINIX. */ -#undef _MINIX - -/* Define if the system does not provide POSIX.1 features except - with this defined. */ -#undef _POSIX_1_SOURCE - -/* Define if you need to in order for stat and other things to work. */ -#undef _POSIX_SOURCE - -/* Define as the return type of signal handlers (int or void). */ -#undef RETSIGTYPE - -/* 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 run-time. - 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 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define if lex declares yytext as a char * by default, not a char[]. */ -#undef YYTEXT_POINTER - /* Default charset is `Latin-1' on UNIX, `IBM-PC' on MSDOS. */ #undef DEFAULT_CHARSET -/* Define to 1 for better use of the debugging malloc library. See - site ftp.antaire.com in antaire/src, file dmalloc/dmalloc.tar.gz. */ -#undef WITH_DMALLOC - /* Define to 1 if NLS is requested. */ #undef ENABLE_NLS @@ -76,84 +12,160 @@ /* Define as 1 if you have gettext and don't want to use GNU gettext. */ #undef HAVE_GETTEXT -/* Define if your locale.h file contains LC_MESSAGES. */ -#undef HAVE_LC_MESSAGES - /* Define to the installation directory for locales. */ #undef LOCALEDIR -/* Define to rpl_malloc if the replacement function should be used. */ -#undef malloc +/* 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 rpl_realloc if the replacement function should be used. */ -#undef realloc +/* Define if using `alloca.c'. */ +#undef C_ALLOCA + +/* Define if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define if you have and it should be used (not on Ultrix). */ +#undef HAVE_ALLOCA_H -/* Define if you have the DONE_WORKING_MALLOC_CHECK function. */ +/* Define if you have the `dcgettext' function. */ +#undef HAVE_DCGETTEXT + +/* Define if the malloc check has been performed. */ #undef HAVE_DONE_WORKING_MALLOC_CHECK -/* Define if you have the DONE_WORKING_REALLOC_CHECK function. */ +/* Define if the realloc check has been performed. */ #undef HAVE_DONE_WORKING_REALLOC_CHECK -/* Define if you have the dcgettext function. */ -#undef HAVE_DCGETTEXT +/* Define if you don't have `vprintf' but do have `_doprnt.' */ +#undef HAVE_DOPRNT -/* Define if you have the dup2 function. */ +/* Define if you have the `dup2' function. */ #undef HAVE_DUP2 -/* Define if you have the getcwd function. */ +/* Define if you have the `getcwd' function. */ #undef HAVE_GETCWD -/* Define if you have the gettext function. */ +/* Define if you have the `gettext' function. */ #undef HAVE_GETTEXT -/* Define if you have the rename function. */ -#undef HAVE_RENAME - -/* Define if you have the setlocale function. */ -#undef HAVE_SETLOCALE - -/* Define if you have the stpcpy function. */ -#undef HAVE_STPCPY - -/* Define if you have the strerror function. */ -#undef HAVE_STRERROR +/* Define if your locale.h file contains LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES -/* Define if you have the strtol function. */ -#undef HAVE_STRTOL +/* Define if you have the `fl' library (-lfl). */ +#undef HAVE_LIBFL -/* Define if you have the strtoul function. */ -#undef HAVE_STRTOUL +/* Define if you have the `intl' library (-lintl). */ +#undef HAVE_LIBINTL -/* Define if you have the header file. */ +/* Define if you have the header file. */ #undef HAVE_LIBINTL_H -/* Define if you have the header file. */ +/* Define if you have the `l' library (-ll). */ +#undef HAVE_LIBL + +/* Define if you have the header file. */ #undef HAVE_LIMITS_H -/* Define if you have the header file. */ +/* Define if you have the header file. */ #undef HAVE_LOCALE_H -/* Define if you have the header file. */ +/* Define if you have the `rename' function. */ +#undef HAVE_RENAME + +/* Define if you have the `setlocale' function. */ +#undef HAVE_SETLOCALE + +/* Define if you have the header file. */ #undef HAVE_STDBOOL_H -/* Define if you have the header file. */ +/* Define if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define if you have the `strerror' function. */ +#undef HAVE_STRERROR + +/* Define if you have the header file. */ #undef HAVE_STRING_H -/* Define if you have the header file. */ +/* Define if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define if you have the `strtoul' function. */ +#undef HAVE_STRTOUL + +/* Define if struct utimbuf is declared -- usually in . Some systems + have utime.h but don't declare the struct anywhere. */ +#undef HAVE_STRUCT_UTIMBUF + +/* Define if you have the header file. */ #undef HAVE_UNISTD_H -/* Define if you have the header file. */ +/* Define if you have the header file. */ #undef HAVE_UTIME_H +/* Define if you have the `vprintf' function. */ +#undef HAVE_VPRINTF + /* Name of package */ #undef PACKAGE -/* Version number of package */ -#undef VERSION - /* Define if compiler has function prototypes */ #undef PROTOTYPES +/* Define as the return type of signal handlers (`int' or `void'). */ +#undef RETSIGTYPE + +/* 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 run-time. + 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 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Version number of package */ +#undef VERSION + /* Define if using the dmalloc debugging malloc package */ #undef WITH_DMALLOC +/* Define if `lex' declares `yytext' as a `char *' by default, not a `char[]'. + */ +#undef YYTEXT_POINTER + +/* Define if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif + +/* Define if on MINIX. */ +#undef _MINIX + +/* Define if the system does not provide POSIX.1 features except with this + defined. */ +#undef _POSIX_1_SOURCE + +/* Define if you need to in order for stat and other things to work. */ +#undef _POSIX_SOURCE + +/* Define to empty if the keyword `const' is not conform to ANSI C. */ +#undef const + +/* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +#undef inline + +/* Define to rpl_malloc if the replacement function should be used. */ +#undef malloc + +/* Define to rpl_realloc if the replacement function should be used. */ +#undef realloc diff --git a/config.sub b/config.sub old mode 100755 new mode 100644 index 28426bb..ec508a5 --- a/config.sub +++ b/config.sub @@ -177,10 +177,10 @@ case $basic_machine in | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ | mips64vr5000 | miprs64vr5000el | mcore \ | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \ - | thumb | d10v | fr30) + | thumb | d10v) basic_machine=$basic_machine-unknown ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl) + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65) ;; # We use `pc' rather than `unknown' @@ -212,7 +212,7 @@ case $basic_machine in | mipstx39-* | mipstx39el-* | mcore-* \ | f301-* | armv*-* | t3e-* \ | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ - | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* ) + | thumb-* | v850-* | d30v-* | tic30-* | c30-* ) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. @@ -430,6 +430,7 @@ case $basic_machine in ;; i370-ibm* | ibm*) basic_machine=i370-ibm + os=-mvs ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i[34567]86v32) @@ -464,9 +465,6 @@ case $basic_machine in basic_machine=i386-unknown os=-mingw32 ;; - i386-qnx | qnx) - basic_machine=i386-qnx - ;; iris | iris4d) basic_machine=mips-sgi case $os in @@ -521,10 +519,6 @@ case $basic_machine in basic_machine=i386-unknown os=-msdos ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; ncr3000) basic_machine=i486-ncr os=-sysv4 @@ -534,7 +528,7 @@ case $basic_machine in os=-netbsd ;; netwinder) - basic_machine=armv4l-rebel + basic_machine=armv4l-corel os=-linux ;; news | news700 | news800 | news900) @@ -918,7 +912,7 @@ case $os in | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -rhapsody* | -opened* | -openstep* | -oskit*) + | -interix* | -uwin* | -rhapsody* | -openstep* | -oskit*) # Remember, each alternative MUST END IN *, to match a version number. ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ @@ -937,9 +931,6 @@ case $os in -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; - -opened*) - os=-openedition - ;; -osfrose*) os=-osfrose ;; @@ -977,9 +968,6 @@ case $os in -oss*) os=-sysv3 ;; - -qnx) - os=-qnx4 - ;; -svr4) os=-sysv4 ;; @@ -1029,7 +1017,7 @@ case $basic_machine in *-acorn) os=-riscix1.2 ;; - arm*-rebel) + arm*-corel) os=-linux ;; arm*-semi) @@ -1203,7 +1191,7 @@ case $basic_machine in -genix*) vendor=ns ;; - -mvs* | -opened*) + -mvs*) vendor=ibm ;; -ptx*) diff --git a/configure b/configure index 6f42d5b..8fbf733 100755 --- a/configure +++ b/configure @@ -1,34 +1,62 @@ #! /bin/sh - # Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# Generated automatically using Autoconf version 2.14a +# Copyright (C) 1992, 93, 94, 95, 96, 98, 1999 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # Defaults: -ac_help= +ac_arg_with_help= +ac_arg_enable_help= +ac_arg_var_help= ac_default_prefix=/usr/local +# Factorizing default headers for most tests. +ac_includes_default="\ +#include +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#else +# if HAVE_STRINGS_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" # Any additions from configure.in: -ac_help="$ac_help +ac_arg_var_help="$ac_arg_var_help + CFLAGS Extra flags for the C compiler" +ac_arg_enable_help="$ac_arg_enable_help --enable-shared[=PKGS] build shared libraries [default=yes]" -ac_help="$ac_help +ac_arg_enable_help="$ac_arg_enable_help --enable-static[=PKGS] build static libraries [default=yes]" -ac_help="$ac_help +ac_arg_enable_help="$ac_arg_enable_help --enable-fast-install[=PKGS] optimize for fast installation [default=yes]" -ac_help="$ac_help +ac_arg_with_help="$ac_arg_with_help --with-gnu-ld assume the C compiler uses GNU ld [default=no]" -ac_help="$ac_help +ac_arg_enable_help="$ac_arg_enable_help --disable-libtool-lock avoid locking (might break parallel builds)" -ac_help="$ac_help +ac_arg_with_help="$ac_arg_with_help --with-dmalloc use dmalloc, as in ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz" -ac_help="$ac_help +ac_arg_enable_help="$ac_arg_enable_help --disable-nls disallow Native Language Support" -ac_help="$ac_help +ac_arg_with_help="$ac_arg_with_help --with-catgets say that catgets is not supported" -ac_help="$ac_help +ac_arg_with_help="$ac_arg_with_help --without-included-gettext avoid our provided version of gettext" # Initialize some variables set by options. @@ -70,12 +98,14 @@ subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 +: ${ac_max_here_lines=12} +# Sed expression to map a string onto a valid sh and CPP variable names. +ac_tr_sh='sed -e y%*+%pp%;s%[^a-zA-Z0-9_]%_%g' +ac_tr_cpp='sed -e y%*abcdefghijklmnopqrstuvwxyz%PABCDEFGHIJKLMNOPQRSTUVWXYZ%;s%[^A-Z0-9_]%_%g' ac_prev= for ac_option do - # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" @@ -83,10 +113,7 @@ do continue fi - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac + ac_optarg=`echo "$ac_option" | sed -n 's/^[^=]*=//p'` # Accept the important Cygnus configure options, so we can diagnose typos. @@ -116,23 +143,23 @@ do datadir="$ac_optarg" ;; -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + ac_feature=`echo "$ac_option"|sed -e 's/-*disable-//'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + if echo "$ac_feature" | grep '[^-a-zA-Z0-9_]' >/dev/null 2>&1; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` eval "enable_${ac_feature}=no" ;; -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + ac_feature=`echo "$ac_option"|sed -e 's/-*enable-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + if echo "$ac_feature" | grep '[^-a-zA-Z0-9_]' >/dev/null 2>&1; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` case "$ac_option" in - *=*) ;; + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_${ac_feature}='$ac_optarg'" ;; @@ -150,19 +177,28 @@ do # Obsolete; use --with-gas. with_gas=yes ;; - -help | --help | --hel | --he) + -help | --help | --hel | --he | -h) # 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 << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] + cat <<\EOF +`configure' configures software source code packages to adapt to many kinds +of systems. + +Usage: configure [OPTION]... [VAR=VALUE]... [HOST] + +To safely assign special values to environment variables (e.g., CC, +CFLAGS...), give to `configure' the definition as VAR=VALUE. + +Defaults for the options are specified in brackets. + Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: + -h, --help print this message + --version print the version of autoconf that created configure + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE + -n, --no-create do not create output files + +Directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX @@ -182,27 +218,36 @@ Directory and file names: --infodir=DIR info documentation in DIR [PREFIX/info] --mandir=DIR man documentation in DIR [PREFIX/man] --srcdir=DIR find the sources in DIR [configure dir or ..] + +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 + EOF - cat << EOF + cat <<\EOF Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] + +X features: + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + test -n "$ac_arg_enable_help" && echo " +Optional features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-FEATURE[=ARG] include FEATURE [ARG=yes]\ +$ac_arg_enable_help" + test -n "$ac_arg_with_help" && echo " +Optional packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)\ +$ac_arg_with_help" + test -n "$ac_arg_var_help" && echo " +Some influent environment variables:$ac_arg_var_help" exit 0 ;; -host | --host | --hos | --ho) @@ -352,26 +397,26 @@ EOF verbose=yes ;; -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" + echo "configure generated by autoconf version 2.14a" exit 0 ;; -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + ac_package=`echo "$ac_option"|sed -e 's/-*with-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + if echo "$ac_feature" | grep '[^-a-zA-Z0-9_]' >/dev/null 2>&1; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` case "$ac_option" in - *=*) ;; + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_${ac_package}='$ac_optarg'" ;; -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` + ac_package=`echo "$ac_option"|sed -e 's/-*without-//'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + if echo "$ac_feature" | grep '[^-a-zA-Z0-9_]' >/dev/null 2>&1; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` @@ -398,9 +443,19 @@ EOF -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } ;; + *=*) + ac_envvar=`echo "$ac_option" | sed -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if echo "$ac_envvar" | grep '[^a-zA-Z0-9_]' >/dev/null 2>&1; then + { echo "configure: error: $ac_envvar: invalid variable name" 1>&2; exit 1; } + fi + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 + if echo "$ac_feature" | grep '[^-a-zA-Z0-9.]' >/dev/null 2>&1; then + echo "configure: WARNING: $ac_option: invalid host type" 1>&2 fi if test "x$nonopt" != xNONE; then { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } @@ -412,7 +467,7 @@ EOF done if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } + { echo "configure: error: missing argument to --\`echo $ac_prev | sed 's/_/-/g'\`" 1>&2; exit 1; } fi trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 @@ -438,7 +493,7 @@ running configure, to aid debugging if configure makes a mistake. " 1>&5 # Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. +# Also quote any args containing shell meta-characters. ac_configure_args= for ac_arg do @@ -447,11 +502,15 @@ do | --no-cr | --no-c) ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ac_configure_args="$ac_configure_args '$ac_arg'" ;; *) ac_configure_args="$ac_configure_args $ac_arg" ;; esac done + +# Support of DJGPP port of bash. +if test -n "$COMSPEC$ComSpec"; then ac_x=-x; else ac_x=-f; fi # NLS nuisances. # Only set these to C if already set. These must not be set unconditionally @@ -466,7 +525,7 @@ if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h +echo >confdefs.h # A filename unique to this package, relative to the directory that # configure is in, which we can look for to find out if srcdir is correct. @@ -477,7 +536,7 @@ if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + ac_confdir=`echo "$ac_prog"|sed 's%/[^/][^/]*$%%'` test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then @@ -488,9 +547,9 @@ else fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + { echo "configure: error: cannot find sources in $ac_confdir or .." 1>&2; exit 1; } else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + { echo "configure: error: cannot find sources in $srcdir" 1>&2; exit 1; } fi fi srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` @@ -512,10 +571,10 @@ done if test -r "$cache_file"; then echo "loading cache $cache_file" - . $cache_file + test -f "$cache_file" && . $cache_file else echo "creating cache $cache_file" - > $cache_file + >$cache_file fi ac_ext=c @@ -528,7 +587,7 @@ cross_compiling=$ac_cv_prog_cc_cross ac_exeext= ac_objext=o if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + # Stardent Vistra SVR4 grep lacks -e, says Kaveh Ghazi if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ac_n= ac_c=' ' ac_t=' ' @@ -539,11 +598,6 @@ else ac_n= ac_c='\c' ac_t= fi - - - - - ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then @@ -554,14 +608,18 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do 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 - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } + { echo "configure: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -574,10 +632,10 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:579: checking for a BSD compatible install" >&5 +echo $ac_n "checking for a BSD compatible install... $ac_c" 1>&6 +echo "configure:637: checking for a BSD compatible install" 1>&5 if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then +if test "${ac_cv_path_install+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" @@ -590,14 +648,24 @@ else # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do - if test -f $ac_dir/$ac_prog; then + if test $ac_x $ac_dir/$ac_prog; then if test $ac_prog = install && grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : + elif test $ac_prog = install && + grep pwplus $ac_dir/$ac_prog >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 + if test $ac_prog = installbsd && + grep src/bos $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX installbsd doesn't work without option "-g". + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi fi fi done @@ -623,12 +691,12 @@ echo "$ac_t""$INSTALL" 1>&6 # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:632: checking whether build environment is sane" >&5 +echo $ac_n "checking whether build environment is sane... $ac_c" 1>&6 +echo "configure:700: checking whether build environment is sane" 1>&5 # Just in case sleep 1 echo timestamp > conftestfile @@ -669,28 +737,28 @@ if test "$program_transform_name" = s,x,x,; then program_transform_name= else # Double any \ or $. echo might interpret backslashes. - cat <<\EOF_SED > conftestsed + cat <<\EOF_SED >conftestsed s,\\,\\\\,g; s,\$,$$,g EOF_SED - program_transform_name="`echo $program_transform_name|sed -f conftestsed`" + program_transform_name=`echo $program_transform_name|sed -f conftestsed` rm -f conftestsed fi test "$program_prefix" != NONE && - program_transform_name="s,^,${program_prefix},; $program_transform_name" + 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" + program_transform_name="s,\$\$,${program_suffix},;$program_transform_name" # sed with no file args requires a program. test "$program_transform_name" = "" && program_transform_name="s,x,x," -echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:689: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}... $ac_c" 1>&6 +echo "configure:757: checking whether ${MAKE-make} sets \${MAKE}" 1>&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftestmake <<\EOF + cat >conftestmake <<\EOF all: @echo 'ac_maketemp="${MAKE}"' EOF @@ -711,27 +779,24 @@ else SET_MAKE="MAKE=${MAKE-make}" fi - PACKAGE=recode -VERSION=3.5c +VERSION=3.5d if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } fi -cat >> confdefs.h <>confdefs.h <> confdefs.h <>confdefs.h <&6 -echo "configure:735: checking for working aclocal" >&5 +echo $ac_n "checking for working aclocal... $ac_c" 1>&6 +echo "configure:800: checking for working aclocal" 1>&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -743,8 +808,8 @@ else echo "$ac_t""missing" 1>&6 fi -echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:748: checking for working autoconf" >&5 +echo $ac_n "checking for working autoconf... $ac_c" 1>&6 +echo "configure:813: checking for working autoconf" 1>&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -756,8 +821,8 @@ else echo "$ac_t""missing" 1>&6 fi -echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:761: checking for working automake" >&5 +echo $ac_n "checking for working automake... $ac_c" 1>&6 +echo "configure:826: checking for working automake" 1>&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -769,8 +834,8 @@ else echo "$ac_t""missing" 1>&6 fi -echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:774: checking for working autoheader" >&5 +echo $ac_n "checking for working autoheader... $ac_c" 1>&6 +echo "configure:839: checking for working autoheader" 1>&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -782,8 +847,8 @@ else echo "$ac_t""missing" 1>&6 fi -echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:787: checking for working makeinfo" >&5 +echo $ac_n "checking for working makeinfo... $ac_c" 1>&6 +echo "configure:852: checking for working makeinfo" 1>&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -795,12 +860,11 @@ else echo "$ac_t""missing" 1>&6 fi - AT_TESTPATH=../src -echo $ac_n "checking how to suppress newlines using echo""... $ac_c" 1>&6 -echo "configure:803: checking how to suppress newlines using echo" >&5 -if eval "test \"`echo '$''{'fp_cv_prog_echo_nonl'+set}'`\" = set"; then +echo $ac_n "checking how to suppress newlines using echo... $ac_c" 1>&6 +echo "configure:867: checking how to suppress newlines using echo" 1>&5 +if test "${fp_cv_prog_echo_nonl+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then @@ -814,7 +878,6 @@ else fi fi - echo "$ac_t""$fp_cv_prog_echo_nonl" 1>&6 test $fp_cv_prog_echo_nonl = no \ && echo 2>&1 "WARNING: \`echo' not powerful enough for \`make check'" @@ -824,14 +887,18 @@ case $fp_cv_prog_echo_nonl in escape) ECHO_N= ECHO_C='\c' ;; esac +ALL_LINGUAS="da de el es fr gl it nl pl pt sl sv" -ALL_LINGUAS="da de el es fr it nl pl pt sl sv" +case "${CFLAGS+set} $ac_configure_args" in + *" CFLAGS="* );; + "set "*) ac_configure_args="CFLAGS='$CFLAGS' $ac_configure_args";; +esac -# Extract the first word of "gcc", so it can be a program name with args. + # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:834: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then +echo $ac_n "checking for $ac_word... $ac_c" 1>&6 +echo "configure:901: checking for $ac_word" 1>&5 +if test "${ac_cv_prog_CC+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then @@ -841,7 +908,7 @@ else ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then + if test $ac_x $ac_dir/$ac_word; then ac_cv_prog_CC="gcc" break fi @@ -856,12 +923,12 @@ else echo "$ac_t""no" 1>&6 fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. + 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 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:864: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then +echo $ac_n "checking for $ac_word... $ac_c" 1>&6 +echo "configure:931: checking for $ac_word" 1>&5 +if test "${ac_cv_prog_CC+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then @@ -872,7 +939,7 @@ else ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then + if test $ac_x $ac_dir/$ac_word; then if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -905,14 +972,14 @@ else echo "$ac_t""no" 1>&6 fi - if test -z "$CC"; then - case "`uname -s`" in - *win32* | *WIN32*) - # Extract the first word of "cl", so it can be a program name with args. -set dummy cl; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:915: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + if test -z "$CC"; then + for ac_prog in cl +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word... $ac_c" 1>&6 +echo "configure:982: checking for $ac_word" 1>&5 +if test "${ac_cv_prog_CC+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then @@ -922,8 +989,8 @@ else ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="cl" + if test $ac_x $ac_dir/$ac_word; then + ac_cv_prog_CC="$ac_prog" break fi done @@ -936,14 +1003,17 @@ if test -n "$CC"; then else echo "$ac_t""no" 1>&6 fi - ;; - esac + +test -n "$CC" && break +done + + fi fi - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } -fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:947: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works... $ac_c" 1>&6 +echo "configure:1017: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works" 1>&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -952,14 +1022,14 @@ ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross -cat > conftest.$ac_ext << EOF +cat >conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -982,30 +1052,29 @@ cross_compiling=$ac_cv_prog_cc_cross echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 77; } fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:989: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) is a cross-compiler... $ac_c" 1>&6 +echo "configure:1059: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) is a cross-compiler" 1>&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:994: checking whether we are using GNU C" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then +echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 +echo "configure:1064: checking whether we are using GNU C" 1>&5 +if test "${ac_cv_prog_gcc+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.c <conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1073: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no fi fi - echo "$ac_t""$ac_cv_prog_gcc" 1>&6 if test $ac_cv_prog_gcc = yes; then @@ -1017,12 +1086,12 @@ fi ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= -echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1022: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then +echo $ac_n "checking whether ${CC-cc} accepts -g... $ac_c" 1>&6 +echo "configure:1091: checking whether ${CC-cc} accepts -g" 1>&5 +if test "${ac_cv_prog_cc_g+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - echo 'void f(){}' > conftest.c + echo 'void f(){}' >conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then ac_cv_prog_cc_g=yes else @@ -1031,7 +1100,6 @@ fi rm -f conftest* fi - echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 if test "$ac_test_CFLAGS" = set; then CFLAGS="$ac_save_CFLAGS" @@ -1049,14 +1117,14 @@ else fi fi -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1054: checking how to run the C preprocessor" >&5 +echo $ac_n "checking how to run the C preprocessor... $ac_c" 1>&6 +echo "configure:1122: checking how to run the C preprocessor" 1>&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then +if test "${ac_cv_prog_CPP+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else # This must be in double quotes, not single quotes, because CPP may get @@ -1064,14 +1132,14 @@ else CPP="${CC-cc} -E" # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. - cat > conftest.$ac_ext <conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1143: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1081,14 +1149,14 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext <conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1092: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1160: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1098,14 +1166,14 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* CPP="${CC-cc} -nologo -E" - cat > conftest.$ac_ext <conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1177: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1129,10 +1197,10 @@ else fi echo "$ac_t""$CPP" 1>&6 -echo $ac_n "checking for AIX""... $ac_c" 1>&6 -echo "configure:1134: checking for AIX" >&5 -cat > conftest.$ac_ext <&6 +echo "configure:1202: checking for AIX" 1>&5 +cat >conftest.$ac_ext <&5 | egrep "yes" >/dev/null 2>&1; then rm -rf conftest* - echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF + echo "$ac_t""yes" 1>&6 +cat >>confdefs.h <<\EOF #define _ALL_SOURCE 1 EOF @@ -1152,51 +1221,49 @@ else fi rm -f conftest* - -ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6 -echo "configure:1159: checking for minix/config.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +echo $ac_n "checking for minix/config.h... $ac_c" 1>&6 +echo "configure:1226: checking for minix/config.h" 1>&5 +if test "${ac_cv_header_minix_config_h+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext < + EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1169: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1237: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + ac_cv_header_minix_config_h=yes else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + ac_cv_header_minix_config_h=no fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 +echo "$ac_t""$ac_cv_header_minix_config_h" 1>&6 +if test $ac_cv_header_minix_config_h = yes; then MINIX=yes else - echo "$ac_t""no" 1>&6 -MINIX= + MINIX= fi if test "$MINIX" = yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define _POSIX_SOURCE 1 EOF - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define _POSIX_1_SOURCE 2 EOF - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define _MINIX 1 EOF @@ -1271,56 +1338,82 @@ else enable_fast_install=yes fi +echo $ac_n "checking host system type... $ac_c" 1>&6 +echo "configure:1343: checking host system type" 1>&5 +if test "x$ac_cv_host" = "x" || (test "x$host" != "xNONE" && test "x$host" != "x$ac_cv_host_alias"); then + + # Make sure we can run config.sub. + if $ac_config_sub sun4 >/dev/null 2>&1; then :; else + { echo "configure: error: cannot run $ac_config_sub" 1>&2; exit 1; } + fi + + ac_cv_host_alias=$host + case "$ac_cv_host_alias" in + NONE) + case $nonopt in + NONE) + if ac_cv_host_alias=`$ac_config_guess`; then : + else { echo "configure: error: cannot guess host type; you must specify one" 1>&2; exit 1; } + fi ;; *) ac_cv_host_alias=$nonopt ;; + esac ;; + esac -# Make sure we can run config.sub. -if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : -else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } + ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || exit 1 + ac_cv_host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` + ac_cv_host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` + ac_cv_host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +else + echo $ac_n "(cached) $ac_c" 1>&6 fi -echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:1282: checking host system type" >&5 +echo "$ac_t""$ac_cv_host" 1>&6 + +host=$ac_cv_host +host_alias=$ac_cv_host_alias +host_cpu=$ac_cv_host_cpu +host_vendor=$ac_cv_host_vendor +host_os=$ac_cv_host_os + +echo $ac_n "checking build system type... $ac_c" 1>&6 +echo "configure:1379: checking build system type" 1>&5 +if test "x$ac_cv_build" = "x" || (test "x$build" != "xNONE" && test "x$build" != "x$ac_cv_build_alias"); then + + # Make sure we can run config.sub. + if $ac_config_sub sun4 >/dev/null 2>&1; then :; else + { echo "configure: error: cannot run $ac_config_sub" 1>&2; exit 1; } + fi -host_alias=$host -case "$host_alias" in -NONE) - case $nonopt in + ac_cv_build_alias=$build + case "$ac_cv_build_alias" in NONE) - if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : - else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } - fi ;; - *) host_alias=$nonopt ;; - esac ;; -esac + case $nonopt in + NONE) + ac_cv_build_alias=$host_alias ;; + *) ac_cv_build_alias=$nonopt ;; + esac ;; + esac -host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$host" 1>&6 - -echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:1303: checking build system type" >&5 - -build_alias=$build -case "$build_alias" in -NONE) - case $nonopt in - NONE) build_alias=$host_alias ;; - *) build_alias=$nonopt ;; - esac ;; -esac + ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || exit 1 + ac_cv_build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` + ac_cv_build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` + ac_cv_build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +else + echo $ac_n "(cached) $ac_c" 1>&6 +fi + +echo "$ac_t""$ac_cv_build" 1>&6 -build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias` -build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$build" 1>&6 +build=$ac_cv_build +build_alias=$ac_cv_build_alias +build_cpu=$ac_cv_build_cpu +build_vendor=$ac_cv_build_vendor +build_os=$ac_cv_build_os # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1323: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then +echo $ac_n "checking for $ac_word... $ac_c" 1>&6 +echo "configure:1416: checking for $ac_word" 1>&5 +if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$RANLIB"; then @@ -1330,7 +1423,7 @@ else ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then + if test $ac_x $ac_dir/$ac_word; then ac_cv_prog_RANLIB="ranlib" break fi @@ -1357,8 +1450,8 @@ fi ac_prog=ld if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. - echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:1362: checking for ld used by GCC" >&5 + echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 +echo "configure:1455: checking for ld used by GCC" 1>&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. @@ -1381,13 +1474,13 @@ echo "configure:1362: checking for ld used by GCC" >&5 ;; esac elif test "$with_gnu_ld" = yes; then - echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1386: checking for GNU ld" >&5 + echo $ac_n "checking for GNU ld... $ac_c" 1>&6 +echo "configure:1479: checking for GNU ld" 1>&5 else - echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1389: checking for non-GNU ld" >&5 + echo $ac_n "checking for non-GNU ld... $ac_c" 1>&6 +echo "configure:1482: checking for non-GNU ld" 1>&5 fi -if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then +if test "${ac_cv_path_LD+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -z "$LD"; then @@ -1419,9 +1512,9 @@ else echo "$ac_t""no" 1>&6 fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } -echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -echo "configure:1424: checking if the linker ($LD) is GNU ld" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then +echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 +echo "configure:1517: checking if the linker ($LD) is GNU ld" 1>&5 +if test "${ac_cv_prog_gnu_ld+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. @@ -1431,13 +1524,11 @@ else ac_cv_prog_gnu_ld=no fi fi - echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6 - -echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:1440: checking for BSD-compatible nm" >&5 -if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then +echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 +echo "configure:1531: checking for BSD-compatible nm" 1>&5 +if test "${ac_cv_path_NM+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$NM"; then @@ -1471,9 +1562,9 @@ fi NM="$ac_cv_path_NM" echo "$ac_t""$NM" 1>&6 -echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1476: checking whether ln -s works" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then +echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 +echo "configure:1567: checking whether ln -s works" 1>&5 +if test "${ac_cv_prog_LN_S+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftestdata @@ -1492,7 +1583,6 @@ else echo "$ac_t""no" 1>&6 fi - case "$target" in NONE) lt_target="$host" ;; *) lt_target="$target" ;; @@ -1506,7 +1596,6 @@ test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" - # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" @@ -1521,8 +1610,8 @@ test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" case "$lt_target" in *-*-irix6*) # Find out which ABI we are using. - echo '#line 1525 "configure"' > conftest.$ac_ext - if { (eval echo configure:1526: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 1614 "configure"' > conftest.$ac_ext + if { (eval echo configure:1615: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" @@ -1542,20 +1631,24 @@ case "$lt_target" in # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" - echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:1547: checking whether the C compiler needs -belf" >&5 -if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then + echo $ac_n "checking whether the C compiler needs -belf... $ac_c" 1>&6 +echo "configure:1636: checking whether the C compiler needs -belf" 1>&5 +if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else @@ -1565,8 +1658,8 @@ else lt_cv_cc_needs_belf=no fi rm -f conftest* -fi +fi echo "$ac_t""$lt_cv_cc_needs_belf" 1>&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 @@ -1574,12 +1667,10 @@ echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6 fi ;; - esac - # Save cache, so that ltconfig can load it -cat > confcache <<\EOF +cat >confcache <<\EOF # 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. It is not useful on other systems. @@ -1613,20 +1704,17 @@ EOF # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else + esac >>confcache +if cmp -s $cache_file confcache; then :; else if test -w $cache_file; then echo "updating cache $cache_file" - cat confcache > $cache_file + cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache - # Actually configure libtool. ac_aux_dir is where install-sh is found. CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ @@ -1639,13 +1727,12 @@ $libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \ # Reload cache, that may have been modified by ltconfig if test -r "$cache_file"; then echo "loading cache $cache_file" - . $cache_file + test -f "$cache_file" && . $cache_file else echo "creating cache $cache_file" - > $cache_file + >$cache_file fi - # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" @@ -1656,15 +1743,14 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool' # clobbered by the next message. exec 5>>./config.log - -echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 -echo "configure:1662: checking for POSIXized ISC" >&5 +echo $ac_n "checking for POSIXized ISC... $ac_c" 1>&6 +echo "configure:1748: checking for POSIXized ISC" 1>&5 if test -d /etc/conf/kconfig.d && - grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 + grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 then echo "$ac_t""yes" 1>&6 ISC=yes # If later tests want to check for ISC. - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define _POSIX_SOURCE 1 EOF @@ -1678,12 +1764,9 @@ else ISC= fi - - - -echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6 -echo "configure:1686: checking for ${CC-cc} option to accept ANSI C" >&5 -if eval "test \"`echo '$''{'am_cv_prog_cc_stdc'+set}'`\" = set"; then +echo $ac_n "checking for ${CC-cc} option to accept ANSI C... $ac_c" 1>&6 +echo "configure:1769: checking for ${CC-cc} option to accept ANSI C" 1>&5 +if test "${am_cv_prog_cc_stdc+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else am_cv_prog_cc_stdc=no @@ -1697,8 +1780,8 @@ ac_save_CC="$CC" for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - cat > conftest.$ac_ext <conftest.$ac_ext < #include @@ -1729,13 +1812,17 @@ int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, i int argc; char **argv; -int main() { +int +main () +{ return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; -; return 0; } + ; + return 0; +} EOF -if { (eval echo configure:1739: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1826: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* am_cv_prog_cc_stdc="$ac_arg"; break else @@ -1758,13 +1845,11 @@ case "x$am_cv_prog_cc_stdc" in *) CC="$CC $am_cv_prog_cc_stdc" ;; esac - - -echo $ac_n "checking for function prototypes""... $ac_c" 1>&6 -echo "configure:1765: checking for function prototypes" >&5 +echo $ac_n "checking for function prototypes... $ac_c" 1>&6 +echo "configure:1850: checking for function prototypes" 1>&5 if test "$am_cv_prog_cc_stdc" != no; then echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define PROTOTYPES 1 EOF @@ -1773,21 +1858,22 @@ else echo "$ac_t""no" 1>&6 U=_ ANSI2KNR=./ansi2knr # Ensure some checks needed by ansi2knr itself. - echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1778: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "checking for ANSI C header files... $ac_c" 1>&6 +echo "configure:1863: checking for ANSI C header files" 1>&5 +if test "${ac_cv_header_stdc+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext < #include #include #include + EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1791: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1877: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1803,10 +1889,11 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext <conftest.$ac_ext < + EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then @@ -1821,10 +1908,11 @@ 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 <conftest.$ac_ext < + EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then @@ -1842,19 +1930,33 @@ if test $ac_cv_header_stdc = yes; then if test "$cross_compiling" = yes; then : else - cat > conftest.$ac_ext <conftest.$ac_ext < -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#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)) exit(2); -exit (0); } +#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)) + exit(2); + exit (0); +} EOF -if { (eval echo configure:1858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -1864,117 +1966,200 @@ else ac_cv_header_stdc=no fi rm -fr conftest* + fi fi fi - echo "$ac_t""$ac_cv_header_stdc" 1>&6 if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define STDC_HEADERS 1 EOF fi - for ac_hdr in string.h + for ac_header in string.h do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1885: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +ac_ac_Header=`echo "ac_cv_header_$ac_header" | $ac_tr_sh` +echo $ac_n "checking for $ac_header... $ac_c" 1>&6 +echo "configure:1987: checking for $ac_header" 1>&5 +if eval "test \"\${$ac_ac_Header+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext < +#include <$ac_header> + EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1998: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "$ac_ac_Header=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "$ac_ac_Header=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 +if test `eval echo '${'$ac_ac_Header'}'` = yes; then + cat >>confdefs.h <&6 fi done fi -echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:1924: checking for working const" >&5 -if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then +echo $ac_n "checking for ${CC-cc} option to accept ANSI C... $ac_c" 1>&6 +echo "configure:2024: checking for ${CC-cc} option to accept ANSI C" 1>&5 +if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext < +#include +#include +#include +/* 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]; } -{ /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; +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; } -{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; +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; } +EOF +if { (eval echo configure:2079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_prog_cc_stdc="$ac_arg"; break +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +done +CC="$ac_save_CC" + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$ac_t""none needed" 1>&6 ;; + *) + echo "$ac_t""$ac_cv_prog_cc_stdc" 1>&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +echo $ac_n "checking for an ANSI C conforming const... $ac_c" 1>&6 +echo "configure:2101: checking for an ANSI C conforming const" 1>&5 +if test "${ac_cv_c_const+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat >conftest.$ac_ext <j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif -; return 0; } + ; + return 0; +} EOF -if { (eval echo configure:1978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2163: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -1985,31 +2170,37 @@ else fi rm -f conftest* fi - echo "$ac_t""$ac_cv_c_const" 1>&6 if test $ac_cv_c_const = no; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define const EOF fi -echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:1999: checking for inline" >&5 -if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then +echo $ac_n "checking for inline... $ac_c" 1>&6 +echo "configure:2183: checking for inline" 1>&5 +if test "${ac_cv_c_inline+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do - cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2204: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -2020,28 +2211,26 @@ rm -f conftest* done fi - echo "$ac_t""$ac_cv_c_inline" 1>&6 case "$ac_cv_c_inline" in inline | yes) ;; - no) cat >> confdefs.h <<\EOF + no) cat >>confdefs.h <<\EOF #define inline EOF ;; - *) cat >> confdefs.h <>confdefs.h <&6 -echo "configure:2044: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then +echo $ac_n "checking for $ac_word... $ac_c" 1>&6 +echo "configure:2233: checking for $ac_word" 1>&5 +if test "${ac_cv_prog_LEX+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$LEX"; then @@ -2051,7 +2240,7 @@ else ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then + if test $ac_x $ac_dir/$ac_word; then ac_cv_prog_LEX="$ac_prog" break fi @@ -2068,13 +2257,17 @@ fi test -n "$LEX" && break done -test -n "$LEX" || LEX=""$missing_dir/missing flex"" +test -n "$LEX" || LEX="missing" -# Extract the first word of "flex", so it can be a program name with args. +if test "$LEX" = missing; then + LEX="\$(top_srcdir)/$ac_aux_dir/missing flex" + LEX_OUTPUT_ROOT=lex.yy + else + # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2077: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then +echo $ac_n "checking for $ac_word... $ac_c" 1>&6 +echo "configure:2270: checking for $ac_word" 1>&5 +if test "${ac_cv_prog_LEX+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$LEX"; then @@ -2084,7 +2277,7 @@ else ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then + if test $ac_x $ac_dir/$ac_word; then ac_cv_prog_LEX="flex" break fi @@ -2106,51 +2299,53 @@ then flex*) ac_lib=fl ;; *) ac_lib=l ;; esac - echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:2111: checking for yywrap in -l$ac_lib" >&5 -ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + ac_ac_Lib=`echo "ac_cv_lib_$ac_lib_yywrap" | $ac_tr_sh` +echo $ac_n "checking for yywrap in -l$ac_lib... $ac_c" 1>&6 +echo "configure:2305: checking for yywrap in -l$ac_lib" 1>&5 +if eval "test \"\${$ac_ac_Lib+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-l$ac_lib $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "$ac_ac_Lib=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "$ac_ac_Lib=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" +LIBS="$ac_save_LIBS" fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 +echo "$ac_t""`eval echo '${'$ac_ac_Lib'}'`" 1>&6 +if test `eval echo '${'$ac_ac_Lib'}'` = yes; then LEXLIB="-l$ac_lib" -else - echo "$ac_t""no" 1>&6 fi fi -echo $ac_n "checking lex output file root""... $ac_c" 1>&6 -echo "configure:2153: checking lex output file root" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then + echo $ac_n "checking lex output file root... $ac_c" 1>&6 +echo "configure:2348: checking lex output file root" 1>&5 +if test "${ac_cv_prog_lex_root+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else # The minimal lex program is just a single line: %%. But some broken lexes @@ -2165,13 +2360,12 @@ else { echo "configure: error: cannot find output from $LEX; giving up" 1>&2; exit 1; } fi fi - echo "$ac_t""$ac_cv_prog_lex_root" 1>&6 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root -echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6 -echo "configure:2174: checking whether yytext is a pointer" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then +echo $ac_n "checking whether yytext is a pointer... $ac_c" 1>&6 +echo "configure:2368: checking whether yytext is a pointer" 1>&5 +if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else # POSIX says lex can declare yytext either as a pointer or an array; the @@ -2181,15 +2375,19 @@ ac_cv_prog_lex_yytext_pointer=no echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c ac_save_LIBS="$LIBS" LIBS="$LIBS $LEXLIB" -cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_prog_lex_yytext_pointer=yes else @@ -2197,36 +2395,37 @@ else cat conftest.$ac_ext >&5 fi rm -f conftest* + LIBS="$ac_save_LIBS" rm -f "${LEX_OUTPUT_ROOT}.c" fi - echo "$ac_t""$ac_cv_prog_lex_yytext_pointer" 1>&6 if test $ac_cv_prog_lex_yytext_pointer = yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define YYTEXT_POINTER 1 EOF fi -test "$LEX" = flex || echo "configure: warning: flex not found, so do not modify .l files" 1>&2 +fi -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2217: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then +echo $ac_n "checking for ANSI C header files... $ac_c" 1>&6 +echo "configure:2415: checking for ANSI C header files" 1>&5 +if test "${ac_cv_header_stdc+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext < #include #include #include + EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2429: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2242,10 +2441,11 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext <conftest.$ac_ext < + EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then @@ -2260,10 +2460,11 @@ 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 <conftest.$ac_ext < + EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then @@ -2281,19 +2482,33 @@ if test $ac_cv_header_stdc = yes; then if test "$cross_compiling" = yes; then : else - cat > conftest.$ac_ext <conftest.$ac_ext < -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#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)) exit(2); -exit (0); } +#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)) + exit(2); + exit (0); +} EOF -if { (eval echo configure:2297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -2303,71 +2518,69 @@ else ac_cv_header_stdc=no fi rm -fr conftest* + fi fi fi - echo "$ac_t""$ac_cv_header_stdc" 1>&6 if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define STDC_HEADERS 1 EOF fi -for ac_hdr in limits.h string.h stdbool.h unistd.h utime.h +for ac_header in limits.h string.h stdbool.h unistd.h utime.h do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2324: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +ac_ac_Header=`echo "ac_cv_header_$ac_header" | $ac_tr_sh` +echo $ac_n "checking for $ac_header... $ac_c" 1>&6 +echo "configure:2539: checking for $ac_header" 1>&5 +if eval "test \"\${$ac_ac_Header+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext < +#include <$ac_header> + EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2550: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "$ac_ac_Header=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "$ac_ac_Header=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 +if test `eval echo '${'$ac_ac_Header'}'` = yes; then + cat >>confdefs.h <&6 fi done -echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:2361: checking return type of signal handlers" >&5 -if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then +echo $ac_n "checking return type of signal handlers... $ac_c" 1>&6 +echo "configure:2574: checking return type of signal handlers" 1>&5 +if test "${ac_cv_type_signal+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext < #include #ifdef signal -#undef signal +# undef signal #endif #ifdef __cplusplus extern "C" void (*signal (int, void (*)(int)))(int); @@ -2375,11 +2588,15 @@ extern "C" void (*signal (int, void (*)(int)))(int); void (*signal ()) (); #endif -int main() { +int +main () +{ int i; -; return 0; } + ; + return 0; +} EOF -if { (eval echo configure:2383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2600: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -2390,78 +2607,151 @@ else fi rm -f conftest* fi - echo "$ac_t""$ac_cv_type_signal" 1>&6 -cat >> confdefs.h <>confdefs.h <&6 -echo "configure:2405: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then +echo $ac_n "checking whether time.h and sys/time.h may both be included... $ac_c" 1>&6 +echo "configure:2617: checking whether time.h and sys/time.h may both be included" 1>&5 +if test "${ac_cv_header_time+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* 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 -#else -$ac_func(); -#endif +#include +#include +#include -; return 0; } +int +main () +{ +struct tm *tp; + ; + return 0; +} EOF -if { (eval echo configure:2433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + ac_cv_header_time=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + ac_cv_header_time=no fi rm -f conftest* fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 +if test $ac_cv_header_time = yes; then + cat >>confdefs.h <<\EOF +#define TIME_WITH_SYS_TIME 1 EOF - -else - echo "$ac_t""no" 1>&6 + fi -done -for ac_func in strtol strtoul + for ac_header in utime.h do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2460: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then +ac_ac_Header=`echo "ac_cv_header_$ac_header" | $ac_tr_sh` +echo $ac_n "checking for $ac_header... $ac_c" 1>&6 +echo "configure:2659: checking for $ac_header" 1>&5 +if eval "test \"\${$ac_ac_Header+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext < + +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2670: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "$ac_ac_Header=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "$ac_ac_Header=no" +fi +rm -f conftest* +fi +echo "$ac_t""`eval echo '${'$ac_ac_Header'}'`" 1>&6 +if test `eval echo '${'$ac_ac_Header'}'` = yes; then + cat >>confdefs.h <&6 +echo "configure:2695: checking for struct utimbuf" 1>&5 +if test "${fu_cv_sys_struct_utimbuf+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat >conftest.$ac_ext < +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif +#ifdef HAVE_UTIME_H +# include +#endif + +int +main () +{ +static struct utimbuf x; x.actime = x.modtime; + ; + return 0; +} +EOF +if { (eval echo configure:2725: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + fu_cv_sys_struct_utimbuf=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + fu_cv_sys_struct_utimbuf=no +fi +rm -f conftest* + +fi +echo "$ac_t""$fu_cv_sys_struct_utimbuf" 1>&6 + + if test $fu_cv_sys_struct_utimbuf = yes; then + cat >>confdefs.h <&6 +echo "configure:2750: checking for $ac_func" 1>&5 +if eval "test \"\${$ac_ac_var+set}\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat >conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + eval "$ac_ac_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + eval "$ac_ac_var=no" fi rm -f conftest* + +fi +echo "$ac_t""`eval echo '${'$ac_ac_var'}'`" 1>&6 +if test `eval echo '${'$ac_ac_var'}'` = yes; then + cat >>confdefs.h <&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 +echo "configure:2808: checking for $ac_func" 1>&5 +if eval "test \"\${$ac_ac_var+set}\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat >conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); +char (*f)(); + +int +main() +{ + +/* 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 +#else +f = $ac_func; +#endif + + ; + return 0; +} +EOF +if { (eval echo configure:2841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "$ac_ac_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "$ac_ac_var=no" +fi +rm -f conftest* + +fi +echo "$ac_t""`eval echo '${'$ac_ac_var'}'`" 1>&6 +if test `eval echo '${'$ac_ac_var'}'` = yes; then + cat >>confdefs.h <&6 -LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" + LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" fi done - # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:2517: checking for working alloca.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then +echo $ac_n "checking for working alloca.h... $ac_c" 1>&6 +echo "configure:2867: checking for working alloca.h" 1>&5 +if test "${ac_cv_working_alloca_h+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext < -int main() { +int +main() +{ char *p = alloca(2 * sizeof(int)); -; return 0; } + ; + return 0; +} EOF -if { (eval echo configure:2529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ac_cv_header_alloca_h=yes + ac_cv_working_alloca_h=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_header_alloca_h=no + ac_cv_working_alloca_h=no fi rm -f conftest* -fi -echo "$ac_t""$ac_cv_header_alloca_h" 1>&6 -if test $ac_cv_header_alloca_h = yes; then - cat >> confdefs.h <<\EOF +fi +echo "$ac_t""$ac_cv_working_alloca_h" 1>&6 +if test $ac_cv_working_alloca_h = yes; then + cat >>confdefs.h <<\EOF #define HAVE_ALLOCA_H 1 EOF fi -echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:2550: checking for alloca" >&5 -if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then +echo $ac_n "checking for alloca... $ac_c" 1>&6 +echo "configure:2904: checking for alloca" 1>&5 +if test "${ac_cv_func_alloca_works+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2940: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -2589,11 +2946,11 @@ else ac_cv_func_alloca_works=no fi rm -f conftest* -fi +fi echo "$ac_t""$ac_cv_func_alloca_works" 1>&6 if test $ac_cv_func_alloca_works = yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define HAVE_ALLOCA 1 EOF @@ -2605,18 +2962,17 @@ if test $ac_cv_func_alloca_works = no; then # 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=alloca.${ac_objext} - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define C_ALLOCA 1 EOF - -echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:2615: checking whether alloca needs Cray hooks" >&5 -if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then +echo $ac_n "checking whether alloca needs Cray hooks... $ac_c" 1>&6 +echo "configure:2971: checking whether alloca needs Cray hooks" 1>&5 +if test "${ac_cv_os_cray+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2645: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + ac_ac_var=`echo "ac_cv_func_$ac_func" | $ac_tr_sh` +echo $ac_n "checking for $ac_func... $ac_c" 1>&6 +echo "configure:3001: checking for $ac_func" 1>&5 +if eval "test \"\${$ac_ac_var+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + eval "$ac_ac_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + eval "$ac_ac_var=no" fi rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <&6 +if test `eval echo '${'$ac_ac_var'}'` = yes; then + cat >>confdefs.h <&6 fi done fi -echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:2700: checking stack direction for C alloca" >&5 -if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then +echo $ac_n "checking stack direction for C alloca... $ac_c" 1>&6 +echo "configure:3059: checking stack direction for C alloca" 1>&5 +if test "${ac_cv_c_stack_direction+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then ac_cv_c_stack_direction=0 else - cat > conftest.$ac_ext <conftest.$ac_ext < addr) ? 1 : -1; } +int main () { - exit (find_stack_direction() < 0); + exit (find_stack_direction () < 0); } EOF -if { (eval echo configure:2727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -2733,24 +3093,24 @@ else ac_cv_c_stack_direction=-1 fi rm -fr conftest* -fi fi +fi echo "$ac_t""$ac_cv_c_stack_direction" 1>&6 -cat >> confdefs.h <>confdefs.h <&6 -echo "configure:2749: checking for vprintf" >&5 -if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then +echo $ac_n "checking for vprintf... $ac_c" 1>&6 +echo "configure:3109: checking for vprintf" 1>&5 +if test "${ac_cv_func_vprintf+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_vprintf=yes" + ac_cv_func_vprintf=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_vprintf=no" + ac_cv_func_vprintf=no fi rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF +fi +echo "$ac_t""$ac_cv_func_vprintf" 1>&6 +if test $ac_cv_func_vprintf = yes; then + cat >>confdefs.h <<\EOF #define HAVE_VPRINTF 1 EOF -else - echo "$ac_t""no" 1>&6 fi if test "$ac_cv_func_vprintf" != yes; then -echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:2801: checking for _doprnt" >&5 -if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then +echo $ac_n "checking for _doprnt... $ac_c" 1>&6 +echo "configure:3164: checking for _doprnt" 1>&5 +if test "${ac_cv_func__doprnt+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func__doprnt=yes" + ac_cv_func__doprnt=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func__doprnt=no" + ac_cv_func__doprnt=no fi rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF +fi +echo "$ac_t""$ac_cv_func__doprnt" 1>&6 +if test $ac_cv_func__doprnt = yes; then + cat >>confdefs.h <<\EOF #define HAVE_DOPRNT 1 EOF -else - echo "$ac_t""no" 1>&6 fi fi - - - if test x = y; then - for ac_func in DONE_WORKING_MALLOC_CHECK -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2859: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* 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 -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:2887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - fi - ac_kludge=HAVE_DONE_WORKING_MALLOC_CHECK - cat >> confdefs.h <>confdefs.h <&6 -echo "configure:2919: checking for working malloc" >&5 -if eval "test \"`echo '$''{'jm_cv_func_working_malloc'+set}'`\" = set"; then + echo $ac_n "checking for working malloc... $ac_c" 1>&6 +echo "configure:3224: checking for working malloc" 1>&5 +if test "${jm_cv_func_working_malloc+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then jm_cv_func_working_malloc=no else - cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then jm_cv_func_working_malloc=yes else @@ -2944,94 +3249,35 @@ else jm_cv_func_working_malloc=no fi rm -fr conftest* + fi fi - echo "$ac_t""$jm_cv_func_working_malloc" 1>&6 if test $jm_cv_func_working_malloc = no; then - LIBOBJS="$LIBOBJS malloc.o" - cat >> confdefs.h <>confdefs.h <&6 -echo "configure:2967: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* 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 -#else -$ac_func(); -#endif - -; return 0; } + cat >>confdefs.h <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - fi - ac_kludge=HAVE_DONE_WORKING_REALLOC_CHECK - cat >> confdefs.h <&6 -echo "configure:3027: checking for working realloc" >&5 -if eval "test \"`echo '$''{'jm_cv_func_working_realloc'+set}'`\" = set"; then + echo $ac_n "checking for working realloc... $ac_c" 1>&6 +echo "configure:3273: checking for working realloc" 1>&5 +if test "${jm_cv_func_working_realloc+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then jm_cv_func_working_realloc=no else - cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then jm_cv_func_working_realloc=yes else @@ -3052,25 +3298,24 @@ else jm_cv_func_working_realloc=no fi rm -fr conftest* + fi fi - echo "$ac_t""$jm_cv_func_working_realloc" 1>&6 if test $jm_cv_func_working_realloc = no; then - LIBOBJS="$LIBOBJS realloc.o" - cat >> confdefs.h <>confdefs.h <&6 -echo "configure:3073: checking for MSDOS, Win95 or WinNT" >&5 -if eval "test \"`echo '$''{'fp_cv_os_microsoft'+set}'`\" = set"; then +echo $ac_n "checking for MSDOS$ac_c" 1>&6 +echo "configure:3318: checking for MSDOS, Win95 or WinNT" 1>&5 +if test "${fp_cv_os_microsoft+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$COMSPEC"; then @@ -3084,38 +3329,37 @@ else fi fi - echo "$ac_t""$fp_cv_os_microsoft" 1>&6 -echo $ac_n "checking the default charset""... $ac_c" 1>&6 -echo "configure:3091: checking the default charset" >&5 +echo $ac_n "checking the default charset... $ac_c" 1>&6 +echo "configure:3335: checking the default charset" 1>&5 if test -n "${DEFAULT_CHARSET+set}"; then echo "$ac_t""$DEFAULT_CHARSET" 1>&6 - cat >> confdefs.h <>confdefs.h <&6 - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define DEFAULT_CHARSET "Latin-1" EOF else echo "$ac_t""IBM-PC" 1>&6 - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define DEFAULT_CHARSET "IBM-PC" EOF fi -echo $ac_n "checking if malloc debugging is wanted""... $ac_c" 1>&6 -echo "configure:3113: checking if malloc debugging is wanted" >&5 +echo $ac_n "checking if malloc debugging is wanted... $ac_c" 1>&6 +echo "configure:3357: checking if malloc debugging is wanted" 1>&5 # Check whether --with-dmalloc or --without-dmalloc was given. if test "${with_dmalloc+set}" = set; then withval="$with_dmalloc" if test "$withval" = yes; then echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define WITH_DMALLOC 1 EOF @@ -3128,11 +3372,8 @@ else echo "$ac_t""no" 1>&6 fi - - - - echo $ac_n "checking whether NLS is wanted""... $ac_c" 1>&6 -echo "configure:3136: checking whether NLS is wanted" >&5 + echo $ac_n "checking whether NLS is wanted... $ac_c" 1>&6 +echo "configure:3377: checking whether NLS is wanted" 1>&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" @@ -3154,27 +3395,26 @@ else fi if test $enable_nls = yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define ENABLE_NLS 1 EOF - # Check whether --with-catgets or --without-catgets was given. if test "${with_catgets+set}" = set; then withval="$with_catgets" - echo "configure: warning: catgets not supported, --with-catgets ignored" 1>&2 + echo "configure: WARNING: catgets not supported, --with-catgets ignored" 1>&2 fi - for ac_func in gettext do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3173: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then +ac_ac_var=`echo "ac_cv_func_$ac_func" | $ac_tr_sh` +echo $ac_n "checking for $ac_func... $ac_c" 1>&6 +echo "configure:3413: checking for $ac_func" 1>&5 +if eval "test \"\${$ac_ac_var+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3446: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + eval "$ac_ac_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + eval "$ac_ac_var=no" fi rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 +if test `eval echo '${'$ac_ac_var'}'` = yes; then + cat >>confdefs.h <&6 fi done - echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 -echo "configure:3226: checking for gettext in -lintl" >&5 -ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "checking for gettext in -lintl... $ac_c" 1>&6 +echo "configure:3468: checking for gettext in -lintl" 1>&5 +if test "${ac_cv_lib_intl_gettext+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" -cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + ac_cv_lib_intl_gettext=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + ac_cv_lib_intl_gettext=no fi rm -f conftest* -LIBS="$ac_save_LIBS" +LIBS="$ac_save_LIBS" fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 +echo "$ac_t""$ac_cv_lib_intl_gettext" 1>&6 +if test $ac_cv_lib_intl_gettext = yes; then : -else - echo "$ac_t""no" 1>&6 fi if test $ac_cv_lib_intl_gettext$ac_cv_func_gettext != nono; then - echo $ac_n "checking whether the included gettext is preferred""... $ac_c" 1>&6 -echo "configure:3267: checking whether the included gettext is preferred" >&5 + echo $ac_n "checking whether the included gettext is preferred... $ac_c" 1>&6 +echo "configure:3510: checking whether the included gettext is preferred" 1>&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" @@ -3281,64 +3524,63 @@ fi fi if test $with_included_gettext = yes; then LIBOBJS="$LIBOBJS gettext.o" - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define HAVE_GETTEXT 1 EOF - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define HAVE_DCGETTEXT 1 EOF else - for ac_hdr in libintl.h + for ac_header in libintl.h do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3298: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +ac_ac_Header=`echo "ac_cv_header_$ac_header" | $ac_tr_sh` +echo $ac_n "checking for $ac_header... $ac_c" 1>&6 +echo "configure:3541: checking for $ac_header" 1>&5 +if eval "test \"\${$ac_ac_Header+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext < +#include <$ac_header> + EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3308: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3552: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "$ac_ac_Header=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "$ac_ac_Header=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 +if test `eval echo '${'$ac_ac_Header'}'` = yes; then + cat >>confdefs.h <&6 fi done for ac_func in dcgettext gettext do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3337: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then +ac_ac_var=`echo "ac_cv_func_$ac_func" | $ac_tr_sh` +echo $ac_n "checking for $ac_func... $ac_c" 1>&6 +echo "configure:3579: checking for $ac_func" 1>&5 +if eval "test \"\${$ac_ac_var+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + eval "$ac_ac_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + eval "$ac_ac_var=no" fi rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 +if test `eval echo '${'$ac_ac_var'}'` = yes; then + cat >>confdefs.h <&6 fi done fi - for ac_hdr in locale.h + for ac_header in locale.h do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3395: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +ac_ac_Header=`echo "ac_cv_header_$ac_header" | $ac_tr_sh` +echo $ac_n "checking for $ac_header... $ac_c" 1>&6 +echo "configure:3639: checking for $ac_header" 1>&5 +if eval "test \"\${$ac_ac_Header+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext < +#include <$ac_header> + EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3405: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3650: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "$ac_ac_Header=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "$ac_ac_Header=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 +if test `eval echo '${'$ac_ac_Header'}'` = yes; then + cat >>confdefs.h <&6 fi done for ac_func in getcwd setlocale stpcpy do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3434: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then +ac_ac_var=`echo "ac_cv_func_$ac_func" | $ac_tr_sh` +echo $ac_n "checking for $ac_func... $ac_c" 1>&6 +echo "configure:3677: checking for $ac_func" 1>&5 +if eval "test \"\${$ac_ac_var+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + eval "$ac_ac_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + eval "$ac_ac_var=no" fi rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 +if test `eval echo '${'$ac_ac_var'}'` = yes; then + cat >>confdefs.h <&6 fi done if test $ac_cv_header_locale_h = yes; then - echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:3488: checking for LC_MESSAGES" >&5 -if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then + echo $ac_n "checking for LC_MESSAGES... $ac_c" 1>&6 +echo "configure:3733: checking for LC_MESSAGES" 1>&5 +if test "${am_cv_val_LC_MESSAGES+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext <conftest.$ac_ext < -int main() { +int +main() +{ return LC_MESSAGES -; return 0; } + ; + return 0; +} EOF -if { (eval echo configure:3500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else @@ -3506,11 +3755,11 @@ else am_cv_val_LC_MESSAGES=no fi rm -f conftest* -fi +fi echo "$ac_t""$am_cv_val_LC_MESSAGES" 1>&6 if test $am_cv_val_LC_MESSAGES = yes; then - cat >> confdefs.h <<\EOF + cat >>confdefs.h <<\EOF #define HAVE_LC_MESSAGES 1 EOF @@ -3518,7 +3767,7 @@ EOF fi if test -z "$ALL_LINGUAS"; then - echo "configure: warning: This package does not install translations yet." 1>&2 + echo "configure: WARNING: This package does not install translations yet." 1>&2 else ac_items="$ALL_LINGUAS" for ac_item in $ac_items; do @@ -3530,8 +3779,8 @@ EOF - echo $ac_n "checking which translations to install""... $ac_c" 1>&6 -echo "configure:3535: checking which translations to install" >&5 + echo $ac_n "checking which translations to install... $ac_c" 1>&6 +echo "configure:3784: checking which translations to install" 1>&5 if test -z "$LINGUAS"; then ac_print="$ALL_LINGUAS" MOFILES="$ALL_MOFILES" @@ -3554,12 +3803,12 @@ echo "configure:3535: checking which translations to install" >&5 fi if test "x$prefix" = xNONE; then - cat >> confdefs.h <>confdefs.h <> confdefs.h <>confdefs.h < confcache <<\EOF +cat >confcache <<\EOF # 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. It is not useful on other systems. @@ -3610,13 +3858,11 @@ EOF # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else + esac >>confcache +if cmp -s $cache_file confcache; then :; else if test -w $cache_file; then echo "updating cache $cache_file" - cat confcache > $cache_file + cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi @@ -3636,16 +3882,12 @@ if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' fi -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - DEFS=-DHAVE_CONFIG_H -# Without the "./", some shells look in PATH for config.status. : ${CONFIG_STATUS=./config.status} - +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS <$CONFIG_STATUS < $CONFIG_STATUS <>$CONFIG_STATUS <> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@PACKAGE@%$PACKAGE%g -s%@VERSION@%$VERSION%g -s%@ACLOCAL@%$ACLOCAL%g -s%@AUTOCONF@%$AUTOCONF%g -s%@AUTOMAKE@%$AUTOMAKE%g -s%@AUTOHEADER@%$AUTOHEADER%g -s%@MAKEINFO@%$MAKEINFO%g -s%@SET_MAKE@%$SET_MAKE%g -s%@AT_TESTPATH@%$AT_TESTPATH%g -s%@ECHO_N@%$ECHO_N%g -s%@ECHO_C@%$ECHO_C%g -s%@CC@%$CC%g -s%@CPP@%$CPP%g -s%@host@%$host%g -s%@host_alias@%$host_alias%g -s%@host_cpu@%$host_cpu%g -s%@host_vendor@%$host_vendor%g -s%@host_os@%$host_os%g -s%@build@%$build%g -s%@build_alias@%$build_alias%g -s%@build_cpu@%$build_cpu%g -s%@build_vendor@%$build_vendor%g -s%@build_os@%$build_os%g -s%@RANLIB@%$RANLIB%g -s%@LN_S@%$LN_S%g -s%@LIBTOOL@%$LIBTOOL%g -s%@U@%$U%g -s%@ANSI2KNR@%$ANSI2KNR%g -s%@LEX@%$LEX%g -s%@LEXLIB@%$LEXLIB%g -s%@LEX_OUTPUT_ROOT@%$LEX_OUTPUT_ROOT%g -s%@LIBOBJS@%$LIBOBJS%g -s%@ALLOCA@%$ALLOCA%g -s%@USE_NLS_TRUE@%$USE_NLS_TRUE%g -s%@USE_NLS_FALSE@%$USE_NLS_FALSE%g -s%@ALL_LINGUAS@%$ALL_LINGUAS%g -s%@ALL_POFILES@%$ALL_POFILES%g -s%@ALL_MOFILES@%$ALL_MOFILES%g -s%@MOFILES@%$MOFILES%g -s%@LTALLOCA@%$LTALLOCA%g -s%@LTLIBOBJS@%$LTLIBOBJS%g +cat >>$CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +cat >>$CONFIG_STATUS < conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/%@/@@/; s/@%/@@/; s/%;t t\$/@;t t/; /@;t t\$/s/[\\\\&%]/\\\\&/g; + s/@@/%@/; s/@@/@%/; s/@;t t\$/%;t t/' >\$ac_cs_root.subs <<\\CEOF +s%@SHELL@%$SHELL%;t t +s%@CFLAGS@%$CFLAGS%;t t +s%@CPPFLAGS@%$CPPFLAGS%;t t +s%@CXXFLAGS@%$CXXFLAGS%;t t +s%@FFLAGS@%$FFLAGS%;t t +s%@DEFS@%$DEFS%;t t +s%@LDFLAGS@%$LDFLAGS%;t t +s%@LIBS@%$LIBS%;t t +s%@exec_prefix@%$exec_prefix%;t t +s%@prefix@%$prefix%;t t +s%@program_transform_name@%$program_transform_name%;t t +s%@bindir@%$bindir%;t t +s%@sbindir@%$sbindir%;t t +s%@libexecdir@%$libexecdir%;t t +s%@datadir@%$datadir%;t t +s%@sysconfdir@%$sysconfdir%;t t +s%@sharedstatedir@%$sharedstatedir%;t t +s%@localstatedir@%$localstatedir%;t t +s%@libdir@%$libdir%;t t +s%@includedir@%$includedir%;t t +s%@oldincludedir@%$oldincludedir%;t t +s%@infodir@%$infodir%;t t +s%@mandir@%$mandir%;t t +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%;t t +s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%;t t +s%@INSTALL_DATA@%$INSTALL_DATA%;t t +s%@PACKAGE@%$PACKAGE%;t t +s%@VERSION@%$VERSION%;t t +s%@ACLOCAL@%$ACLOCAL%;t t +s%@AUTOCONF@%$AUTOCONF%;t t +s%@AUTOMAKE@%$AUTOMAKE%;t t +s%@AUTOHEADER@%$AUTOHEADER%;t t +s%@MAKEINFO@%$MAKEINFO%;t t +s%@SET_MAKE@%$SET_MAKE%;t t +s%@AT_TESTPATH@%$AT_TESTPATH%;t t +s%@ECHO_N@%$ECHO_N%;t t +s%@ECHO_C@%$ECHO_C%;t t +s%@CC@%$CC%;t t +s%@CPP@%$CPP%;t t +s%@host@%$host%;t t +s%@host_alias@%$host_alias%;t t +s%@host_cpu@%$host_cpu%;t t +s%@host_vendor@%$host_vendor%;t t +s%@host_os@%$host_os%;t t +s%@build@%$build%;t t +s%@build_alias@%$build_alias%;t t +s%@build_cpu@%$build_cpu%;t t +s%@build_vendor@%$build_vendor%;t t +s%@build_os@%$build_os%;t t +s%@RANLIB@%$RANLIB%;t t +s%@LN_S@%$LN_S%;t t +s%@LIBTOOL@%$LIBTOOL%;t t +s%@U@%$U%;t t +s%@ANSI2KNR@%$ANSI2KNR%;t t +s%@LEX@%$LEX%;t t +s%@LEX_OUTPUT_ROOT@%$LEX_OUTPUT_ROOT%;t t +s%@LEXLIB@%$LEXLIB%;t t +s%@LIBOBJS@%$LIBOBJS%;t t +s%@ALLOCA@%$ALLOCA%;t t +s%@USE_NLS_TRUE@%$USE_NLS_TRUE%;t t +s%@USE_NLS_FALSE@%$USE_NLS_FALSE%;t t +s%@ALL_LINGUAS@%$ALL_LINGUAS%;t t +s%@ALL_POFILES@%$ALL_POFILES%;t t +s%@ALL_MOFILES@%$ALL_MOFILES%;t t +s%@MOFILES@%$MOFILES%;t t +s%@LTALLOCA@%$LTALLOCA%;t t +s%@LTLIBOBJS@%$LTLIBOBJS%;t t +CEOF + +EOF + + cat >>$CONFIG_STATUS <<\EOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds="" + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $ac_cs_root.subs >$ac_cs_root.sfrag else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + sed "${ac_end}q" $ac_cs_root.subs >$ac_cs_root.sfrag + fi + if test ! -s $ac_cs_root.sfrag; then + ac_more_lines=false + rm -f $ac_cs_root.sfrag + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $ac_cs_root.sfrag) >$ac_cs_root.s$ac_sed_frag + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $ac_cs_root.s$ac_sed_frag" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $ac_cs_root.s$ac_sed_frag" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +cat >>$CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case "$ac_file" in @@ -3824,62 +4180,75 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then .) srcdir=. if test -z "$ac_dots"; then top_srcdir=. else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + /* | ?:/*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; *) # Relative path. srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" top_srcdir="$ac_dots$ac_given_srcdir" ;; esac case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; + [/$]* | ?:/*) INSTALL="$ac_given_INSTALL" ;; *) INSTALL="$ac_dots$ac_given_INSTALL" ;; esac echo creating "$ac_file" rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + configure_input="Generated automatically from `echo $ac_file_in | + sed 's%.*/%%'` by configure." case "$ac_file" in - *Makefile*) ac_comsub="1i\\ + *[Mm]akefile*) ac_comsub="1i\\ # $configure_input" ;; *) ac_comsub= ;; esac - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + # Don't redirect the output to AC_FILE directly: use `mv' so that updating + # is atomic, and doesn't need trapping. + ac_file_inputs=`echo $ac_file_in | + sed -e "s%^%$ac_given_srcdir/%;s%:% $ac_given_srcdir/%g"` + for ac_file_input in $ac_file_inputs; + do + test -f "$ac_file_input" || + { echo "configure: error: cannot find input file \`$ac_file_input'" 1>&2; exit 1; } + done +EOF +cat >>$CONFIG_STATUS < $ac_file +$ac_vpsub +$extrasub +EOF +cat >>$CONFIG_STATUS <<\EOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s%@configure_input@%$configure_input%;t t +s%@srcdir@%$srcdir%;t t +s%@top_srcdir@%$top_srcdir%;t t +s%@INSTALL@%$INSTALL%;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$ac_cs_root.out + mv $ac_cs_root.out $ac_file + fi; done -rm -f conftest.s* +rm -f $ac_cs_root.s* +EOF +cat >>$CONFIG_STATUS <<\EOF + +# +# CONFIG_HEADER section. +# # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dA='s%^\([ ]*\)#\([ ]*<>[ ][ ]*\)' ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' ac_dC='\3' -ac_dD='%g' -# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_dD='%;t t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='\([ ]\)%\1#\2define\3' +ac_uB='$%\1#\2define\3' ac_uC=' ' -ac_uD='\4%g' -# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_eB='$%\1#\2define\3' -ac_eC=' ' -ac_eD='%g' +ac_uD='%;t t' -if test "${CONFIG_HEADERS+set}" != set; then -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -fi for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case "$ac_file" in @@ -3890,65 +4259,108 @@ for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then echo creating $ac_file - rm -f conftest.frag conftest.in conftest.out - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - cat $ac_file_inputs > conftest.in + rm -f $ac_cs_root.frag $ac_cs_root.in $ac_cs_root.out + ac_file_inputs=`echo $ac_file_in | + sed -e "s%^%$ac_given_srcdir/%;s%:% $ac_given_srcdir/%g"` + for ac_file_input in $ac_file_inputs; + do + test -f "$ac_file_input" || + { echo "configure: error: cannot find input file \`$ac_file_input'" 1>&2; exit 1; } + done + # Remove the trailing spaces. + sed -e 's/[ ]*$//' $ac_file_inputs >$ac_cs_root.in EOF -# Transform confdefs.h into a sed script conftest.vals that substitutes -# the proper values into config.h.in to produce config.h. And first: -# Protect against being on the right side of a sed subst in config.status. -# Protect against being in an unquoted here document in config.status. -rm -f conftest.vals -cat > conftest.hdr <<\EOF +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +cat >$ac_cs_root.hdr <<\EOF s/[\\&%]/\\&/g s%[\\$`]%\\&%g -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp -s%ac_d%ac_u%gp -s%ac_u%ac_e%gp +t clear +: clear +s%^[ ]*#[ ]*define[ ][ ]*\(\([^ (][^ (]*\)([^)]*)\)[ ]*\(.*\)$%${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD}%gp +t cleanup +s%^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp +: cleanup EOF -sed -n -f conftest.hdr confdefs.h > conftest.vals -rm -f conftest.hdr +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC_DEFINE to be honored. +uniq confdefs.h | sed -n -f $ac_cs_root.hdr >conftest.defines +sed -e 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f $ac_cs_root.hdr # This sed command replaces #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. -cat >> conftest.vals <<\EOF +cat >>conftest.undefs <<\EOF s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% EOF -# Break up conftest.vals because some shells have a limit on -# the size of here documents, and old seds have small limits too. +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if egrep "^[ ]*#[ ]*define" $ac_cs_root.in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $ac_cs_root.frag. + echo ' cat >$ac_cs_root.frag <>$CONFIG_STATUS + echo ': t' >>$CONFIG_STATUS + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $ac_cs_root.frag $ac_cs_root.in >$ac_cs_root.out + rm -f $ac_cs_root.in + mv $ac_cs_root.out $ac_cs_root.in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # egrep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail -while : +while grep . conftest.undefs >/dev/null do - ac_lines=`grep -c . conftest.vals` - # grep -c gives empty output for an empty file on some AIX systems. - if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi - # Write a limited-size here document to conftest.frag. - echo ' cat > conftest.frag <> $CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS + # Write a limited-size here document to $ac_cs_root.frag. + echo ' cat >$ac_cs_root.frag <>$CONFIG_STATUS + echo ': t' >>$CONFIG_STATUS + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in -' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail - rm -f conftest.vals - mv conftest.tail conftest.vals + sed -f $ac_cs_root.frag $ac_cs_root.in >$ac_cs_root.out + rm -f $ac_cs_root.in + mv $ac_cs_root.out $ac_cs_root.in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs done -rm -f conftest.vals - -cat >> $CONFIG_STATUS <<\EOF - rm -f conftest.frag conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > conftest.h - cat conftest.in >> conftest.h - rm -f conftest.in - if cmp -s $ac_file conftest.h 2>/dev/null; then +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\EOF + rm -f $ac_cs_root.frag $ac_cs_root.h + echo "/* $ac_file. Generated automatically by configure. */" >$ac_cs_root.h + cat $ac_cs_root.in >>$ac_cs_root.h + rm -f $ac_cs_root.in + if cmp -s $ac_file $ac_cs_root.h 2>/dev/null; then echo "$ac_file is unchanged" - rm -f conftest.h + rm -f $ac_cs_root.h else # Remove last slash and all that follows it. Not all systems have dirname. ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` @@ -3957,21 +4369,37 @@ cat >> $CONFIG_STATUS <<\EOF test ! -d "$ac_dir" && mkdir "$ac_dir" fi rm -f $ac_file - mv conftest.h $ac_file + mv $ac_cs_root.h $ac_file fi fi; done - EOF -cat >> $CONFIG_STATUS <>$CONFIG_STATUS <<\EOF +# +# CONFIG_COMMANDS section. +# +for ac_file in .. $CONFIG_COMMANDS; do if test "x$ac_file" != x..; then + ac_dest=`echo "$ac_file"|sed 's%:.*%%'` + ac_source=`echo "$ac_file"|sed 's%[^:]*:%%'` + echo "executing commands of $ac_dest" + case "$ac_dest" in + default-1 ) test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h ;; + esac +fi;done EOF -cat >> $CONFIG_STATUS <<\EOF -test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h + +cat >>$CONFIG_STATUS <<\EOF + +# +# CONFIG_COMMANDS section. +# exit 0 EOF chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 +trap 'exit 1' 1 2 15 + +test "$no_create" = yes || $SHELL $CONFIG_STATUS || exit 1 diff --git a/configure.in b/configure.in index bd5af30..700ab06 100644 --- a/configure.in +++ b/configure.in @@ -1,13 +1,13 @@ # Configure template for GNU recode. -# Copyright (C) 1994, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +# Copyright (C) 1994, 96, 97, 98, 99, 00 Free Software Foundation, Inc. # Process this file with autoconf to produce a configure script. AC_INIT(src/recode.c) AC_PREREQ(2.12) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(recode, 3.5c) +AM_INIT_AUTOMAKE(recode, 3.5d) AT_CONFIG(../src) -ALL_LINGUAS="da de el es fr it nl pl pt sl sv" +ALL_LINGUAS="da de el es fr gl it nl pl pt sl sv" AC_PROG_CC AC_AIX @@ -18,12 +18,12 @@ AC_ISC_POSIX AM_C_PROTOTYPES AC_C_CONST AC_C_INLINE -AM_PROG_LEX -test "$LEX" = flex || AC_MSG_WARN([flex not found, so do not modify .l files]) +ad_AC_PROG_FLEX AC_HEADER_STDC AC_CHECK_HEADERS(limits.h string.h stdbool.h unistd.h utime.h) AC_TYPE_SIGNAL +jm_STRUCT_UTIMBUF AC_CHECK_FUNCS(dup2 rename strerror) AC_REPLACE_FUNCS(strtol strtoul) diff --git a/contrib/Makefile.in b/contrib/Makefile.in index 984cd30..781c9fd 100644 --- a/contrib/Makefile.in +++ b/contrib/Makefile.in @@ -82,44 +82,25 @@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ CC = @CC@ CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ LEX = @LEX@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ MOFILES = @MOFILES@ -MSGFMT = @MSGFMT@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ RANLIB = @RANLIB@ U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ VERSION = @VERSION@ -l = @l@ AUTOMAKE_OPTIONS = gnits diff --git a/contrib/README b/contrib/README index 77c1894..b517065 100644 --- a/contrib/README +++ b/contrib/README @@ -87,6 +87,13 @@ . + Programs +. - libiconv + + This comprehensive charset converter library revolves around Unicode, + and support Asian encodings among many others. Even `recode' uses it! + ftp://ftp.ilog.fr/pub/Users/haible/gnu/libiconv-1.3.tar.gz + Bruno Haible + . - tcs Here is the main recoding tool from the Plan9 project. @@ -127,6 +134,16 @@ http://research.de.uu.net:8080/~gnu/b2c/b2c-2.1.tar.gz Jörg Heitkötter , 1997-11. +. - PyRecode + + This wrapper provides Free `recode' functionnality to Python programs. + http://www.suxers.de/PyRecode.tgz + Andreas Jung + + Also see: + http://www.vex.net/parnassus/apyllo.py?find=recode + http://www.suxers.de/python/pyrecode.htm + .* Non-Unix ports or alikes Please mailto:recode-bugs@iro.umontreal.ca if you are aware of various diff --git a/doc/ChangeLog b/doc/ChangeLog index 8489994..e7cfdeb 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,53 @@ +2000-06-26 François Pinard + + * recode.texi (Debugging): New node. + (Test): Renamed from Debugging. + + * tables.py (Mnemonics.digest_iso10646_def): Handle varying + capitalisation in file others.def. + +2000-05-27 François Pinard + + * Makefile.am (MOSTLYCLEANFILES): Define to recode.ops. + + * tables.py (Strips): Generate strip data only when needed. + * Makemore (fr-rfc1345.texi): Depends on and use mnemonics,ds. + +2000-04-23 Bruno Haible + + * tables.py: While generating libiconv.h, do not produce those + declarations which are now contained in iconv.h. + +2000-03-22 François Pinard + + * NomsSeulsfinal.lst: Updated. + Reported by François Yergeau. + +2000-03-21 François Pinard + + * tables.py: Reorganised with classes, no more globals. + +2000-02-07 François Pinard + + * NomsSeulsfinal.lst: Update replacing noms_juc_19981216.txt. + * Makemore (NOMS_CARACS): Adjusted. + Reported by Patrick Andries. + +2000-02-06 François Pinard + + * Makemore (ENCODINGS_DEF): Use ../ instead of top_srcdir. + + * tables.py: Nomenclature change of symbol to alias. + +2000-02-05 François Pinard + + * recode.texi: Document tree as a special charset. + +1999-12-30 François Pinard + + * recode.texi (Charset overview): Document unreachable charsets. + Reported by François-Xavier Bergot + 1999-12-29 François Pinard * recode.texi (libiconv): Adjust to reflect the merge. @@ -10,7 +60,7 @@ 1999-12-24 François Pinard * recode.texi (libiconv): New name for iconv node. - + 1999-12-23 François Pinard * recode.texi (iconv, Vietnamese): New nodes. diff --git a/doc/Makefile.am b/doc/Makefile.am index 557fcfc..0826c1d 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,5 +1,5 @@ # Makefile for `recode' documentation. -# Copyright © 1994, 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +# Copyright © 1994, 95, 96, 97, 98, 99, 00 Free Software Foundation, Inc. # François Pinard # This program is free software; you can redistribute it and/or modify @@ -22,5 +22,7 @@ info_TEXINFOS = recode.texi EXTRA_DIST = libiconv.texi rfc1345.texi File-Latin1 help2man Makemore \ tables.py +MOSTLYCLEANFILES = recode.ops + recode.info: libiconv.texi rfc1345.texi recode.dvi: libiconv.texi rfc1345.texi diff --git a/doc/Makefile.in b/doc/Makefile.in index dc85dc0..3d66543 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -11,7 +11,7 @@ # PARTICULAR PURPOSE. # Makefile for `recode' documentation. -# Copyright © 1994, 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +# Copyright © 1994, 95, 96, 97, 98, 99, 00 Free Software Foundation, Inc. # François Pinard # This program is free software; you can redistribute it and/or modify @@ -82,50 +82,33 @@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ CC = @CC@ CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ LEX = @LEX@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ MOFILES = @MOFILES@ -MSGFMT = @MSGFMT@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ RANLIB = @RANLIB@ U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ VERSION = @VERSION@ -l = @l@ AUTOMAKE_OPTIONS = gnits info_TEXINFOS = recode.texi EXTRA_DIST = libiconv.texi rfc1345.texi File-Latin1 help2man Makemore tables.py + +MOSTLYCLEANFILES = recode.ops mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = @@ -339,6 +322,7 @@ installdirs: mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) clean-generic: diff --git a/doc/Makemore b/doc/Makemore index 3547f62..49eb01b 100644 --- a/doc/Makemore +++ b/doc/Makemore @@ -1,5 +1,5 @@ # Special Makefile for `recode' tables. -*- Makefile -*- -# Copyright © 1997, 1998, 1999 Progiciels Bourbeau-Pinard inc. +# Copyright © 1997, 1998, 1999, 2000 Progiciels Bourbeau-Pinard inc. # François Pinard , 1997. # This program is free software; you can redistribute it and/or modify @@ -44,10 +44,13 @@ MAPURL = ftp://ftp.unicode.org/MAPPINGS MNEMONICS_DS = mnemonic,ds ISO10646_DEF = $(CHSET)/iso10646.def CHARSETS_DEF = $(CHSET)/charsets.def -ENCODINGS_DEF = $(top_srcdir)/libiconv/encodings.def -MNEMONICS_DS = keld-email/mnemonics,ds +ENCODINGS_DEF = ../libiconv/encodings.def +MNEMONICS_DS = keld-email/iso10646.def +ISO10646_DEF = keld-email/iso10646.def CHARSETS_DEF = keld-email/charsets.def +MNEMONICS_DS = keld-email/iso10646.def keld-email/other.def keld-email/control.def NOMS_CARACS = noms_juc_19981216.txt +NOMS_CARACS = NomsSeulsfinal.lst PYTHON = python SURF = netscape @@ -102,8 +105,8 @@ $(srcdir)/rfc1345.texi: tables.py $(MNEMONICS_DS) $(CHARSETS_DEF) mv $(srcdir)/strip-pool.c $(top_srcdir)/src/strip-pool.c mv $(srcdir)/strip-data.c $(top_srcdir)/src/strip-data.c -$(srcdir)/fr-rfc1345.texi: tables.py $(CHARSETS_DEF) - cd $(srcdir) && $(PYTHON) tables.py -Ft $(CHARSETS_DEF) +$(srcdir)/fr-rfc1345.texi: tables.py $(MNEMONICS_DS) $(CHARSETS_DEF) + cd $(srcdir) && $(PYTHON) tables.py -Ft $(MNEMONICS_DS) $(CHARSETS_DEF) # -----------------------------------# # External files built into recode. # diff --git a/doc/help2man b/doc/help2man index fb5f16a..1728036 100755 --- a/doc/help2man +++ b/doc/help2man @@ -27,7 +27,7 @@ use Text::Tabs qw(expand); use POSIX qw(strftime setlocale LC_TIME); my $this_program = 'help2man'; -my $this_version = '1.019'; +my $this_version = '1.020'; my $version_info = <temporary + recode -v ISO_10646-UCS-2..HTML_4.0 ', then `recode' might have done a bit more that +you wanted. In this case, your input file was half-`UTF-8', +half-`HTML' already, that is, a mixed file (*note Mixed::). There is a +special `-d' switch for this case. So, your might be end up calling +`recode -fd nicepage'. Until you are quite sure that you accept +overwriting your input file whatever what, I recommend that you stick +with filter mode. + + If, after such experiments, you seriously think that the `recode' +program does not behave properly, there might be a genuine bug in the +program itself, in which case I invite you to to contribute a bug +report, *Note Contributing::. +  File: recode.info, Node: Library, Next: Universal, Prev: Invoking recode, Up: Top @@ -945,7 +1030,7 @@ error, the possible actions currently are: `fail_level', `abort_level' and `error_so_far', for more information about how errors are handled. - --------- Notes en bas de page --------- + ---------- Footnotes ---------- (1) The minimality of an `UTF-8' encoding is guaranteed on output, but currently, it is not checked on input. @@ -1017,7 +1102,7 @@ complex syntax to `recode' users, when it is simple to assimilate * count-characters:: Frequency count of characters * dump-with-names:: Fully interpreted UCS dump - --------- Notes en bas de page --------- + ---------- Footnotes ---------- (1) It is not probable that `recode' will ever support `UTF-1'. @@ -1025,85 +1110,3 @@ complex syntax to `recode' users, when it is simple to assimilate charsets, the `--strict' (`-s') option decides what happens: either the character is dropped, or a reversible mapping is produced on the fly. - -File: recode.info, Node: UCS-2, Next: UCS-4, Prev: Universal, Up: Universal - -Universal Character Set, 2 bytes -================================ - - One surface of `UCS' is usable for the subset defined by its first -sixty thousand characters (in fact, 31 * 2^11 codes), and uses exactly -two bytes per character. It is a mere dump of the internal memory -representation which is _natural_ for this subset and as such, conveys -with it endianness problems. - - A non-empty `UCS-2' file normally begins with a so called "byte -order mark", having value `0xFEFF'. The value `0xFFFE' is not an `UCS' -character, so if this value is seen at the beginning of a file, -`recode' reacts by swapping all pairs of bytes. The library also -properly reacts to other occurrences of `0xFEFF' or `0xFFFE' elsewhere -than at the beginning, because concatenation of `UCS-2' files should -stay a simple matter, but it might trigger a diagnostic about non -canonical input. - - By default, when producing an `UCS-2' file, `recode' always outputs -the high order byte before the low order byte. But this could be -easily overridden through the `21-Permutation' surface (*note -Permutations::). For example, the command: - - recode u8..u2/21 < INPUT > OUTPUT - -asks for an `UTF-8' to `UCS-2' conversion, with swapped byte output. - - Use `UCS-2' as a genuine charset. This charset is available in -`recode' under the name `ISO-10646-UCS-2'. Accepted aliases are -`UCS-2', `BMP', `rune' and `u2'. - - The `recode' library is able to combine `UCS-2' some sequences of -codes into single code characters, to represent a few diacriticized -characters, ligatures or diphtongs which have been included to ease -mapping with other existing charsets. It is also able to explode such -single code characters into the corresponding sequence of codes. The -request syntax for triggering such operations is rudimentary and -temporary. The `combined-UCS-2' pseudo character set is a special form -of `UCS-2' in which known combinings have been replaced by the simpler -code. Using `combined-UCS-2' instead of `UCS-2' in an _after_ position -of a request forces a combining step, while using `combined-UCS-2' -instead of `UCS-2' in a _before_ position of a request forces an -exploding step. For the time being, one has to resort to advanced -request syntax to achieve other effects. For example: - - recode u8..co,u2..u8 < INPUT > OUTPUT - -copies an `UTF-8' INPUT over OUTPUT, still to be in `UTF-8', yet -merging combining characters into single codes whenever possible. - - -File: recode.info, Node: UCS-4, Next: UTF-7, Prev: UCS-2, Up: Universal - -Universal Character Set, 4 bytes -================================ - - Another surface of `UCS' uses exactly four bytes per character, and -is a mere dump of the internal memory representation which is _natural_ -for the whole charset and as such, conveys with it endianness problems. - - Use it as a genuine charset. This charset is available in `recode' -under the name `ISO-10646-UCS-4'. Accepted aliases are `UCS', `UCS-4', -`ISO_10646', `10646' and `u4'. - - -File: recode.info, Node: UTF-7, Next: UTF-8, Prev: UCS-4, Up: Universal - -Universal Transformation Format, 7 bits -======================================= - - `UTF-7' comes from IETF rather than ISO, and is described by -RFC 2152, in the MIME series. The `UTF-7' encoding is meant to fit -`UCS-2' over channels limited to seven bits per byte. It proceeds from -a mix between the spirit of `Quoted-Printable' and methods of `Base64', -adapted to Unicode contexts. - - This charset is available in `recode' under the name -`UNICODE-1-1-UTF-7'. Accepted aliases are `UTF-7', `TF-7' and `u7'. - diff --git a/doc/recode.info-3 b/doc/recode.info-3 index e9f13d1..1742768 100644 --- a/doc/recode.info-3 +++ b/doc/recode.info-3 @@ -1,5 +1,4 @@ -This is recode.info, produced by makeinfo version 3.12n from -recode.texi. +This is recode.info, produced by makeinfo version 4.0 from recode.texi. INFO-DIR-SECTION Internationalization and character sets START-INFO-DIR-ENTRY @@ -9,8 +8,8 @@ END-INFO-DIR-ENTRY This file documents the `recode' command, which has the purpose of converting files between various character sets and surfaces. - Copyright (C) 1990, 93, 94, 96, 97, 98, 99 Free Software Foundation, -Inc. + Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software +Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are @@ -26,6 +25,88 @@ manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation. + +File: recode.info, Node: UCS-2, Next: UCS-4, Prev: Universal, Up: Universal + +Universal Character Set, 2 bytes +================================ + + One surface of `UCS' is usable for the subset defined by its first +sixty thousand characters (in fact, 31 * 2^11 codes), and uses exactly +two bytes per character. It is a mere dump of the internal memory +representation which is _natural_ for this subset and as such, conveys +with it endianness problems. + + A non-empty `UCS-2' file normally begins with a so called "byte +order mark", having value `0xFEFF'. The value `0xFFFE' is not an `UCS' +character, so if this value is seen at the beginning of a file, +`recode' reacts by swapping all pairs of bytes. The library also +properly reacts to other occurrences of `0xFEFF' or `0xFFFE' elsewhere +than at the beginning, because concatenation of `UCS-2' files should +stay a simple matter, but it might trigger a diagnostic about non +canonical input. + + By default, when producing an `UCS-2' file, `recode' always outputs +the high order byte before the low order byte. But this could be +easily overridden through the `21-Permutation' surface (*note +Permutations::). For example, the command: + + recode u8..u2/21 < INPUT > OUTPUT + +asks for an `UTF-8' to `UCS-2' conversion, with swapped byte output. + + Use `UCS-2' as a genuine charset. This charset is available in +`recode' under the name `ISO-10646-UCS-2'. Accepted aliases are +`UCS-2', `BMP', `rune' and `u2'. + + The `recode' library is able to combine `UCS-2' some sequences of +codes into single code characters, to represent a few diacriticized +characters, ligatures or diphtongs which have been included to ease +mapping with other existing charsets. It is also able to explode such +single code characters into the corresponding sequence of codes. The +request syntax for triggering such operations is rudimentary and +temporary. The `combined-UCS-2' pseudo character set is a special form +of `UCS-2' in which known combinings have been replaced by the simpler +code. Using `combined-UCS-2' instead of `UCS-2' in an _after_ position +of a request forces a combining step, while using `combined-UCS-2' +instead of `UCS-2' in a _before_ position of a request forces an +exploding step. For the time being, one has to resort to advanced +request syntax to achieve other effects. For example: + + recode u8..co,u2..u8 < INPUT > OUTPUT + +copies an `UTF-8' INPUT over OUTPUT, still to be in `UTF-8', yet +merging combining characters into single codes whenever possible. + + +File: recode.info, Node: UCS-4, Next: UTF-7, Prev: UCS-2, Up: Universal + +Universal Character Set, 4 bytes +================================ + + Another surface of `UCS' uses exactly four bytes per character, and +is a mere dump of the internal memory representation which is _natural_ +for the whole charset and as such, conveys with it endianness problems. + + Use it as a genuine charset. This charset is available in `recode' +under the name `ISO-10646-UCS-4'. Accepted aliases are `UCS', `UCS-4', +`ISO_10646', `10646' and `u4'. + + +File: recode.info, Node: UTF-7, Next: UTF-8, Prev: UCS-4, Up: Universal + +Universal Transformation Format, 7 bits +======================================= + + `UTF-7' comes from IETF rather than ISO, and is described by +RFC 2152, in the MIME series. The `UTF-7' encoding is meant to fit +`UCS-2' over channels limited to seven bits per byte. It proceeds from +a mix between the spirit of `Quoted-Printable' and methods of `Base64', +adapted to Unicode contexts. + + This charset is available in `recode' under the name +`UNICODE-1-1-UTF-7'. Accepted aliases are `UTF-7', `TF-7' and `u7'. +  File: recode.info, Node: UTF-8, Next: UTF-16, Prev: UTF-7, Up: Universal @@ -286,102 +367,119 @@ for what is the genuine charset name. * General character sets `US-ASCII' `ASCII', `ISO646-US', `ISO_646.IRV:1991', `ISO-IR-6', - `ANSI_X3.4-1968', `CP367', `IBM367', `US' and `CSASCII' are - aliases for this charset. + `ANSI_X3.4-1968', `CP367', `IBM367', `US', `csASCII' and + `ISO646.1991-IRV' are aliases for this charset. * General multi-byte encodings `UTF-8' + `UTF8' is an alias for this charset. `UCS-2' - `ISO-10646-UCS-2' and `CSUNICODE' are aliases for this + `ISO-10646-UCS-2' and `csUnicode' are aliases for this charset. + `UCS-2BE' + `UNICODEBIG', `UNICODE-1-1' and `csUnicode11' are aliases for + this charset. + + `UCS-2LE' + `UNICODELITTLE' is an alias for this charset. + `UCS-4' - `ISO-10646-UCS-4' and `CSUCS4' are aliases for this charset. + `ISO-10646-UCS-4' and `csUCS4' are aliases for this charset. + + `UCS-4BE' + + `UCS-4LE' `UTF-16' + `UTF-16BE' + + `UTF-16LE' + `UTF-7' - `UNICODE-1-1-UTF-7' and `CSUNICODE11UTF7' are aliases for + `UNICODE-1-1-UTF-7' and `csUnicode11UTF7' are aliases for this charset. `UCS-2-INTERNAL' `UCS-2-SWAPPED' - `UCS-2-BE' - `UNICODEBIG' is an alias for this charset. - - `UCS-2-LE' - `UNICODELITTLE' is an alias for this charset. - `UCS-4-INTERNAL' `UCS-4-SWAPPED' - `UCS-4-BE' - - `UCS-4-LE' - `JAVA' * Standard 8-bit encodings `ISO-8859-1' `ISO_8859-1', `ISO_8859-1:1987', `ISO-IR-100', `CP819', - `IBM819', `LATIN1', `L1' and `CSISOLATIN1' are aliases for - this charset. + `IBM819', `LATIN1', `L1', `csISOLatin1', `ISO8859-1' and + `ISO8859_1' are aliases for this charset. `ISO-8859-2' - `ISO_8859-2', `ISO_8859-2:1987', `ISO-IR-101', `LATIN2', `L2' - and `CSISOLATIN2' are aliases for this charset. + `ISO_8859-2', `ISO_8859-2:1987', `ISO-IR-101', `LATIN2', + `L2', `csISOLatin2', `ISO8859-2' and `ISO8859_2' are aliases + for this charset. `ISO-8859-3' - `ISO_8859-3', `ISO_8859-3:1988', `ISO-IR-109', `LATIN3', `L3' - and `CSISOLATIN3' are aliases for this charset. + `ISO_8859-3', `ISO_8859-3:1988', `ISO-IR-109', `LATIN3', + `L3', `csISOLatin3', `ISO8859-3' and `ISO8859_3' are aliases + for this charset. `ISO-8859-4' - `ISO_8859-4', `ISO_8859-4:1988', `ISO-IR-110', `LATIN4', `L4' - and `CSISOLATIN4' are aliases for this charset. + `ISO_8859-4', `ISO_8859-4:1988', `ISO-IR-110', `LATIN4', + `L4', `csISOLatin4', `ISO8859-4' and `ISO8859_4' are aliases + for this charset. `ISO-8859-5' - `ISO_8859-5', `ISO_8859-5:1988', `ISO-IR-144', `CYRILLIC' and - `CSISOLATINCYRILLIC' are aliases for this charset. + `ISO_8859-5', `ISO_8859-5:1988', `ISO-IR-144', `CYRILLIC', + `csISOLatinCyrillic', `ISO8859-5' and `ISO8859_5' are aliases + for this charset. `ISO-8859-6' `ISO_8859-6', `ISO_8859-6:1987', `ISO-IR-127', `ECMA-114', - `ASMO-708', `ARABIC' and `CSISOLATINARABIC' are aliases for - this charset. + `ASMO-708', `ARABIC', `csISOLatinArabic', `ISO8859-6' and + `ISO8859_6' are aliases for this charset. `ISO-8859-7' `ISO_8859-7', `ISO_8859-7:1987', `ISO-IR-126', `ECMA-118', - `ELOT_928', `GREEK8', `GREEK' and `CSISOLATINGREEK' are - aliases for this charset. + `ELOT_928', `GREEK8', `GREEK', `csISOLatinGreek', `ISO8859-7' + and `ISO8859_7' are aliases for this charset. `ISO-8859-8' - `ISO_8859-8', `ISO_8859-8:1988', `ISO-IR-138', `HEBREW' and - `CSISOLATINHEBREW' are aliases for this charset. + `ISO_8859-8', `ISO_8859-8:1988', `ISO-IR-138', `HEBREW', + `csISOLatinHebrew', `ISO8859-8' and `ISO8859_8' are aliases + for this charset. `ISO-8859-9' - `ISO_8859-9', `ISO_8859-9:1989', `ISO-IR-148', `LATIN5', `L5' - and `CSISOLATIN5' are aliases for this charset. + `ISO_8859-9', `ISO_8859-9:1989', `ISO-IR-148', `LATIN5', + `L5', `csISOLatin5', `ISO8859-9' and `ISO8859_9' are aliases + for this charset. `ISO-8859-10' `ISO_8859-10', `ISO_8859-10:1992', `ISO-IR-157', `LATIN6', - `L6' and `CSISOLATIN6' are aliases for this charset. + `L6', `csISOLatin6' and `ISO8859-10' are aliases for this + charset. `ISO-8859-13' `ISO_8859-13', `ISO-IR-179', `LATIN7' and `L7' are aliases for this charset. `ISO-8859-14' - `ISO_8859-14', `ISO_8859-14:1998', `LATIN8' and `L8' are - aliases for this charset. + `ISO_8859-14', `ISO_8859-14:1998', `ISO-IR-199', `LATIN8' and + `L8' are aliases for this charset. `ISO-8859-15' - `ISO_8859-15' and `ISO_8859-15:1998' are aliases for this - charset. + `ISO_8859-15', `ISO_8859-15:1998' and `ISO-IR-203' are + aliases for this charset. + + `ISO-8859-16' + `ISO_8859-16', `ISO_8859-16:2000' and `ISO-IR-226' are + aliases for this charset. `KOI8-R' - `CSKOI8R' is an alias for this charset. + `csKOI8R' is an alias for this charset. `KOI8-U' @@ -416,15 +514,16 @@ for what is the genuine charset name. * DOS 8-bit encodings `CP850' - `IBM850', `850' and `CSPC850MULTILINGUAL' are aliases for + `IBM850', `850' and `csPC850Multilingual' are aliases for this charset. `CP866' - `IBM866', `866' and `CSIBM866' are aliases for this charset. + `IBM866', `866' and `csIBM866' are aliases for this charset. * Macintosh 8-bit encodings `MacRoman' - `Macintosh' is an alias for this charset. + `Macintosh', `MAC' and `csMacintosh' are aliases for this + charset. `MacCentralEurope' @@ -449,7 +548,7 @@ for what is the genuine charset name. `MacThai' * Other platform specific 8-bit encodings `HP-ROMAN8' - `ROMAN8', `R8' and `CSHPROMAN8' are aliases for this charset. + `ROMAN8', `R8' and `csHPRoman8' are aliases for this charset. `NEXTSTEP' * Regional 8-bit encodings used for a single language @@ -472,57 +571,76 @@ for what is the genuine charset name. `WINDOWS-874' is an alias for this charset. `VISCII' - `VISCII1.1-1' and `CSVISCII' are aliases for this charset. + `VISCII1.1-1' and `csVISCII' are aliases for this charset. `TCVN' `TCVN-5712', `TCVN5712-1' and `TCVN5712-1:1993' are aliases for this charset. - * CJK character sets + * CJK character sets (not documented) + `JIS_C6220-1969-RO' + `ISO646-JP', `ISO-IR-14', `JP' and `csISO14JISC6220ro' are + aliases for this charset. + `JIS_X0201' - `JISX0201-1976', `JISX0201.1976-0', `X0201' and - `CSHALFWIDTHKATAKANA' are aliases for this charset. + `JISX0201-1976', `X0201', `csHalfWidthKatakana', + `JISX0201.1976-0' and `JIS0201' are aliases for this charset. `JIS_X0208' - `JIS_X0208.1983-0', `JIS_X0208.1983-1', `JIS_X0208-1983', - `JIS_X0208-1990' and `JIS0208' are aliases for this charset. + `JIS_X0208-1983', `JIS_X0208-1990', `JIS0208', `X0208', + `ISO-IR-87', `csISO87JISX0208', `JISX0208.1983-0', + `JISX0208.1990-0' and `JIS0208' are aliases for this charset. `JIS_X0212' - `JIS_X0212.1990-0', `JIS_X0212-1990', `X0212', `ISO-IR-159' - and `CSISO159JISX02121990' are aliases for this charset. + `JIS_X0212.1990-0', `JIS_X0212-1990', `X0212', `ISO-IR-159', + `csISO159JISX02121990', `JISX0212.1990-0' and `JIS0212' are + aliases for this charset. - `KSC_5601' - `KSC5601.1987-0', `KS_C_5601-1987', `KS_C_5601-1989', - `ISO-IR-149', `CSKSC56011987', `KOREAN' and `CP949' are + `GB_1988-80' + `ISO646-CN', `ISO-IR-57', `CN' and `csISO57GB1988' are aliases for this charset. + `GB_2312-80' + `ISO-IR-58', `csISO58GB231280', `CHINESE' and `GB2312.1980-0' + are aliases for this charset. + + `ISO-IR-165' + `CN-GB-ISOIR165' is an alias for this charset. + + `KSC_5601' + `KS_C_5601-1987', `KS_C_5601-1989', `ISO-IR-149', + `csKSC56011987', `KOREAN', `KSC5601.1987-0' and + `KSX1001:1992' are aliases for this charset. + * CJK encodings `EUC-JP' - `EUCJP', `EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE' and - `CSEUCPKDFMTJAPANESE' are aliases for this charset. + `EUCJP', `Extended_UNIX_Code_Packed_Format_for_Japanese', + `csEUCPkdFmtJapanese' and `EUC_JP' are aliases for this + charset. `SJIS' - `SHIFT_JIS', `SHIFT-JIS', `MS_KANJI' and `CSSHIFTJIS' are + `SHIFT_JIS', `SHIFT-JIS', `MS_KANJI' and `csShiftJIS' are aliases for this charset. `CP932' `ISO-2022-JP' - `CSISO2022JP' is an alias for this charset. + `csISO2022JP' and `ISO2022JP' are aliases for this charset. `ISO-2022-JP-1' `ISO-2022-JP-2' - `CSISO2022JP2' is an alias for this charset. + `csISO2022JP2' is an alias for this charset. `EUC-CN' - `EUCCN', `GB2312' and `CSGB2312' are aliases for this charset. + `EUCCN', `GB2312', `CN-GB', `csGB2312' and `EUC_CN' are + aliases for this charset. `GBK' `CP936' is an alias for this charset. `ISO-2022-CN' - `CSISO2022CN' is an alias for this charset. + `csISO2022CN' and `ISO2022CN' are aliases for this charset. `ISO-2022-CN-EXT' @@ -530,22 +648,25 @@ for what is the genuine charset name. `HZ-GB-2312' is an alias for this charset. `EUC-TW' - `EUCTW' and `CSEUCTW' are aliases for this charset. + `EUCTW', `csEUCTW' and `EUC_TW' are aliases for this charset. `BIG5' - `BIG-5', `BIG-FIVE', `BIGFIVE' and `CSBIG5' are aliases for - this charset. + `BIG-5', `BIG-FIVE', `BIGFIVE', `CN-BIG5' and `csBig5' are + aliases for this charset. `CP950' `EUC-KR' - `EUCKR' and `CSEUCKR' are aliases for this charset. + `EUCKR', `csEUCKR' and `EUC_KR' are aliases for this charset. + + `CP949' + `UHC' is an alias for this charset. `JOHAB' `CP1361' is an alias for this charset. `ISO-2022-KR' - `CSISO2022KR' is an alias for this charset. + `csISO2022KR' and `ISO2022KR' are aliases for this charset.  File: recode.info, Node: Tabular, Next: ASCII misc, Prev: libiconv, Up: Top @@ -564,7 +685,7 @@ defines many character mnemonics and character sets. The `recode' library implements most of RFC 1345, however: * It does not recognise those charsets which overload character - positions: `dk-us' and `us-dk'. However, see *Note Mixed::. + positions: `dk-us' and `us-dk'. However, *Note Mixed::. * It does not recognise those charsets which combine two characters for representing a third: `ANSI_X3.110-1983', `ISO_6937-2-add', @@ -966,62 +1087,69 @@ implemented in some future version, however. `iso-ir-170' is an alias for this charset. `ISO-8859-1' - `819', `CP819', `IBM819', `ISO_8859-1', `ISO_8859-1:1987', - `iso-ir-100', `l1' and `latin1' are aliases for this charset. - Source: ISO 2375 registry. + `819', `CP819', `IBM819', `ISO8859-1', `ISO_8859-1', + `ISO_8859-1:1987', `iso-ir-100', `l1' and `latin1' are aliases for + this charset. Source: ISO 2375 registry. `ISO-8859-10' - `ISO_8859-10', `ISO_8859-10:1993', `iso-ir-157', `l6' and `latin6' - are aliases for this charset. Source: ISO 2375 registry. + `ISO8859-10', `ISO_8859-10', `ISO_8859-10:1993', `L6', + `iso-ir-157' and `latin6' are aliases for this charset. Source: + ISO 2375 registry. `ISO-8859-13' - `ISO_8859-13', `ISO_8859-13:1998', `iso-baltic', `iso-ir-179a', - `l7' and `latin7' are aliases for this charset. Source: ISO 2375 - registry. + `ISO8859-13', `ISO_8859-13', `ISO_8859-13:1998', `iso-baltic', + `iso-ir-179a', `l7' and `latin7' are aliases for this charset. + Source: ISO 2375 registry. `ISO-8859-14' - `ISO_8859-14', `ISO_8859-14:1998', `iso-celtic', `iso-ir-199', - `l8' and `latin8' are aliases for this charset. Source: ISO 2375 - registry. + `ISO8859-14', `ISO_8859-14', `ISO_8859-14:1998', `iso-celtic', + `iso-ir-199', `l8' and `latin8' are aliases for this charset. + Source: ISO 2375 registry. `ISO-8859-15' - `ISO_8859-15', `ISO_8859-15:1998', `iso-ir-203', `l9' and `latin9' - are aliases for this charset. Source: ISO 2375 registry. + `ISO8859-15', `ISO_8859-15', `ISO_8859-15:1998', `iso-ir-203', + `l9' and `latin9' are aliases for this charset. Source: ISO 2375 + registry. `ISO-8859-2' - `912', `CP912', `IBM912', `ISO_8859-2', `ISO_8859-2:1987', - `iso-ir-101', `l2' and `latin2' are aliases for this charset. - Source: ISO 2375 registry. + `912', `CP912', `IBM912', `ISO8859-2', `ISO_8859-2', + `ISO_8859-2:1987', `iso-ir-101', `l2' and `latin2' are aliases for + this charset. Source: ISO 2375 registry. `ISO-8859-3' - `ISO_8859-3', `ISO_8859-3:1988', `iso-ir-109', `l3' and `latin3' - are aliases for this charset. Source: ISO 2375 registry. + `ISO8859-3', `ISO_8859-3', `ISO_8859-3:1988', `iso-ir-109', `l3' + and `latin3' are aliases for this charset. Source: ISO 2375 + registry. `ISO-8859-4' - `ISO_8859-4', `ISO_8859-4:1988', `iso-ir-110', `l4' and `latin4' - are aliases for this charset. Source: ISO 2375 registry. + `ISO8859-4', `ISO_8859-4', `ISO_8859-4:1988', `iso-ir-110', `l4' + and `latin4' are aliases for this charset. Source: ISO 2375 + registry. `ISO-8859-5' - `ISO_8859-5', `ISO_8859-5:1988', `cyrillic' and `iso-ir-144' are - aliases for this charset. Source: ISO 2375 registry. + `ISO8859-5', `ISO_8859-5', `ISO_8859-5:1988', `cyrillic' and + `iso-ir-144' are aliases for this charset. Source: ISO 2375 + registry. `ISO-8859-6' - `ASMO-708', `ECMA-114', `ISO_8859-6', `ISO_8859-6:1987', `arabic' - and `iso-ir-127' are aliases for this charset. Source: ISO 2375 - registry. + `ASMO-708', `ECMA-114', `ISO8859-6', `ISO_8859-6', + `ISO_8859-6:1987', `arabic' and `iso-ir-127' are aliases for this + charset. Source: ISO 2375 registry. `ISO-8859-7' - `ECMA-118', `ELOT_928', `ISO_8859-7', `ISO_8859-7:1987', `greek', - `greek8' and `iso-ir-126' are aliases for this charset. Source: - ISO 2375 registry. + `ECMA-118', `ELOT_928', `ISO8859-7', `ISO_8859-7', + `ISO_8859-7:1987', `greek', `greek8' and `iso-ir-126' are aliases + for this charset. Source: ISO 2375 registry. `ISO-8859-8' - `ISO_8859-8', `ISO_8859-8:1988', `hebrew' and `iso-ir-138' are - aliases for this charset. Source: ISO 2375 registry. + `ISO8859-8', `ISO_8859-8', `ISO_8859-8:1988', `hebrew' and + `iso-ir-138' are aliases for this charset. Source: ISO 2375 + registry. `ISO-8859-9' - `ISO_8859-9', `ISO_8859-9:1989', `iso-ir-148', `l5' and `latin5' - are aliases for this charset. Source: ISO 2375 registry. + `ISO8859-9', `ISO_8859-9', `ISO_8859-9:1989', `iso-ir-148', `l5' + and `latin5' are aliases for this charset. Source: ISO 2375 + registry. `ISO_10367-box' `iso-ir-155' is an alias for this charset. Source: ISO 2375 @@ -1324,136 +1452,3 @@ been removed since the `recode' program can now recreate these easily: recode -lo l1 for concise octal table recode -lh l1 for concise hexadecimal table - -File: recode.info, Node: ASCII-BS, Next: flat, Prev: ISO 8859, Up: ASCII misc - -ASCII 7-bits, `BS' to overstrike -================================ - - This charset is available in `recode' under the name `ASCII-BS', -with `BS' as an acceptable alias. - - The file is straight ASCII, seven bits only. According to the -definition of ASCII, diacritics are applied by a sequence of three -characters: the letter, one `BS', the diacritic mark. We deviate -slightly from this by exchanging the diacritic mark and the letter so, -on a screen device, the diacritic will disappear and let the letter -alone. At recognition time, both methods are acceptable. - - The French quotes are coded by the sequences: `< BS "' or `" BS <' -for the opening quote and `> BS "' or `" BS >' for the closing quote. -This artificial convention was inherited in straight `ASCII-BS' from -habits around `Bang-Bang' entry, and is not well known. But we decided -to stick to it so that `ASCII-BS' charset will not lose French quotes. - - The `ASCII-BS' charset is independent of `ASCII', and different. -The following examples demonstrate this, knowing at advance that `!2' -is the `Bang-Bang' way of representing an `e' with an acute accent. -Compare: - - % echo \!2 | recode -v bang..l1/d - Request: Bang-Bang..ISO-8859-1/Decimal-1 - 233, 10 - -with: - - % echo \!2 | recode -v bang..bs/d - Request: Bang-Bang..ISO-8859-1..ASCII-BS/Decimal-1 - 39, 8, 101, 10 - - In the first case, the `e' with an acute accent is merely -transmitted by the `Latin-1..ASCII' mapping, not having a special -recoding rule for it. In the `Latin-1..ASCII-BS' case, the acute -accent is applied over the `e' with a backspace: diacriticised -characters have special rules. For the `ASCII-BS' charset, -reversibility is still possible, but there might be difficult cases. - - -File: recode.info, Node: flat, Prev: ASCII-BS, Up: ASCII misc - -ASCII without diacritics nor underline -====================================== - - This charset is available in `recode' under the name `flat'. - - This code is ASCII expunged of all diacritics and underlines, as -long as they are applied using three character sequences, with `BS' in -the middle. Also, despite slightly unrelated, each control character is -represented by a sequence of two or three graphic characters. The -newline character, however, keeps its functionality and is not -represented. - - Note that charset `flat' is a terminal charset. We can convert _to_ -`flat', but not _from_ it. - - -File: recode.info, Node: IBM and MS, Next: CDC, Prev: ASCII misc, Up: Top - -Some IBM or Microsoft charsets -****************************** - - The `recode' program provides various IBM or Microsoft code pages -(*note Tabular::). An easy way to find them all at once out of the -`recode' program itself is through the command: - - recode -l | egrep -i '(CP|IBM)[0-9]' - -But also, see few special charsets presented in the incoming sections. - -* Menu: - -* EBCDIC:: EBCDIC codes -* IBM-PC:: IBM's PC code -* Icon-QNX:: Unisys' Icon code - - -File: recode.info, Node: EBCDIC, Next: IBM-PC, Prev: IBM and MS, Up: IBM and MS - -EBCDIC code -=========== - - This charset is the IBM's External Binary Coded Decimal for -Interchange Coding. This is an eight bits code. The following three -variants were implemented in `recode' independently of RFC 1345: - -`EBCDIC' - In `recode', the `us..ebcdic' conversion is identical to `dd - conv=ebcdic' conversion, and `recode' `ebcdic..us' conversion is - identical to `dd conv=ascii' conversion. This charset also - represents the way Control Data Corporation relates EBCDIC to - 8-bits ASCII. - -`EBCDIC-CCC' - In `recode', the `us..ebcdic-ccc' or `ebcdic-ccc..us' conversions - represent the way Concurrent Computer Corporation (formerly Perkin - Elmer) relates EBCDIC to 8-bits ASCII. - -`EBCDIC-IBM' - In `recode', the `us..ebcdic-ibm' conversion is _almost_ identical - to the GNU `dd conv=ibm' conversion. Given the exact `dd - conv=ibm' conversion table, `recode' once said: - - Codes 91 and 213 both recode to 173 - Codes 93 and 229 both recode to 189 - No character recodes to 74 - No character recodes to 106 - - So I arbitrarily chose to recode 213 by 74 and 229 by 106. This - makes the `EBCDIC-IBM' recoding reversible, but this is not - necessarily the best correction. In any case, I think that GNU - `dd' should be amended. `dd' and `recode' should ideally agree on - the same correction. So, this table might change once again. - - RFC 1345 brings into `recode' 15 other EBCDIC charsets, and 21 other -charsets having EBCDIC in at least one of their alias names. You can -get a list of all these by executing: - - recode -l | grep -i ebcdic - - Note that `recode' may convert a pure stream of EBCDIC characters, -but it does not know how to handle binary data between records which is -sometimes used to delimit them and build physical blocks. If end of -lines are not marked, fixed record size may produce something readable, -but `VB' or `VBS' blocking is likely to yield some garbage in the -converted results. - diff --git a/doc/recode.info-4 b/doc/recode.info-4 index 17ca96f..f43e19b 100644 --- a/doc/recode.info-4 +++ b/doc/recode.info-4 @@ -1,5 +1,4 @@ -This is recode.info, produced by makeinfo version 3.12n from -recode.texi. +This is recode.info, produced by makeinfo version 4.0 from recode.texi. INFO-DIR-SECTION Internationalization and character sets START-INFO-DIR-ENTRY @@ -9,8 +8,8 @@ END-INFO-DIR-ENTRY This file documents the `recode' command, which has the purpose of converting files between various character sets and surfaces. - Copyright (C) 1990, 93, 94, 96, 97, 98, 99 Free Software Foundation, -Inc. + Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software +Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are @@ -26,6 +25,139 @@ manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation. + +File: recode.info, Node: ASCII-BS, Next: flat, Prev: ISO 8859, Up: ASCII misc + +ASCII 7-bits, `BS' to overstrike +================================ + + This charset is available in `recode' under the name `ASCII-BS', +with `BS' as an acceptable alias. + + The file is straight ASCII, seven bits only. According to the +definition of ASCII, diacritics are applied by a sequence of three +characters: the letter, one `BS', the diacritic mark. We deviate +slightly from this by exchanging the diacritic mark and the letter so, +on a screen device, the diacritic will disappear and let the letter +alone. At recognition time, both methods are acceptable. + + The French quotes are coded by the sequences: `< BS "' or `" BS <' +for the opening quote and `> BS "' or `" BS >' for the closing quote. +This artificial convention was inherited in straight `ASCII-BS' from +habits around `Bang-Bang' entry, and is not well known. But we decided +to stick to it so that `ASCII-BS' charset will not lose French quotes. + + The `ASCII-BS' charset is independent of `ASCII', and different. +The following examples demonstrate this, knowing at advance that `!2' +is the `Bang-Bang' way of representing an `e' with an acute accent. +Compare: + + % echo \!2 | recode -v bang..l1/d + Request: Bang-Bang..ISO-8859-1/Decimal-1 + 233, 10 + +with: + + % echo \!2 | recode -v bang..bs/d + Request: Bang-Bang..ISO-8859-1..ASCII-BS/Decimal-1 + 39, 8, 101, 10 + + In the first case, the `e' with an acute accent is merely +transmitted by the `Latin-1..ASCII' mapping, not having a special +recoding rule for it. In the `Latin-1..ASCII-BS' case, the acute +accent is applied over the `e' with a backspace: diacriticised +characters have special rules. For the `ASCII-BS' charset, +reversibility is still possible, but there might be difficult cases. + + +File: recode.info, Node: flat, Prev: ASCII-BS, Up: ASCII misc + +ASCII without diacritics nor underline +====================================== + + This charset is available in `recode' under the name `flat'. + + This code is ASCII expunged of all diacritics and underlines, as +long as they are applied using three character sequences, with `BS' in +the middle. Also, despite slightly unrelated, each control character is +represented by a sequence of two or three graphic characters. The +newline character, however, keeps its functionality and is not +represented. + + Note that charset `flat' is a terminal charset. We can convert _to_ +`flat', but not _from_ it. + + +File: recode.info, Node: IBM and MS, Next: CDC, Prev: ASCII misc, Up: Top + +Some IBM or Microsoft charsets +****************************** + + The `recode' program provides various IBM or Microsoft code pages +(*note Tabular::). An easy way to find them all at once out of the +`recode' program itself is through the command: + + recode -l | egrep -i '(CP|IBM)[0-9]' + +But also, see few special charsets presented in the incoming sections. + +* Menu: + +* EBCDIC:: EBCDIC codes +* IBM-PC:: IBM's PC code +* Icon-QNX:: Unisys' Icon code + + +File: recode.info, Node: EBCDIC, Next: IBM-PC, Prev: IBM and MS, Up: IBM and MS + +EBCDIC code +=========== + + This charset is the IBM's External Binary Coded Decimal for +Interchange Coding. This is an eight bits code. The following three +variants were implemented in `recode' independently of RFC 1345: + +`EBCDIC' + In `recode', the `us..ebcdic' conversion is identical to `dd + conv=ebcdic' conversion, and `recode' `ebcdic..us' conversion is + identical to `dd conv=ascii' conversion. This charset also + represents the way Control Data Corporation relates EBCDIC to + 8-bits ASCII. + +`EBCDIC-CCC' + In `recode', the `us..ebcdic-ccc' or `ebcdic-ccc..us' conversions + represent the way Concurrent Computer Corporation (formerly Perkin + Elmer) relates EBCDIC to 8-bits ASCII. + +`EBCDIC-IBM' + In `recode', the `us..ebcdic-ibm' conversion is _almost_ identical + to the GNU `dd conv=ibm' conversion. Given the exact `dd + conv=ibm' conversion table, `recode' once said: + + Codes 91 and 213 both recode to 173 + Codes 93 and 229 both recode to 189 + No character recodes to 74 + No character recodes to 106 + + So I arbitrarily chose to recode 213 by 74 and 229 by 106. This + makes the `EBCDIC-IBM' recoding reversible, but this is not + necessarily the best correction. In any case, I think that GNU + `dd' should be amended. `dd' and `recode' should ideally agree on + the same correction. So, this table might change once again. + + RFC 1345 brings into `recode' 15 other EBCDIC charsets, and 21 other +charsets having EBCDIC in at least one of their alias names. You can +get a list of all these by executing: + + recode -l | grep -i ebcdic + + Note that `recode' may convert a pure stream of EBCDIC characters, +but it does not know how to handle binary data between records which is +sometimes used to delimit them and build physical blocks. If end of +lines are not marked, fixed record size may produce something readable, +but `VB' or `VBS' blocking is likely to yield some garbage in the +converted results. +  File: recode.info, Node: IBM-PC, Next: Icon-QNX, Prev: EBCDIC, Up: IBM and MS @@ -76,7 +208,7 @@ The first command uses the charset prior to RFC 1345 introduction. Both methods give different recodings. These differences are annoying, the fuzziness will have to be explained and settle down one day. - --------- Notes en bas de page --------- + ---------- Footnotes ---------- (1) On DOS/Windows, stock shells do not know that apostrophes quote special characters like `|', so one need to use double quotes instead @@ -173,7 +305,7 @@ given N, in which case these two bytes are not to be interpreted as are to be considered as part of the end of line and not interpreted as `:'(1). - --------- Notes en bas de page --------- + ---------- Footnotes ---------- (1) This convention replaced an older one saying that up to 4 immediately preceeding _pairs_ of zero bytes, going backward, are to be @@ -694,7 +826,7 @@ systematically obeyed by the various recognisers. figue, garrigue, gigue, igue, intrigue, ligue, prodigue, sarigue and zigue). - --------- Notes en bas de page --------- + ---------- Footnotes ---------- (1) There are supposed to be seven words in this case. So, one is missing. @@ -747,7 +879,7 @@ is sometimes needed. Within Emacs, `Mule' comes with `Leim', which stands for `_l_ibraries of _e_macs _i_nput _m_ethods'. One of these libraries is named `quail'(1). - --------- Notes en bas de page --------- + ---------- Footnotes ---------- (1) Usually, quail means quail egg in Japanese, while egg alone is usually chicken egg. Both quail egg and chicken egg are popular food @@ -785,18 +917,29 @@ of as surfaces. This choice yields to cleaner syntax and usage. *Note Universal::. Surfaces are implemented within `recode' as special charsets which -may only transform to or from the `data' special charset. Clever users -may use this knowledge for writing surface names in requests exactly as -if they were pure charsets, when the only need is to change surfaces -without any kind of recoding between real charsets. In such contexts, -`data' may also be used as if it were some kind of generic, anonymous -charset: the request `data..SURFACE' merely adds the given SURFACE, -while the request `SURFACE..data' removes it. - - We are only beginning to experiment with surfaces in `recode', but -the concept opens the doors to many avenues; it is not clear yet which -ones are worth pursuing, and which should be abandoned. This chapter -presents all surfaces currently available. +may only transform to or from the `data' or `tree' special charsets. +Clever users may use this knowledge for writing surface names in +requests exactly as if they were pure charsets, when the only need is +to change surfaces without any kind of recoding between real charsets. +In such contexts, either `data' or `tree' may also be used as if it +were some kind of generic, anonymous charset: the request +`data..SURFACE' merely adds the given SURFACE, while the request +`SURFACE..data' removes it. + + The `recode' library distinguishes between mere data surfaces, and +structural surfaces, also called tree surfaces for short. Structural +surfaces might allow, in the long run, transformations between a few +specialised representations of structural information like MIME parts, +Perl or Python initialisers, LISP S-expressions, XML, Emacs outlines, +etc. + + We are still experimenting with surfaces in `recode'. The concept +opens the doors to many avenues; it is not clear yet which ones are +worth pursuing, and which should be abandoned. In particular, +implementation of structural surfaces is barely starting, there is not +even a commitment that tree surfaces will stay in `recode', if they do +prove to be more cumbersome than useful. This chapter presents all +surfaces currently available. * Menu: @@ -804,9 +947,9 @@ presents all surfaces currently available. * End lines:: Representation for end of lines * MIME:: MIME contents encodings * Dump:: Interpreted character dumps -* Debugging:: Artificial data +* Test:: Artificial data for testing - --------- Notes en bas de page --------- + ---------- Footnotes ---------- (1) These are mere examples to explain the concept, `recode' only has `Base64' and `CR-LF', actually. @@ -912,7 +1055,7 @@ in 1993, and was _recycled_ as a "Draft Standard" in 1996-11. It is not yet a "Full Standard".  -File: recode.info, Node: Dump, Next: Debugging, Prev: MIME, Up: Surfaces +File: recode.info, Node: Dump, Next: Test, Prev: MIME, Up: Surfaces Interpreted character dumps =========================== @@ -1014,145 +1157,3 @@ with a number are skipped. So, `recode' should often be able to read a whole C header file, wrapping the results of a previous dump, and regenerate the original byte string. - -File: recode.info, Node: Debugging, Prev: Dump, Up: Surfaces - -Artificial data -=============== - - A few pseudo-surfaces exist to generate debugging data out of thin -air. These surfaces are only meant for the expert `recode' user, and -are only useful in a few contexts, like for generating binary -permutations from the recoding or acting on them. - - Debugging surfaces, _when removed_, insert their generated data at -the beginning of the output stream, and copy all the input stream after -the generated data, unchanged. This strange removal constraint comes -from the fact that debugging surfaces are usually specified in the -_before_ position instead of the _after_ position within a request. -With debugging surfaces, one often recodes file `/dev/null' in filter -mode. Specifying many debugging surfaces at once has an accumulation -effect on the output, and since surfaces are removed from right to left, -each generating its data at the beginning of previous output, the net -effect is an _impression_ that debugging surfaces are generated from -left to right, each appending to the result of the previous. In any -case, any real input data gets appended after what was generated. - -`test7' - When removed, this surface produces 128 single bytes, the first - having value 0, the second having value 1, and so forth until all - 128 values have been generated. - -`test8' - When removed, this surface produces 256 single bytes, the first - having value 0, the second having value 1, and so forth until all - 256 values have been generated. - -`test15' - When removed, this surface produces 64509 double bytes, the first - having value 0, the second having value 1, and so forth until all - values have been generated, but excluding risky `UCS-2' values, - like all codes from the surrogate `UCS-2' area (for `UTF-16'), the - byte order mark, and values known as invalid `UCS-2'. - -`test16' - When removed, this surface produces 65536 double bytes, the first - having value 0, the second having value 1, and so forth until all - 65536 values have been generated. - - As an example, the command `recode l5/test8..dump < /dev/null' is a -convoluted way to produce an output similar to `recode -lf l5'. It says -to generate all possible 256 bytes and interpret them as `ISO-8859-9' -codes, while converting them to `UCS-2'. Resulting `UCS-2' characters -are dumped one per line, accompanied with their explicative name. - - -File: recode.info, Node: Internals, Next: Concept Index, Prev: Surfaces, Up: Top - -Internal aspects -**************** - - The incoming explanations of the internals of `recode' should help -people who want to dive into `recode' sources for adding new charsets. -Adding new charsets does not require much knowledge about the overall -organisation of `recode'. You can rather concentrate of your new -charset, letting the remainder of the `recode' mechanics take care of -interconnecting it with all others charsets. - - If you intend to play seriously at modifying `recode', beware that -you may need some other GNU tools which were not required when you first -installing `recode'. If you modify or create any `.l' file, then you -need Flex, and some better `awk' like `mawk', GNU `awk', or `nawk'. If -you modify the documentation (and you should!), you need `makeinfo'. -If you are really audacious, you may also want Perl for modifying -tabular processing, then `m4', Autoconf, Automake and `libtool' for -adjusting configuration matters. - -* Menu: - -* Main flow:: Overall organisation -* New charsets:: Adding new charsets -* New surfaces:: Adding new surfaces -* Design:: Comments on the library design - - -File: recode.info, Node: Main flow, Next: New charsets, Prev: Internals, Up: Internals - -Overall organisation -==================== - - The `recode' mechanics slowly evolved for many years, and it would -be tedious to explain all problems I met and mistakes I did all along, -yielding the current behaviour. Surely, one of the key choices was to -stop trying to do all conversions in memory, one line or one buffer at -a time. It has been fruitful to use the character stream paradigm, and -the elementary recoding steps now convert a whole stream to another. -Most of the control complexity in `recode' exists so that each -elementary recoding step stays simple, making easier to add new ones. -The whole point of `recode', as I see it, is providing a comfortable -nest for growing new charset conversions. - - The main `recode' driver constructs, while initialising all -conversion modules, a table giving all the conversion routines -available ("single step"s) and for each, the starting charset and the -ending charset. If we consider these charsets as being the nodes of a -directed graph, each single step may be considered as oriented arc from -one node to the other. A cost is attributed to each arc: for example, -a high penalty is given to single steps which are prone to losing -characters, a lower penalty is given to those which need studying more -than one input character for producing an output character, etc. - - Given a starting code and a goal code, `recode' computes the most -economical route through the elementary recodings, that is, the best -sequence of conversions that will transform the input charset into the -final charset. To speed up execution, `recode' looks for subsequences -of conversions which are simple enough to be merged, and then -dynamically creates new single steps to represent these mergings. - - A "double step" in `recode' is a special concept representing a -sequence of two single steps, the output of the first single step being -the special charset `UCS-2', the input of the second single step being -also `UCS-2'. Special `recode' machinery dynamically produces -efficient, reversible, merge-able single steps out of these double -steps. - - I made some statistics about how many internal recoding steps are -required between any two charsets chosen at random. The initial -recoding layout, before optimisation, always uses between 1 and 6 -steps. Optimisation could sometimes produce mere copies, which are -counted as no steps at all. In other cases, optimisation is unable to -save any step. The number of steps after optimisation is currently -between 0 and 6 steps. Of course, the _expected_ number of steps is -affected by optimisation: it drops from 2.2 to 0.9.(1) This means that -`recode' uses a theoretical average of a bit less than one step per -recoding job. This looks good. This was computed using reversible -recodings. In strict mode, optimisation might be defeated somewhat. -Number of steps run between 1 and 6, both before and after optimisation, -and the expected number of steps decreases by a lesser amount, going -from 2.2 to 1.3. This is still manageable. - - --------- Notes en bas de page --------- - - (1) The above numbers were for `recode' version 3.4. After UCS -additions, it drops from 2.3 to 1.1. - diff --git a/doc/recode.info-5 b/doc/recode.info-5 index 0771be9..d2eb103 100644 --- a/doc/recode.info-5 +++ b/doc/recode.info-5 @@ -1,5 +1,4 @@ -This is recode.info, produced by makeinfo version 3.12n from -recode.texi. +This is recode.info, produced by makeinfo version 4.0 from recode.texi. INFO-DIR-SECTION Internationalization and character sets START-INFO-DIR-ENTRY @@ -9,8 +8,8 @@ END-INFO-DIR-ENTRY This file documents the `recode' command, which has the purpose of converting files between various character sets and surfaces. - Copyright (C) 1990, 93, 94, 96, 97, 98, 99 Free Software Foundation, -Inc. + Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software +Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are @@ -26,6 +25,143 @@ manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation. + +File: recode.info, Node: Test, Prev: Dump, Up: Surfaces + +Artificial data for testing +=========================== + + A few pseudo-surfaces exist to generate debugging data out of thin +air. These surfaces are only meant for the expert `recode' user, and +are only useful in a few contexts, like for generating binary +permutations from the recoding or acting on them. + + Debugging surfaces, _when removed_, insert their generated data at +the beginning of the output stream, and copy all the input stream after +the generated data, unchanged. This strange removal constraint comes +from the fact that debugging surfaces are usually specified in the +_before_ position instead of the _after_ position within a request. +With debugging surfaces, one often recodes file `/dev/null' in filter +mode. Specifying many debugging surfaces at once has an accumulation +effect on the output, and since surfaces are removed from right to left, +each generating its data at the beginning of previous output, the net +effect is an _impression_ that debugging surfaces are generated from +left to right, each appending to the result of the previous. In any +case, any real input data gets appended after what was generated. + +`test7' + When removed, this surface produces 128 single bytes, the first + having value 0, the second having value 1, and so forth until all + 128 values have been generated. + +`test8' + When removed, this surface produces 256 single bytes, the first + having value 0, the second having value 1, and so forth until all + 256 values have been generated. + +`test15' + When removed, this surface produces 64509 double bytes, the first + having value 0, the second having value 1, and so forth until all + values have been generated, but excluding risky `UCS-2' values, + like all codes from the surrogate `UCS-2' area (for `UTF-16'), the + byte order mark, and values known as invalid `UCS-2'. + +`test16' + When removed, this surface produces 65536 double bytes, the first + having value 0, the second having value 1, and so forth until all + 65536 values have been generated. + + As an example, the command `recode l5/test8..dump < /dev/null' is a +convoluted way to produce an output similar to `recode -lf l5'. It says +to generate all possible 256 bytes and interpret them as `ISO-8859-9' +codes, while converting them to `UCS-2'. Resulting `UCS-2' characters +are dumped one per line, accompanied with their explicative name. + + +File: recode.info, Node: Internals, Next: Concept Index, Prev: Surfaces, Up: Top + +Internal aspects +**************** + + The incoming explanations of the internals of `recode' should help +people who want to dive into `recode' sources for adding new charsets. +Adding new charsets does not require much knowledge about the overall +organisation of `recode'. You can rather concentrate of your new +charset, letting the remainder of the `recode' mechanics take care of +interconnecting it with all others charsets. + + If you intend to play seriously at modifying `recode', beware that +you may need some other GNU tools which were not required when you first +installing `recode'. If you modify or create any `.l' file, then you +need Flex, and some better `awk' like `mawk', GNU `awk', or `nawk'. If +you modify the documentation (and you should!), you need `makeinfo'. +If you are really audacious, you may also want Perl for modifying +tabular processing, then `m4', Autoconf, Automake and `libtool' for +adjusting configuration matters. + +* Menu: + +* Main flow:: Overall organisation +* New charsets:: Adding new charsets +* New surfaces:: Adding new surfaces +* Design:: Comments on the library design + + +File: recode.info, Node: Main flow, Next: New charsets, Prev: Internals, Up: Internals + +Overall organisation +==================== + + The `recode' mechanics slowly evolved for many years, and it would +be tedious to explain all problems I met and mistakes I did all along, +yielding the current behaviour. Surely, one of the key choices was to +stop trying to do all conversions in memory, one line or one buffer at +a time. It has been fruitful to use the character stream paradigm, and +the elementary recoding steps now convert a whole stream to another. +Most of the control complexity in `recode' exists so that each +elementary recoding step stays simple, making easier to add new ones. +The whole point of `recode', as I see it, is providing a comfortable +nest for growing new charset conversions. + + The main `recode' driver constructs, while initialising all +conversion modules, a table giving all the conversion routines +available ("single step"s) and for each, the starting charset and the +ending charset. If we consider these charsets as being the nodes of a +directed graph, each single step may be considered as oriented arc from +one node to the other. A cost is attributed to each arc: for example, +a high penalty is given to single steps which are prone to losing +characters, a lower penalty is given to those which need studying more +than one input character for producing an output character, etc. + + Given a starting code and a goal code, `recode' computes the most +economical route through the elementary recodings, that is, the best +sequence of conversions that will transform the input charset into the +final charset. To speed up execution, `recode' looks for subsequences +of conversions which are simple enough to be merged, and then +dynamically creates new single steps to represent these mergings. + + A "double step" in `recode' is a special concept representing a +sequence of two single steps, the output of the first single step being +the special charset `UCS-2', the input of the second single step being +also `UCS-2'. Special `recode' machinery dynamically produces +efficient, reversible, merge-able single steps out of these double +steps. + + I made some statistics about how many internal recoding steps are +required between any two charsets chosen at random. The initial +recoding layout, before optimisation, always uses between 1 and 5 +steps. Optimisation could sometimes produce mere copies, which are +counted as no steps at all. In other cases, optimisation is unable to +save any step. The number of steps after optimisation is currently +between 0 and 5 steps. Of course, the _expected_ number of steps is +affected by optimisation: it drops from 2.8 to 1.8. This means that +`recode' uses a theoretical average of a bit less than one step per +recoding job. This looks good. This was computed using reversible +recodings. In strict mode, optimisation might be defeated somewhat. +Number of steps run between 1 and 6, both before and after +optimisation, and the expected number of steps decreases by a lesser +amount, going from 2.2 to 1.3. This is still manageable. +  File: recode.info, Node: New charsets, Next: New surfaces, Prev: Main flow, Up: Internals @@ -120,13 +256,15 @@ Adding new surfaces Adding a new surface is technically quite similar to adding a new charset. *Note New charsets::. A surface is provided as a set of two -transformations: one from the predefined special charset `data' to the -new surface, meant to apply the surface, the other from the new surface -to the predefined special charset `data', meant to remove the surface. +transformations: one from the predefined special charset `data' or +`tree' to the new surface, meant to apply the surface, the other from +the new surface to the predefined special charset `data' or `tree', +meant to remove the surface. Internally in `recode', function `declare_step' especially -recognises when a charset is so related to `data', and then takes -appropriate actions so that charset gets indeed installed as a surface. +recognises when a charset is so related to `data' or `tree', and then +takes appropriate actions so that charset gets indeed installed as a +surface.  File: recode.info, Node: Design, Prev: New surfaces, Up: Internals @@ -293,7 +431,7 @@ Comments on the library design should. Not only the doors should stay open, but we should force them wider! - --------- Notes en bas de page --------- + ---------- Footnotes ---------- (1) If strict mapping is requested, another efficient device will be used instead of a permutation. @@ -341,6 +479,7 @@ Concept Index * combining characters: UCS-2. * commutativity of surfaces: Requests. * contributing charsets: Contributing. +* conversions, unavailable: Charset overview. * convert a subset of characters: Mixed. * convert strings and comments: Mixed. * copyright conditions, printing: Listings. @@ -349,7 +488,7 @@ Concept Index * CR-LF surface, in IBM-PC charsets: IBM-PC. * Ctrl-Z, discarding: End lines. * Cyrillic charsets: Others. -* debugging surfaces: Debugging. +* debugging surfaces: Test. * default charset: Requests. * description of individual characters: dump-with-names. * details about recoding: Recoding. @@ -369,6 +508,7 @@ Concept Index * error level threshold: Errors. * error messages: Errors. * error messages, suppressing: Reversibility. +* exceptions to available conversions: Charset overview. * file sequencing: Sequencing. * file time stamps: Recoding. * filter operation: Synopsis. @@ -386,6 +526,7 @@ Concept Index * identifying subsets in charsets: Listings. * ignore charsets: Recoding. * implied surfaces: Requests. +* impossible conversions: Charset overview. * information about charsets: Listings. * initialisation functions, outer: Outer level. * initialisation functions, request: Request level. @@ -429,6 +570,7 @@ Concept Index * pipe sequencing: Sequencing. * program_name variable: Outer level. * programming language support: Listings. +* pseudo-charsets: Charset overview. * pure charset: Surface overview. * quality of recoding: Recoding. * recode internals: Internals. @@ -459,6 +601,7 @@ Concept Index * stdbool.h header: Outer level. * strict operation: Reversibility. * string and comments conversion: Mixed. +* structural surfaces: Surfaces. * subsets in charsets: Listings. * super-charsets: Mule. * supported programming languages: Listings. @@ -470,7 +613,9 @@ Concept Index * surfaces, implementation in recode: Surfaces. * surfaces, implied: Requests. * surfaces, overview: Surface overview. +* surfaces, structural: Surfaces. * surfaces, syntax: Requests. +* surfaces, trees: Surfaces. * system detected problem, error message: Errors. * task execution: Task level. * task level functions: Task level. @@ -480,8 +625,10 @@ Concept Index * time stamps of files: Recoding. * trivial surface: Surfaces. * tutorial: Tutorial. +* unavailable conversions: Charset overview. * Unicode: UCS-2. * unknown charsets: Listings. +* unreachable charsets: Charset overview. * untranslatable input, error message: Errors. * valid characters in charset names: Requests. * verbose operation: Recoding. diff --git a/doc/recode.info-6 b/doc/recode.info-6 index 6628eda..759cf2b 100644 --- a/doc/recode.info-6 +++ b/doc/recode.info-6 @@ -1,5 +1,4 @@ -This is recode.info, produced by makeinfo version 3.12n from -recode.texi. +This is recode.info, produced by makeinfo version 4.0 from recode.texi. INFO-DIR-SECTION Internationalization and character sets START-INFO-DIR-ENTRY @@ -9,8 +8,8 @@ END-INFO-DIR-ENTRY This file documents the `recode' command, which has the purpose of converting files between various character sets and surfaces. - Copyright (C) 1990, 93, 94, 96, 97, 98, 99 Free Software Foundation, -Inc. + Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software +Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are @@ -140,11 +139,17 @@ supported by `recode', and their aliases. * BS_viewdata, aliases and source: Tabular. * ca: Tabular. * CDC-NOS, and its aliases: CDC-NOS. +* CHINESE: libiconv. * cl: End lines. * cn: Tabular. +* CN: libiconv. +* CN-BIG5: libiconv. +* CN-GB: libiconv. +* CN-GB-ISOIR165: libiconv. * combined-UCS-2: UCS-2. * CORK: Others. * count-characters: count-characters. +* count-characters, not as before charset: Charset overview. * cp-ar: Tabular. * cp-gr: Tabular. * cp-hu: Tabular. @@ -224,7 +229,7 @@ supported by `recode', and their aliases. * CP918: Tabular. * CP932: libiconv. * CP936: libiconv. -* CP949: libiconv. +* CP949, aliases: libiconv. * CP950: libiconv. * CR, a surface: End lines. * CR-LF, a surface: End lines. @@ -233,39 +238,45 @@ supported by `recode', and their aliases. * CSA_Z243.4-1985-1, aliases and source: Tabular. * CSA_Z243.4-1985-2, aliases and source: Tabular. * CSA_Z243.4-1985-gr, aliases and source: Tabular. -* CSASCII: libiconv. -* CSBIG5: libiconv. -* CSEUCKR: libiconv. -* CSEUCPKDFMTJAPANESE: libiconv. -* CSEUCTW: libiconv. -* CSGB2312: libiconv. -* CSHALFWIDTHKATAKANA: libiconv. -* CSHPROMAN8: libiconv. -* CSIBM866: libiconv. -* CSISO159JISX02121990: libiconv. -* CSISO2022CN: libiconv. -* CSISO2022JP: libiconv. -* CSISO2022JP2: libiconv. -* CSISO2022KR: libiconv. -* CSISOLATIN1: libiconv. -* CSISOLATIN2: libiconv. -* CSISOLATIN3: libiconv. -* CSISOLATIN4: libiconv. -* CSISOLATIN5: libiconv. -* CSISOLATIN6: libiconv. -* CSISOLATINARABIC: libiconv. -* CSISOLATINCYRILLIC: libiconv. -* CSISOLATINGREEK: libiconv. -* CSISOLATINHEBREW: libiconv. -* CSKOI8R: libiconv. -* CSKSC56011987: libiconv. +* csASCII: libiconv. +* csBig5: libiconv. +* csEUCKR: libiconv. +* csEUCPkdFmtJapanese: libiconv. +* csEUCTW: libiconv. +* csGB2312: libiconv. +* csHalfWidthKatakana: libiconv. +* csHPRoman8: libiconv. +* csIBM866: libiconv. +* csISO14JISC6220ro: libiconv. +* csISO159JISX02121990: libiconv. +* csISO2022CN: libiconv. +* csISO2022JP: libiconv. +* csISO2022JP2: libiconv. +* csISO2022KR: libiconv. +* csISO57GB1988: libiconv. +* csISO58GB231280: libiconv. +* csISO87JISX0208: libiconv. +* csISOLatin1: libiconv. +* csISOLatin2: libiconv. +* csISOLatin3: libiconv. +* csISOLatin4: libiconv. +* csISOLatin5: libiconv. +* csISOLatin6: libiconv. +* csISOLatinArabic: libiconv. +* csISOLatinCyrillic: libiconv. +* csISOLatinGreek: libiconv. +* csISOLatinHebrew: libiconv. +* csKOI8R: libiconv. +* csKSC56011987: libiconv. +* csMacintosh: libiconv. * CSN_369103, aliases and source: Tabular. -* CSPC850MULTILINGUAL: libiconv. -* CSSHIFTJIS: libiconv. -* CSUCS4: libiconv. -* CSUNICODE: libiconv. -* CSUNICODE11UTF7: libiconv. -* CSVISCII: libiconv. +* csPC850Multilingual: libiconv. +* csShiftJIS: libiconv. +* csUCS4: libiconv. +* csUnicode: libiconv. +* csUnicode11: libiconv. +* csUnicode11UTF7: libiconv. +* csVISCII: libiconv. * cuba: Tabular. * CWI, aliases and source: Tabular. * CWI-2: Tabular. @@ -275,6 +286,7 @@ supported by `recode', and their aliases. * d2: Dump. * d4: Dump. * data, a special charset: Surfaces. +* data, not with charsets: Charset overview. * de: Tabular. * dec: Tabular. * DEC-MCS, aliases and source: Tabular. @@ -288,6 +300,7 @@ supported by `recode', and their aliases. * DS2089: Tabular. * DS_2089, aliases and source: Tabular. * dump-with-names: dump-with-names. +* dump-with-names, not as before charset: Charset overview. * e13b: Tabular. * EBCDIC, a charset: EBCDIC. * EBCDIC-AT-DE, aliases and source: Tabular. @@ -353,21 +366,29 @@ supported by `recode', and their aliases. * EUC-JP, aliases: libiconv. * EUC-KR, aliases: libiconv. * EUC-TW, aliases: libiconv. +* EUC_CN: libiconv. +* EUC_JP: libiconv. +* EUC_KR: libiconv. +* EUC_TW: libiconv. * EUCCN: libiconv. * EUCJP: libiconv. * EUCKR: libiconv. * EUCTW: libiconv. * ewondo: African. -* EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE: libiconv. +* Extended_UNIX_Code_Packed_Format_for_Japanese: libiconv. * FI: Tabular. * flat, a charset: flat. +* flat, not as before charset: Charset overview. * fr: Tabular. * friss: Tabular. * FSS_UTF: UTF-8. * fulfude: African. * gb: Tabular. * GB2312: libiconv. +* GB2312.1980-0: libiconv. +* GB_1988-80, aliases: libiconv. * GB_1988-80, aliases and source: Tabular. +* GB_2312-80, aliases: libiconv. * GB_2312-80, not recognised by recode: Tabular. * GBK, aliases: libiconv. * Georgian-Academy: libiconv. @@ -476,6 +497,7 @@ supported by `recode', and their aliases. * ISO-8859-14, aliases and source: Tabular. * ISO-8859-15, aliases: libiconv. * ISO-8859-15, aliases and source: Tabular. +* ISO-8859-16, aliases: libiconv. * ISO-8859-2, aliases: libiconv. * ISO-8859-2, aliases and source: Tabular. * ISO-8859-3, aliases: libiconv. @@ -518,6 +540,7 @@ supported by `recode', and their aliases. * ISO-IR-138: libiconv. * iso-ir-139: Tabular. * iso-ir-14: Tabular. +* ISO-IR-14: libiconv. * iso-ir-141: Tabular. * iso-ir-143: Tabular. * iso-ir-144: Tabular. @@ -539,6 +562,7 @@ supported by `recode', and their aliases. * iso-ir-158: Tabular. * ISO-IR-159: libiconv. * iso-ir-16: Tabular. +* ISO-IR-165, aliases: libiconv. * ISO-IR-166: libiconv. * iso-ir-17: Tabular. * iso-ir-170: Tabular. @@ -548,9 +572,12 @@ supported by `recode', and their aliases. * iso-ir-18: Tabular. * iso-ir-19: Tabular. * iso-ir-199: Tabular. +* ISO-IR-199: libiconv. * iso-ir-2: Tabular. * iso-ir-203: Tabular. +* ISO-IR-203: libiconv. * iso-ir-21: Tabular. +* ISO-IR-226: libiconv. * iso-ir-25: Tabular. * iso-ir-27: Tabular. * iso-ir-37: Tabular. @@ -562,6 +589,8 @@ supported by `recode', and their aliases. * iso-ir-54: Tabular. * iso-ir-55: Tabular. * iso-ir-57: Tabular. +* ISO-IR-57: libiconv. +* ISO-IR-58: libiconv. * iso-ir-6 <1>: ASCII. * iso-ir-6: Tabular. * ISO-IR-6: libiconv. @@ -573,6 +602,7 @@ supported by `recode', and their aliases. * iso-ir-84: Tabular. * iso-ir-85: Tabular. * iso-ir-86: Tabular. +* ISO-IR-87: libiconv. * iso-ir-88: Tabular. * iso-ir-89: Tabular. * iso-ir-9-1: Tabular. @@ -583,9 +613,13 @@ supported by `recode', and their aliases. * iso-ir-95: Tabular. * iso-ir-96: Tabular. * iso-ir-98: Tabular. +* ISO2022CN: libiconv. +* ISO2022JP: libiconv. +* ISO2022KR: libiconv. * ISO646-CA: Tabular. * ISO646-CA2: Tabular. -* ISO646-CN: Tabular. +* ISO646-CN <1>: Tabular. +* ISO646-CN: libiconv. * ISO646-CU: Tabular. * ISO646-DE: Tabular. * ISO646-DK: Tabular. @@ -597,7 +631,8 @@ supported by `recode', and their aliases. * ISO646-GB: Tabular. * ISO646-HU: Tabular. * ISO646-IT: Tabular. -* ISO646-JP: Tabular. +* ISO646-JP <1>: Tabular. +* ISO646-JP: libiconv. * ISO646-JP-OCR-B: Tabular. * ISO646-KR: Tabular. * ISO646-NO: Tabular. @@ -609,6 +644,39 @@ supported by `recode', and their aliases. * ISO646-US <1>: Tabular. * ISO646-US: libiconv. * ISO646-YU: Tabular. +* ISO646.1991-IRV: libiconv. +* ISO8859-1 <1>: Tabular. +* ISO8859-1: libiconv. +* ISO8859-10 <1>: Tabular. +* ISO8859-10: libiconv. +* ISO8859-13: Tabular. +* ISO8859-14: Tabular. +* ISO8859-15: Tabular. +* ISO8859-2 <1>: Tabular. +* ISO8859-2: libiconv. +* ISO8859-3 <1>: Tabular. +* ISO8859-3: libiconv. +* ISO8859-4 <1>: Tabular. +* ISO8859-4: libiconv. +* ISO8859-5 <1>: Tabular. +* ISO8859-5: libiconv. +* ISO8859-6 <1>: Tabular. +* ISO8859-6: libiconv. +* ISO8859-7 <1>: Tabular. +* ISO8859-7: libiconv. +* ISO8859-8 <1>: Tabular. +* ISO8859-8: libiconv. +* ISO8859-9 <1>: Tabular. +* ISO8859-9: libiconv. +* ISO8859_1: libiconv. +* ISO8859_2: libiconv. +* ISO8859_3: libiconv. +* ISO8859_4: libiconv. +* ISO8859_5: libiconv. +* ISO8859_6: libiconv. +* ISO8859_7: libiconv. +* ISO8859_8: libiconv. +* ISO8859_9: libiconv. * ISO_10367-box, aliases and source: Tabular. * ISO_10646: UCS-4. * ISO_2033-1983, aliases and source: Tabular. @@ -644,6 +712,8 @@ supported by `recode', and their aliases. * ISO_8859-15: libiconv. * ISO_8859-15(1998) <1>: Tabular. * ISO_8859-15(1998): libiconv. +* ISO_8859-16: libiconv. +* ISO_8859-16(2000): libiconv. * ISO_8859-2 <1>: Tabular. * ISO_8859-2: libiconv. * ISO_8859-2(1987) <1>: Tabular. @@ -682,9 +752,12 @@ supported by `recode', and their aliases. * isoir92: Tabular. * IT, aliases and source: Tabular. * JAVA: libiconv. +* JIS0201: libiconv. * JIS0208: libiconv. +* JIS0212: libiconv. * JIS_C6220-1969: Tabular. * JIS_C6220-1969-jp, aliases and source: Tabular. +* JIS_C6220-1969-RO, aliases: libiconv. * JIS_C6220-1969-ro, aliases and source: Tabular. * JIS_C6226-1978, not recognised by recode: Tabular. * JIS_C6229-1984-a, aliases and source: Tabular. @@ -698,16 +771,18 @@ supported by `recode', and their aliases. * JIS_X0208, aliases: libiconv. * JIS_X0208-1983: libiconv. * JIS_X0208-1990: libiconv. -* JIS_X0208.1983-0: libiconv. -* JIS_X0208.1983-1: libiconv. * JIS_X0212, aliases: libiconv. * JIS_X0212-1990: libiconv. * JIS_X0212-1990, not recognised by recode: Tabular. * JIS_X0212.1990-0: libiconv. * JISX0201-1976: libiconv. * JISX0201.1976-0: libiconv. +* JISX0208.1983-0: libiconv. +* JISX0208.1990-0: libiconv. +* JISX0212.1990-0: libiconv. * JOHAB, aliases: libiconv. * jp: Tabular. +* JP: libiconv. * jp-ocr-a: Tabular. * jp-ocr-b: Tabular. * jp-ocr-b-add: Tabular. @@ -738,6 +813,7 @@ supported by `recode', and their aliases. * KSC5601.1987-0: libiconv. * KSC5636, aliases and source: Tabular. * KSC_5601, aliases: libiconv. +* KSX1001(1992): libiconv. * l1: Tabular. * L1: libiconv. * l2: Tabular. @@ -748,7 +824,7 @@ supported by `recode', and their aliases. * L4: libiconv. * l5: Tabular. * L5: libiconv. -* l6: Tabular. +* L6 <1>: Tabular. * L6: libiconv. * l7: Tabular. * L7: libiconv. @@ -780,11 +856,13 @@ supported by `recode', and their aliases. * LATIN8: libiconv. * latin9: Tabular. * libiconv: libiconv. +* libiconv, not in requests: Charset overview. * lin: African. * lingala: African. * ltex: LaTeX. * mac <1>: Apple-Mac. * mac: Tabular. +* MAC: libiconv. * mac-is, aliases and source: Tabular. * MacArabic: libiconv. * macce <1>: Apple-Mac. @@ -897,10 +975,10 @@ supported by `recode', and their aliases. * TCVN-5712: libiconv. * TCVN5712-1: libiconv. * TCVN5712-1(1993): libiconv. -* test15: Debugging. -* test16: Debugging. -* test7: Debugging. -* test8: Debugging. +* test15: Test. +* test16: Test. +* test7: Test. +* test8: Test. * texi: Texinfo. * Texinfo, a charset: Texinfo. * Texte: Texte. @@ -914,6 +992,7 @@ supported by `recode', and their aliases. * TIS620.2529-1: libiconv. * TIS620.2533-0: libiconv. * TIS620.2533-1: libiconv. +* tree, a special charset: Surfaces. * txte: Texte. * u2: UCS-2. * u4: UCS-4. @@ -923,18 +1002,20 @@ supported by `recode', and their aliases. * UCS: Universal. * UCS-2: UCS-2. * UCS-2, aliases: libiconv. -* UCS-2-BE, aliases: libiconv. * UCS-2-INTERNAL: libiconv. -* UCS-2-LE, aliases: libiconv. * UCS-2-SWAPPED: libiconv. +* UCS-2BE, aliases: libiconv. +* UCS-2LE, aliases: libiconv. * UCS-4: UCS-4. * UCS-4, aliases: libiconv. -* UCS-4-BE: libiconv. * UCS-4-INTERNAL: libiconv. -* UCS-4-LE: libiconv. * UCS-4-SWAPPED: libiconv. +* UCS-4BE: libiconv. +* UCS-4LE: libiconv. +* UHC: libiconv. * uk: Tabular. * Unicode, an alias for UTF-16: UTF-16. +* UNICODE-1-1: libiconv. * UNICODE-1-1-UTF-7: libiconv. * UNICODE-1-1-UTF-7, and aliases: UTF-7. * UNICODEBIG: libiconv. @@ -949,12 +1030,15 @@ supported by `recode', and their aliases. * UTF-1: Universal. * UTF-16: libiconv. * UTF-16, and aliases: UTF-16. +* UTF-16BE: libiconv. +* UTF-16LE: libiconv. * UTF-7: UTF-7. * UTF-7, aliases: libiconv. -* UTF-8 <1>: libiconv. * UTF-8: UTF-8. +* UTF-8, aliases <1>: libiconv. * UTF-8, aliases: UTF-8. * UTF-FSS: UTF-8. +* UTF8: libiconv. * VIQR: Vietnamese. * VISCII: Vietnamese. * VISCII, aliases: libiconv. @@ -988,6 +1072,7 @@ supported by `recode', and their aliases. * X0201 <1>: Tabular. * X0201: libiconv. * x0201-7: Tabular. +* X0208: libiconv. * X0212: libiconv. * x1: Dump. * x2: Dump. diff --git a/doc/recode.texi b/doc/recode.texi index fc516a9..ec942b1 100644 --- a/doc/recode.texi +++ b/doc/recode.texi @@ -21,7 +21,7 @@ This file documents the @code{recode} command, which has the purpose of converting files between various character sets and surfaces. -Copyright (C) 1990, 93, 94, 96, 97, 98, 99 Free Software Foundation, Inc. +Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -53,7 +53,7 @@ by the Foundation. @page @vskip 0pt plus 1filll -Copyright @copyright{} 1993, 94, 97, 98, 99 Free Software Foundation, Inc. +Copyright @copyright{} 1993, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -79,10 +79,10 @@ by the Foundation. This recoding library converts files between various coded character sets and surface encodings. When this cannot be achieved exactly, it may get rid of the offending characters or fall back on approximations. -The library recognises or produces nearly 150 different character sets and -is able to convert files between almost any pair. Most @w{RFC 1345} character -sets are supported. The @code{recode} program is a handy front-end to -the library. +The library recognises or produces more than 300 different character sets +and is able to convert files between almost any pair. Most @w{RFC 1345} +character sets, and all @code{libiconv} character sets, are supported. +The @code{recode} program is a handy front-end to the library. The current @code{recode} release is @value{VERSION}. @@ -101,10 +101,10 @@ The current @code{recode} release is @value{VERSION}. * Miscellaneous:: Various other charsets * Surfaces:: All about surfaces * Internals:: Internal aspects -* Concept Index:: -* Option Index:: -* Library Index:: -* Charset and Surface Index:: +* Concept Index:: Concept Index +* Option Index:: Option Index +* Library Index:: Library Index +* Charset and Surface Index:: Charset and Surface Index @detailmenu --- The Detailed Node Listing --- @@ -125,6 +125,7 @@ How to use this program * Sequencing:: Selecting sequencing methods * Mixed:: Using mixed charset input * Emacs:: Using @code{recode} within Emacs +* Debugging:: Debugging considerations A recoding library @@ -185,7 +186,7 @@ All about surfaces * End lines:: Representation for end of lines * MIME:: MIME contents encodings * Dump:: Interpreted character dumps -* Debugging:: Artificial data +* Test:: Artificial data for testing Internal aspects @@ -379,7 +380,7 @@ not impair the usefulness, generality or extensibility of the program. The program @code{recode} has been written by Fran@,{c}ois Pinard. With time, it got to reuse works from other contributors, and notably, -those of Keld Simonsen. +those of Keld Simonsen and Bruno Haible. @menu * Charset overview:: Overview of charsets @@ -391,9 +392,10 @@ those of Keld Simonsen. @section Overview of charsets @cindex charsets, overview -Recoding is currently possible between many charsets, the bulk of which -is described by @w{RFC 1345} tables. @xref{Tabular}. The @code{recode} -library also handles some charsets in some specialised ways. These are: +Recoding is currently possible between many charsets, the bulk of which is +described by @w{RFC 1345} tables or available in the @code{iconv} library. +@xref{Tabular}, and @pxref{libiconv}. The @code{recode} library also +handles some charsets in some specialised ways. These are: @itemize @bullet @item @@ -421,6 +423,26 @@ charsets having the functionality of older ones, but yet being different in subtle ways. The effects have not been fully investigated yet, so for now, clashes are avoided, the old and new charsets are kept well separate. +@cindex unavailable conversions +@cindex conversions, unavailable +@cindex impossible conversions +@cindex unreachable charsets +@cindex exceptions to available conversions +@cindex pseudo-charsets +@tindex flat@r{, not as before charset} +@tindex count-characters@r{, not as before charset} +@tindex dump-with-names@r{, not as before charset} +@tindex data@r{, not with charsets} +@tindex libiconv@r{, not in requests} +Conversion is possible between almost any pair of charsets. Here is a +list of the exceptions. One may not recode @emph{from} the @code{flat}, +@code{count-characters} or @code{dump-with-names} charsets, nor @emph{from} +or @emph{to} the @code{data}, @code{tree} or @code{:libiconv:} charsets. +Also, if we except the @code{data} and @code{tree} pseudo-charsets, charsets +and surfaces live in disjoint recoding spaces, one cannot really transform +a surface into a charset or vice-versa, as surfaces are only meant to be +applied over charsets, or removed from them. + @node Surface overview, Contributing, Charset overview, Introduction @section Overview of surfaces @@ -512,6 +534,7 @@ control. * Sequencing:: Selecting sequencing methods * Mixed:: Using mixed charset input * Emacs:: Using @code{recode} within Emacs +* Debugging:: Debugging considerations @end menu @node Synopsis, Requests, Invoking recode, Invoking recode @@ -1504,7 +1527,7 @@ and original @code{msgid} strings are not to be touched by this recoding. If @var{language} is not specified, @samp{c} is assumed. @end table -@node Emacs, , Mixed, Invoking recode +@node Emacs, Debugging, Mixed, Invoking recode @section Using @code{recode} within Emacs The fact @code{recode} is a filter makes it quite easy to use from @@ -1534,6 +1557,94 @@ the current region from Easy French to @w{@code{Latin-1}} (on Unix) and the key (exchange-point-and-mark)) @end example +@node Debugging, , Emacs, Invoking recode +@section Debugging considerations + +It is our experience that when @code{recode} does not provide satisfying +results, either @code{recode} was not called properly, correct results +raised some doubts nevertheless, or files to recode were somewhat mangled. +Genuine bugs are surely possible. + +Unless you already are a @code{recode} expert, it might be a good idea to +quickly revisit the tutorial (@pxref{Tutorial}) or the prior sections in this +chapter, to make sure that you properly formatted your recoding request. +In the case you intended to use @code{recode} as a filter, make sure that you +did not forget to redirect your standard input (through using the @kbd{<} +symbol in the shell, say). Some @code{recode} false mysteries are also +easily explained, @xref{Reversibility}. + +For the other cases, some investigation is needed. To illustrate how to +proceed, let's presume that you want to recode the @file{nicepage} file, +coded @code{UTF-8}, into @code{HTML}. The problem is that the command +@samp{recode u8..h nicepage} yields: + +@example +recode: Invalid input in step `UTF-8..ISO-10646-UCS-2' +@end example + +One good trick is to use @code{recode} in filter mode instead of in file +replacement mode, @xref{Synopsis}. Another good trick is to use the +@samp{-v} option asking for a verbose description of the recoding steps. +We could rewrite our recoding call as @samp{recode -v u8..h temporary +recode -v ISO_10646-UCS-2..HTML_4.0 }, then @code{recode} might have done a bit more +that you wanted. In this case, your input file was half-@code{UTF-8}, +half-@code{HTML} already, that is, a mixed file (@pxref{Mixed}). There is a +special @code{-d} switch for this case. So, your might be end up calling +@samp{recode -fd nicepage}. Until you are quite sure that you accept +overwriting your input file whatever what, I recommend that you stick with +filter mode. + +If, after such experiments, you seriously think that the @code{recode} +program does not behave properly, there might be a genuine bug in the +program itself, in which case I invite you to to contribute a bug report, +@xref{Contributing}. + @node Library, Universal, Invoking recode, Top @chapter A recoding library @@ -2903,7 +3014,7 @@ library implements most of @w{RFC 1345}, however: @tindex dk-us@r{, not recognised by }recode @tindex us-dk@r{, not recognised by }recode It does not recognise those charsets which overload character positions: -@code{dk-us} and @code{us-dk}. However, see @ref{Mixed}. +@code{dk-us} and @code{us-dk}. However, @xref{Mixed}. @item @tindex ANSI_X3.110-1983@r{, not recognised by }recode @@ -4061,26 +4172,39 @@ and usage. @xref{Universal}. @cindex surfaces, implementation in @code{recode} @tindex data@r{, a special charset} -Surfaces are implemented within @code{recode} as special charsets which may -only transform to or from the @code{data} special charset. Clever users -may use this knowledge for writing surface names in requests exactly as if -they were pure charsets, when the only need is to change surfaces without -any kind of recoding between real charsets. In such contexts, @code{data} -may also be used as if it were some kind of generic, anonymous charset: -the request @samp{data..@var{surface}} merely adds the given @var{surface}, +@tindex tree@r{, a special charset} +Surfaces are implemented within @code{recode} as special charsets +which may only transform to or from the @code{data} or @code{tree} +special charsets. Clever users may use this knowledge for writing +surface names in requests exactly as if they were pure charsets, when +the only need is to change surfaces without any kind of recoding between +real charsets. In such contexts, either @code{data} or @code{tree} may +also be used as if it were some kind of generic, anonymous charset: the +request @samp{data..@var{surface}} merely adds the given @var{surface}, while the request @samp{@var{surface}..data} removes it. -We are only beginning to experiment with surfaces in @code{recode}, but -the concept opens the doors to many avenues; it is not clear yet which -ones are worth pursuing, and which should be abandoned. This chapter -presents all surfaces currently available. +@cindex structural surfaces +@cindex surfaces, structural +@cindex surfaces, trees +The @code{recode} library distinguishes between mere data surfaces, and +structural surfaces, also called tree surfaces for short. Structural +surfaces might allow, in the long run, transformations between a few +specialised representations of structural information like MIME parts, +Perl or Python initialisers, LISP S-expressions, XML, Emacs outlines, etc. + +We are still experimenting with surfaces in @code{recode}. The concept opens +the doors to many avenues; it is not clear yet which ones are worth pursuing, +and which should be abandoned. In particular, implementation of structural +surfaces is barely starting, there is not even a commitment that tree +surfaces will stay in @code{recode}, if they do prove to be more cumbersome +than useful. This chapter presents all surfaces currently available. @menu * Permutations:: Permuting groups of bytes * End lines:: Representation for end of lines * MIME:: MIME contents encodings * Dump:: Interpreted character dumps -* Debugging:: Artificial data +* Test:: Artificial data for testing @end menu @node Permutations, End lines, Surfaces, Surfaces @@ -4197,7 +4321,7 @@ Internet standards. MIME changed from a ``Proposed Standard'' (@w{RFC and was @emph{recycled} as a ``Draft Standard'' in 1996-11. It is not yet a ``Full Standard''. -@node Dump, Debugging, MIME, Surfaces +@node Dump, Test, MIME, Surfaces @section Interpreted character dumps @cindex dumping characters @@ -4314,8 +4438,8 @@ far end. Also, source lines not beginning with a number are skipped. So, @code{recode} should often be able to read a whole C header file, wrapping the results of a previous dump, and regenerate the original byte string. -@node Debugging, , Dump, Surfaces -@section Artificial data +@node Test, , Dump, Surfaces +@section Artificial data for testing A few pseudo-surfaces exist to generate debugging data out of thin air. These surfaces are only meant for the expert @code{recode} user, and are @@ -4443,19 +4567,17 @@ efficient, reversible, merge-able single steps out of these double steps. @cindex average number of recoding steps I made some statistics about how many internal recoding steps are required between any two charsets chosen at random. The initial recoding layout, -before optimisation, always uses between 1 and 6 steps. Optimisation could +before optimisation, always uses between 1 and 5 steps. Optimisation could sometimes produce mere copies, which are counted as no steps at all. In other cases, optimisation is unable to save any step. The number of -steps after optimisation is currently between 0 and 6 steps. Of course, -the @emph{expected} number of steps is affected by optimisation: it -drops from 2.2 to 0.9.@footnote{The above numbers were for @code{recode} -version 3.4. After UCS additions, it drops from 2.3 to 1.1.} This means -that @code{recode} uses a theoretical average of a bit less than one step -per recoding job. This looks good. This was computed using reversible -recodings. In strict mode, optimisation might be defeated somewhat. -Number of steps run between 1 and 6, both before and after optimisation, -and the expected number of steps decreases by a lesser amount, going from -2.2 to 1.3. This is still manageable. +steps after optimisation is currently between 0 and 5 steps. Of course, +the @emph{expected} number of steps is affected by optimisation: it drops +from 2.8 to 1.8. This means that @code{recode} uses a theoretical average +of a bit less than one step per recoding job. This looks good. This was +computed using reversible recodings. In strict mode, optimisation might +be defeated somewhat. Number of steps run between 1 and 6, both before +and after optimisation, and the expected number of steps decreases by a +lesser amount, going from 2.2 to 1.3. This is still manageable. @node New charsets, New surfaces, Main flow, Internals @section Adding new charsets @@ -4556,15 +4678,17 @@ the fact your routines is written in C or in Flex. @cindex new surfaces, how to add Adding a new surface is technically quite similar to adding a new charset. -@xref{New charsets}. A surface is provided as a set of two -transformations: one from the predefined special charset @code{data} to -the new surface, meant to apply the surface, the other from the new surface -to the predefined special charset @code{data}, meant to remove the surface. +@xref{New charsets}. A surface is provided as a set of two transformations: +one from the predefined special charset @code{data} or @code{tree} to the +new surface, meant to apply the surface, the other from the new surface +to the predefined special charset @code{data} or @code{tree}, meant to +remove the surface. @findex declare_step Internally in @code{recode}, function @code{declare_step} especially -recognises when a charset is so related to @code{data}, and then takes -appropriate actions so that charset gets indeed installed as a surface. +recognises when a charset is so related to @code{data} or @code{tree}, +and then takes appropriate actions so that charset gets indeed installed +as a surface. @node Design, , New surfaces, Internals @section Comments on the library design diff --git a/doc/rfc1345.texi b/doc/rfc1345.texi index 9d4b964..b1e3d6e 100644 --- a/doc/rfc1345.texi +++ b/doc/rfc1345.texi @@ -644,54 +644,59 @@ Source: ISO 2375 registry. @tindex 819 @tindex CP819 @tindex IBM819 +@tindex ISO8859-1 @tindex ISO_8859-1 @tindex ISO_8859-1(1987) @tindex iso-ir-100 @tindex l1 @tindex latin1 -@code{819}, @code{CP819}, @code{IBM819}, @code{ISO_8859-1}, @code{ISO_8859-1:1987}, @code{iso-ir-100}, @code{l1} and @code{latin1} are aliases for this charset. +@code{819}, @code{CP819}, @code{IBM819}, @code{ISO8859-1}, @code{ISO_8859-1}, @code{ISO_8859-1:1987}, @code{iso-ir-100}, @code{l1} and @code{latin1} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-10 @tindex ISO-8859-10@r{, aliases and source} +@tindex ISO8859-10 @tindex ISO_8859-10 @tindex ISO_8859-10(1993) +@tindex L6 @tindex iso-ir-157 -@tindex l6 @tindex latin6 -@code{ISO_8859-10}, @code{ISO_8859-10:1993}, @code{iso-ir-157}, @code{l6} and @code{latin6} are aliases for this charset. +@code{ISO8859-10}, @code{ISO_8859-10}, @code{ISO_8859-10:1993}, @code{L6}, @code{iso-ir-157} and @code{latin6} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-13 @tindex ISO-8859-13@r{, aliases and source} +@tindex ISO8859-13 @tindex ISO_8859-13 @tindex ISO_8859-13(1998) @tindex iso-baltic @tindex iso-ir-179a @tindex l7 @tindex latin7 -@code{ISO_8859-13}, @code{ISO_8859-13:1998}, @code{iso-baltic}, @code{iso-ir-179a}, @code{l7} and @code{latin7} are aliases for this charset. +@code{ISO8859-13}, @code{ISO_8859-13}, @code{ISO_8859-13:1998}, @code{iso-baltic}, @code{iso-ir-179a}, @code{l7} and @code{latin7} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-14 @tindex ISO-8859-14@r{, aliases and source} +@tindex ISO8859-14 @tindex ISO_8859-14 @tindex ISO_8859-14(1998) @tindex iso-celtic @tindex iso-ir-199 @tindex l8 @tindex latin8 -@code{ISO_8859-14}, @code{ISO_8859-14:1998}, @code{iso-celtic}, @code{iso-ir-199}, @code{l8} and @code{latin8} are aliases for this charset. +@code{ISO8859-14}, @code{ISO_8859-14}, @code{ISO_8859-14:1998}, @code{iso-celtic}, @code{iso-ir-199}, @code{l8} and @code{latin8} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-15 @tindex ISO-8859-15@r{, aliases and source} +@tindex ISO8859-15 @tindex ISO_8859-15 @tindex ISO_8859-15(1998) @tindex iso-ir-203 @tindex l9 @tindex latin9 -@code{ISO_8859-15}, @code{ISO_8859-15:1998}, @code{iso-ir-203}, @code{l9} and @code{latin9} are aliases for this charset. +@code{ISO8859-15}, @code{ISO_8859-15}, @code{ISO_8859-15:1998}, @code{iso-ir-203}, @code{l9} and @code{latin9} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-2 @@ -699,83 +704,91 @@ Source: ISO 2375 registry. @tindex 912 @tindex CP912 @tindex IBM912 +@tindex ISO8859-2 @tindex ISO_8859-2 @tindex ISO_8859-2(1987) @tindex iso-ir-101 @tindex l2 @tindex latin2 -@code{912}, @code{CP912}, @code{IBM912}, @code{ISO_8859-2}, @code{ISO_8859-2:1987}, @code{iso-ir-101}, @code{l2} and @code{latin2} are aliases for this charset. +@code{912}, @code{CP912}, @code{IBM912}, @code{ISO8859-2}, @code{ISO_8859-2}, @code{ISO_8859-2:1987}, @code{iso-ir-101}, @code{l2} and @code{latin2} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-3 @tindex ISO-8859-3@r{, aliases and source} +@tindex ISO8859-3 @tindex ISO_8859-3 @tindex ISO_8859-3(1988) @tindex iso-ir-109 @tindex l3 @tindex latin3 -@code{ISO_8859-3}, @code{ISO_8859-3:1988}, @code{iso-ir-109}, @code{l3} and @code{latin3} are aliases for this charset. +@code{ISO8859-3}, @code{ISO_8859-3}, @code{ISO_8859-3:1988}, @code{iso-ir-109}, @code{l3} and @code{latin3} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-4 @tindex ISO-8859-4@r{, aliases and source} +@tindex ISO8859-4 @tindex ISO_8859-4 @tindex ISO_8859-4(1988) @tindex iso-ir-110 @tindex l4 @tindex latin4 -@code{ISO_8859-4}, @code{ISO_8859-4:1988}, @code{iso-ir-110}, @code{l4} and @code{latin4} are aliases for this charset. +@code{ISO8859-4}, @code{ISO_8859-4}, @code{ISO_8859-4:1988}, @code{iso-ir-110}, @code{l4} and @code{latin4} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-5 @tindex ISO-8859-5@r{, aliases and source} +@tindex ISO8859-5 @tindex ISO_8859-5 @tindex ISO_8859-5(1988) @tindex cyrillic @tindex iso-ir-144 -@code{ISO_8859-5}, @code{ISO_8859-5:1988}, @code{cyrillic} and @code{iso-ir-144} are aliases for this charset. +@code{ISO8859-5}, @code{ISO_8859-5}, @code{ISO_8859-5:1988}, @code{cyrillic} and @code{iso-ir-144} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-6 @tindex ISO-8859-6@r{, aliases and source} @tindex ASMO-708 @tindex ECMA-114 +@tindex ISO8859-6 @tindex ISO_8859-6 @tindex ISO_8859-6(1987) @tindex arabic @tindex iso-ir-127 -@code{ASMO-708}, @code{ECMA-114}, @code{ISO_8859-6}, @code{ISO_8859-6:1987}, @code{arabic} and @code{iso-ir-127} are aliases for this charset. +@code{ASMO-708}, @code{ECMA-114}, @code{ISO8859-6}, @code{ISO_8859-6}, @code{ISO_8859-6:1987}, @code{arabic} and @code{iso-ir-127} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-7 @tindex ISO-8859-7@r{, aliases and source} @tindex ECMA-118 @tindex ELOT_928 +@tindex ISO8859-7 @tindex ISO_8859-7 @tindex ISO_8859-7(1987) @tindex greek @tindex greek8 @tindex iso-ir-126 -@code{ECMA-118}, @code{ELOT_928}, @code{ISO_8859-7}, @code{ISO_8859-7:1987}, @code{greek}, @code{greek8} and @code{iso-ir-126} are aliases for this charset. +@code{ECMA-118}, @code{ELOT_928}, @code{ISO8859-7}, @code{ISO_8859-7}, @code{ISO_8859-7:1987}, @code{greek}, @code{greek8} and @code{iso-ir-126} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-8 @tindex ISO-8859-8@r{, aliases and source} +@tindex ISO8859-8 @tindex ISO_8859-8 @tindex ISO_8859-8(1988) @tindex hebrew @tindex iso-ir-138 -@code{ISO_8859-8}, @code{ISO_8859-8:1988}, @code{hebrew} and @code{iso-ir-138} are aliases for this charset. +@code{ISO8859-8}, @code{ISO_8859-8}, @code{ISO_8859-8:1988}, @code{hebrew} and @code{iso-ir-138} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-9 @tindex ISO-8859-9@r{, aliases and source} +@tindex ISO8859-9 @tindex ISO_8859-9 @tindex ISO_8859-9(1989) @tindex iso-ir-148 @tindex l5 @tindex latin5 -@code{ISO_8859-9}, @code{ISO_8859-9:1989}, @code{iso-ir-148}, @code{l5} and @code{latin5} are aliases for this charset. +@code{ISO8859-9}, @code{ISO_8859-9}, @code{ISO_8859-9:1989}, @code{iso-ir-148}, @code{l5} and @code{latin5} are aliases for this charset. Source: ISO 2375 registry. @item ISO_10367-box diff --git a/doc/stamp-vti b/doc/stamp-vti index d83d668..29badf5 100644 --- a/doc/stamp-vti +++ b/doc/stamp-vti @@ -1,3 +1,3 @@ -@set UPDATED 29 December 1999 -@set EDITION 3.5c -@set VERSION 3.5c +@set UPDATED 28 June 2000 +@set EDITION 3.5d +@set VERSION 3.5d diff --git a/doc/tables.py b/doc/tables.py index 032dfae..1141df0 100755 --- a/doc/tables.py +++ b/doc/tables.py @@ -1,7 +1,7 @@ #!/usr/bin/python # -*- coding: latin-1 -*- # Automatically derive `recode' table files from various sources. -# Copyright © 1993, 1994, 1997, 1998, 1999 Free Software Foundation, Inc. +# Copyright © 1993, 1994, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. # François Pinard , 1993. # This program is free software; you can redistribute it and/or modify @@ -39,146 +39,52 @@ When `-F' and `-n' are used, process Alain's tables. import re, string, sys -# Generated file names. -CHARNAME = 'charname.h' -EXPLODE = 'explode.c' -LIBICONV = 'libiconv.h' -POOL = 'strip-pool.c' -DATA = 'strip-data.c' -LIBICONV_TEXINFO = 'libiconv.texi' -RFC1345_MNEMONIC = 'rfc1345.h' -RFC1345_TEXINFO = 'rfc1345.texi' - -# Ignore any mnemonic whose length is greater than MAX_MNEMONIC_LENGTH. -MAX_MNEMONIC_LENGTH = 3 - # Character constants. REPLACEMENT_CHARACTER = 0xFFFD NOT_A_CHARACTER = 0xFFFF -# Change STRIP_SIZE in `src/recode.h' if you change the value here. -# See the accompanying documentation there, as needed. -STRIP_SIZE = 8 - -# Handling basic input and output. - -class Input: - - def __init__(self, name): - self.name = name - self.input = open(name) - self.line_count = 0 - sys.stderr.write("Reading %s\n" % name) - - def readline(self): - self.line = self.input.readline() - self.line_count = self.line_count + 1 - return self.line - - def warn(self, format, *args): - sys.stderr.write('%s:%s: %s\n' - % (self.name, self.line_count, format % args)) - - def die(self, format, *args): - sys.stderr.write('%s:%s: %s\n' - % (self.name, self.line_count, format % args)) - raise 'Fatal' - - def begins(self, text): - return self.line[:len(text)] == text - - def match(self, pattern): - return re.match(pattern, self.line) - - def search(self, pattern): - return re.search(pattern, self.line) - -class Output: - - def __init__(self, name, noheader=0): - self.name = name - self.write = open(name, 'w').write - sys.stderr.write("Writing %s\n" % name) - if not noheader: - self.write("""\ -/* DO NOT MODIFY THIS FILE! It was generated by `recode/doc/tables.py'. */ - -/* Conversion of files between different charsets and surfaces. - Copyright © 1999 Free Software Foundation, Inc. - Contributed by François Pinard , 1993, 1997. - - The `recode' Library 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 of the - License, or (at your option) any later version. - - The `recode' Library is distributed in the hope that 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 the `recode' Library; see the file `COPYING.LIB'. - If not, write to the Free Software Foundation, Inc., 59 Temple Place - - Suite 330, Boston, MA 02111-1307, USA. */ -""") - # Main driver. - def main(*arguments): - global input - - global alias_count - global charset_ordinal - global comment - global discard_charset - - global charname_option - global explode_option - global libiconv_option - global mnemonic_option - global strip_option - global libiconv_texinfo_option - global rfc1345_texinfo_option - import getopt - - # Argument decoding. + global explodes + charnames = explodes = libiconv = mnemonics = rfc1345 = strips = None French_option = 0 - charname_option = 0 - explode_option = 0 - libiconv_option = 0 - mnemonic_option = 0 - strip_option = 0 - libiconv_texinfo_option = 0 - rfc1345_texinfo_option = 0 options, arguments = getopt.getopt(arguments, 'Felmnpst') for option, value in options: - if option == '-F': French_option = 1 - elif option == '-e': explode_option = 1 - elif option == '-l': libiconv_option = 1 - elif option == '-m': mnemonic_option = 1 - elif option == '-n': charname_option = 1 - elif option == '-p': strip_option = 1 - elif option == '-s': libiconv_texinfo_option = 1 - elif option == '-t': rfc1345_texinfo_option = 1 + if option == '-F': + French_option = 1 + elif option == '-e': + if not explodes: + explodes = Explodes() + explodes.do_sources = 1 + elif option == '-l': + if not libiconv: + libiconv = Libiconv() + libiconv.do_sources = 1 + elif option == '-m': + if not mnemonics: + mnemonics = Mnemonics() + mnemonics.do_sources = 1 + elif option == '-n': + if not charnames: + charnames = Charnames() + charnames.do_sources = 1 + elif option == '-p': + if not strips: + strips = Strips() + strips.do_sources = 1 + elif option == '-s': + if not libiconv: + libiconv = Libiconv() + libiconv.do_texinfo = 1 + elif option == '-t': + if not strips: + strips = Strips() + strips.do_texinfo = 1 if not arguments: raise __doc__ - if explode_option: - produce_explode_init(EXPLODE) - elif strip_option: - produce_strip_init(DATA) - - # Prepare to read various tables. - - charset_ordinal = 0 - discard_charset = 0 - alias_count = 0 - comment = '' - # Read all data tables. - for name in arguments: input = Input(name) while 1: @@ -191,187 +97,344 @@ def main(*arguments): while string.find(line, '*/') < 0: line = input.readline() continue - if input.begins('DEFENCODING'): - digest_libiconv() + if not libiconv: + libiconv = Libiconv() + libiconv.digest(input) break - if input.begins('# Name:'): - digest_unimap() + if not strips: + strips = Strips() + strips.digest_unimap(input) break - if line[0] == '#': continue - if input.begins('escape_char'): - digest_mnemonics() + if not mnemonics: + mnemonics = Mnemonics() + mnemonics.digest_mnemonics_ds(input) break - if input.match('Network Working Group +K\. Simonsen$'): - if charname_option and not French_option: + if charnames and charnames.do_sources and not French_option: while not input.begins( ' 3rd field is the long descriptive'): line = input.readline() - digest_rfc1345_names() - if explode_option or strip_option: + if not mnemonics: + mnemonics = Mnemonics() + mnemonics.digest_rfc1345(input, charnames) + if explodes or strips: while line != '5. CHARSET TABLES\n': line = input.readline() - digest_rfc1345_tables() + if not strips: + strips = Strips() + strips.digest_rfc1345(input, mnemonics) break - - if input.begins(';Titre :'): - if charname_option and French_option: - while input.begins('; SOUSCRIT'): - line = input.readline() - while not input.match(' *$'): - line = input.readline() - digest_french_names() + if input.begins('@@\t'): + if charnames.do_sources and French_option: + charnames.digest_french(input) break - if line == '&referenceset\n': while line != '\n': line = input.readline() - digest_rfc1345_tables() + if not strips: + strips = Strips() + if not mnemonics: + mnemonics = Mnemonics() + strips.digest_rfc1345(input, mnemonics) break - - if line == ' Repertoire according to ISO/IEC 10646-1:1993\n': - while line != ' Plane 000\n': + if line in (' Repertoire according to ISO/IEC 10646-1:1993\n', + ' Control characters\n', + ' Private use\n'): + while line not in (' Plane 000\n', + ' plane 000\n'): line = input.readline() - digest_iso10646_def() + if not mnemonics: + mnemonics = Mnemonics() + mnemonics.digest_iso10646_def(input) break - input.die("Data file with unknown contents") + for instance in explodes, strips, charnames, libiconv, mnemonics: + if instance: + instance.complete(French_option) - del input +class Options: - if explode_option: - produce_explode_term() - elif strip_option: - produce_strip_term(POOL) - if charname_option: - if French_option: - produce_charname('fr-%s' % CHARNAME) - else: - produce_charname(CHARNAME) - if libiconv_option: - produce_libiconv(LIBICONV) - if mnemonic_option: - produce_mnemonic(RFC1345_MNEMONIC) - if libiconv_texinfo_option: - if French_option: - produce_libiconv_texinfo('fr-%s' % LIBICONV_TEXINFO) - else: - produce_libiconv_texinfo(LIBICONV_TEXINFO) - if rfc1345_texinfo_option: - if French_option: - produce_rfc1345_texinfo('fr-%s' % RFC1345_TEXINFO) - else: - produce_rfc1345_texinfo(RFC1345_TEXINFO) + def __init__(self): + self.do_sources = 0 + self.do_texinfo = 0 -# Data readers. - -## ----------------------------------------- ## -## Read in Keld's list of 10646 characters. ## -## ----------------------------------------- ## - -def digest_iso10646_def(): - global row, cell - - while 1: - line = input.readline() - if not line: - break - if line == '\n': - continue - if line == ' \n': - continue # happens three times - if input.begins(' \.\.\.'): - continue - if line == ' Presentation forms\n': - continue - if input.begins(' naming: first vertical '): - continue - - match = input.match(' row ([0-9][0-9][0-9])$') - if match and int(match.group(1)) < 256: - row = int(match.group(1)) - cell = 0 - continue - - if line == ' cell 00\n': - cell = 0 - continue - - match = input.match(' cell ([0-9][0-9][0-9])$') - if match and int(match.group(1)) < 256: - cell = int(match.group(1)) - continue - - match = input.match(' ([^ ]+)') - if match: # FIXME: $1 n'a pas de sens! - # s/^ // unless /^ [A-Z][A-Z][A-Z]/; - if not input.match(' [A-Z][A-Z][A-Z]'): - continue +# Charnames. - match = input.match(' ([^ ].*)') - if match: # FIXME: $1 n'a pas de sens! - if cell == 256: - input.warn("Over 256 cells in row %d", row) - cell = cell + 1 - continue - - match = (input.match('([^ ]) ([^ ].*)') - or input.match('([^ ][^ ]+) ([^ ].*)')) - if match: # FIXME: $2 n'a pas de sens! - if cell == 256: - input.warn("Over 256 cells in row %d", row) - declare_mnemonic(match.group(1), 256*row + cell) - cell = cell + 1 - continue - - input.warn("Unrecognised line") - -## -------------------------- ## -## Read in a mnemonics file. ## -## -------------------------- ## - -def digest_mnemonics(): - while input.readline(): - match = input.match('<([^ \t\n]+)>\t') - if match: - mnemonic = re.sub('/(.)', r'\1', match.group(1)) - ucs2 = string.atoi(match.group(2), 16) - declare_mnemonic(mnemonic, ucs2) - -## ---------------------------------------------- ## -## Read in the encodings.def file from libiconv. ## -## ---------------------------------------------- ## - -def digest_libiconv(): - global libiconv_data - - canonical = {} - for charset in ('Georgian-Academy', 'Georgian-PS', 'MuleLao-1', - 'Macintosh', 'MacArabic', 'MacCentralEurope', - 'MacCroatian', 'MacCyrillic', 'MacGreek', 'MacHebrew', - 'MacIceland', 'MacRoman', 'MacRomania', 'MacThai', - 'MacTurkish', 'MacUkraine'): - canonical[string.upper(charset)] = charset - - libiconv_data = [] - comment = None - line = input.line - while line: - if input.begins('DEFENCODING(('): - aliases = [] - match = re.search('"(.*)"', line) +class Charnames(Options): + SOURCES = 'charname.h' + + # Name of character, given its numerical value. + charname_map = {} + + # Maximum printable length of a character name. + max_length = 0 + + # Frequency of each word, then its crypt code. + code_map = {} + + def digest_french(self, input): + self.preset_french() + fold_table = range(256) + for before, after in map(None, + 'ABCDEFGHIJKLMNOPQRSTUVWXYZÀÂÇÈÉÊÎÏÑÔÖÛ', + 'abcdefghijklmnopqrstuvwxyzàâçèéêîïñôöû'): + fold_table[ord(before)] = ord(after) + folding = string.join(map(chr, fold_table), '') + while 1: + line = input.readline() + if not line: + break + if input.begins('@@\t'): + continue + # Pour éliminer la fin de ligne. + line = string.rstrip(line) + input.line = line + match = input.match('([0-9A-F]{4})\t([^(]+)( \\(.*\\))?( \\*)?$') if match: - alias = match.group(1) - if canonical.has_key(alias): - alias = canonical[alias] - aliases.append(alias) - line = string.lstrip(input.readline()) - while line != '),\n': + ucs = string.atoi(match.group(1), 16) + text = string.translate(match.group(2), folding) + if text in ('', '', ''): + continue + self.declare(ucs, re.sub(r' +\*$', '', text, 1)) + else: + input.warn("Unrecognised line") + + def preset_french(self): + self.max_length = 0 + ucs = 0x0000 + for text in ( + "nul (nul)", # 0000 + "début d'en-tête (soh)", # 0001 + "début de texte (stx)", # 0002 + "fin de texte (etx)", # 0003 + "fin de transmission (eot)", # 0004 + "demande (enq)", # 0005 + "accusé de réception positif (ack)", # 0006 + "sonnerie (bel)", # 0007 + "espace arrière (bs)", # 0008 + "tabulation horizontale (ht)", # 0009 + "interligne (lf)", # 000A + "tabulation verticale (vt)", # 000B + "page suivante (ff)", # 000C + "retour de chariot (cr)", # 000D + "hors code (so)", # 000E + "en code (si)", # 000F + "échappement transmission (dle)", # 0010 + "commande d'appareil un (dc1)", # 0011 + "commande d'appareil deux (dc2)", # 0012 + "commande d'appareil trois (dc3)", # 0013 + "commande d'appareil quatre (dc4)", # 0014 + "accusé de réception négatif (nak)", # 0015 + "synchronisation (syn)", # 0016 + "fin de transmission de bloc (etb)", # 0017 + "annulation (can)", # 0018 + "fin de support (em)", # 0019 + "caractère de substitution (sub)", # 001A + "échappement (esc)", # 001B + "séparateur de fichier (fs)", # 001C + "séparateur de groupe (gs)", # 001D + "séparateur d'article (rs)", # 001E + "séparateur de sous-article (us)", # 001F + ): + self.declare(ucs, text) + ucs = ucs + 1 + ucs = 0x007F + for text in ( + "suppression (del)", # 007F + "caractère de bourre (pad)", # 0080 + "octet supérieur prédéfini (hop)", # 0081 + "arrêt permis ici (bph)", # 0082 + "aucun arrêt ici (nbh)", # 0083 + "index (ind)", # 0084 + "à la ligne (nel)", # 0085 + "début de zone sélectionnée (ssa)", # 0086 + "fin de zone sélectionnée (esa)", # 0087 + "arrêt de tabulateur horizontal (hts)", # 0088 + "tabulateur horizontal avec justification (htj)", # 0089 + "arrêt de tabulateur vertical (vts)", # 008A + "interligne partiel vers <= bas (pld)", # 008B + "interligne partiel vers <= haut (plu)", # 008C + "index inversé (ri)", # 008D + "remplacement unique deux (ss2)", # 008E + "remplacement unique trois (ss3)", # 008F + "chaîne de commande d'appareil (dcs)", # 0090 + "usage privé un (pu1)", # 0091 + "usage privé deux (pu2)", # 0092 + "mise en mode transmission (sts)", # 0093 + "annulation du caractère précédent (cch)", # 0094 + "message en attente (mw)", # 0095 + "début de zone protégée (sga)", # 0096 + "fin de zone protégée (ega)", # 0097 + "début de chaîne (sos)", # 0098 + "introducteur de caractère graphique unique (sgci)",# 0099 + "introducteur de caractère unique (sci)", # 009A + "introducteur de séquence de commande (csi)", # 009B + "fin de chaîne (st)", # 009C + "commande de système d'exploitation (osc)", # 009D + "message privé (pm)", # 009E + "commande de progiciel (apc)", # 009F + ): + self.declare(ucs, text) + ucs = ucs + 1 + + def declare(self, ucs, text): + self.charname_map[ucs] = text + if len(text) > self.max_length: + self.max_length = len(text) + for word in string.split(text): + self.code_map[word] = self.code_map.get(word, 0) + 1 + + def presort_word(self, word): + return -self.code_map[word], word + + # Write a compressed list of character names. + def complete(self, french): + if not self.do_sources: + return + if french: + write = Output('fr-%s' % self.SOURCES).write + else: + write = Output(self.SOURCES).write + # Establish a mild compression scheme. Words word[0:singles] + # will be represented by a single byte running from 1 to + # singles. All remaining words will be represented by two + # bytes, the first one running slowly from singles+1 to 255, + # the second cycling faster from 1 to 255. + sys.stderr.write(' sorting words...') + pairs = map(self.presort_word, self.code_map.keys()) + pairs.sort() + words = map(lambda pair: pair[1], pairs) + pairs = None + sys.stderr.write(' %d of them\n' % len(words)) + count = len(words) + singles = (255 * 255 - count) / 254 + # Transmit a few values for further usage by the C code. + sys.stderr.write(' sorting names...') + ucs2_table = self.charname_map.keys() + ucs2_table.sort() + sys.stderr.write(' %d of them\n' % len(ucs2_table)) + write('\n' + '#define NUMBER_OF_SINGLES %d\n' + '#define MAX_CHARNAME_LENGTH %d\n' + '#define NUMBER_OF_CHARNAMES %d\n' + % (singles, self.max_length, len(ucs2_table))) + # Establish a mild compression scheme (one or two bytes per word). + sys.stderr.write(" writing words\n") + write('\n' + 'static const char *const word[%d] =\n' + ' {\n' + % count) + char1 = 1 + char2 = 1 + for counter in range(singles): + word = words[counter] + write(' %-28s/* \\%0.3o */\n' + % ('"%s",' % re.sub('"', r'\"', word), char1)) + self.code_map[words[counter]] = char1 + char1 = char1 + 1 + for counter in range(singles, count): + word = words[counter] + write(' %-28s/* \\%0.3o\\%0.3o */\n' + % ('"%s",' % re.sub('"', r'\"', word, 1), char1, char2)) + self.code_map[words[counter]] = 256 * char1 + char2 + if char2 == 255: + char1 = char1 + 1 + char2 = 1 + else: + char2 = char2 + 1 + write(' };\n') + sys.stderr.write(" writing names\n") + write('\n' + 'struct charname\n' + ' {\n' + ' recode_ucs2 code;\n' + ' const char *crypted;\n' + ' };\n' + '\n' + 'static const struct charname charname[NUMBER_OF_CHARNAMES] =\n' + ' {\n') + for ucs2 in ucs2_table: + write(' {0x%04X, "' % ucs2) + for word in string.split(self.charname_map[ucs2]): + if self.code_map.has_key(word): + code = self.code_map[word] + if code < 256: + write('\\%0.3o' % code) + else: + write('\\%0.3o\\%0.3o' % (code / 256, code % 256)) + else: + sys.stderr.write('??? %s\n' % word) + write('"},\n') + write(' };\n') + +# Explodes. + +class Explodes(Options): + SOURCES = 'explode.c' + + def __init__(self): + Options.__init__(self) + # Table fragments will be produced while reading data tables. + self.write = Output(self.SOURCES).write + write = self.write + write('\n' + '#include "common.h"\n') + + def complete(self, french): + if not self.do_sources: + return + # Print the collectable initialization function. + sys.stderr.write("Completing %s\n" % self.SOURCES) + write = self.write + write('\n' + 'bool\n' + 'module_explodes (struct recode_outer *outer)\n' + '{\n') + count = 0 + while self.declare_charset: + write(' if (!declare_explode_data (outer, &data_%d, "%s"))\n' + ' return false;\n' + % (count, self.declare_charset[0])) + del self.declare_charset[0] + count = count + 1 + write('\n') + while declare_alias: + write(' if (!declare_alias (outer, "%s", "%s"))\n' + ' return false;\n' + % declare_alias[0]) + del declare_alias[0] + write('\n' + ' return true;\n' + '}\n') + +# Libiconv. + +class Libiconv(Options): + SOURCES = 'libiconv.h' + TEXINFO = 'libiconv.texi' + + data = [] + + def digest(self, input): + canonical = {} + for charset in ('Georgian-Academy', 'Georgian-PS', 'MuleLao-1', + 'Macintosh', 'MacArabic', 'MacCentralEurope', + 'MacCroatian', 'MacCyrillic', 'MacGreek', 'MacHebrew', + 'MacIceland', 'MacRoman', 'MacRomania', 'MacThai', + 'MacTurkish', 'MacUkraine'): + canonical[string.upper(charset)] = charset + + comment = None + # Read in the encodings.def file. + line = input.line + while line: + if input.begins('DEFENCODING(('): + aliases = [] match = re.search('"(.*)"', line) if match: alias = match.group(1) @@ -379,1079 +442,812 @@ def digest_libiconv(): alias = canonical[alias] aliases.append(alias) line = string.lstrip(input.readline()) - while line and line != '\n': + while line != '),\n': + match = re.search('"(.*)"', line) + if match: + alias = match.group(1) + if canonical.has_key(alias): + alias = canonical[alias] + aliases.append(alias) + line = string.lstrip(input.readline()) + while line and line != '\n': + line = input.readline() + self.data.append((comment, aliases[0], aliases[1:])) + comment = None + else: + if input.begins('/*'): + comment = line[3:-4] + elif line != '\n': + input.warn("Unrecognised line") line = input.readline() - libiconv_data.append((comment, aliases[0], aliases[1:])) - comment = None - else: - if input.begins('/*'): - comment = line[3:-4] - elif line != '\n': - input.warn("Unrecognised line") - line = input.readline() -## ------------------------------------------------------------------- ## -## Read the text of RFC 1345, saving all character names it declares. ## -## ------------------------------------------------------------------- ## + def complete(self, french): + if self.do_sources: + self.complete_sources() + if self.do_texinfo: + self.complete_texinfo(french) + + def complete_sources(self): + if not self.do_sources: + return + write = Output(self.SOURCES).write + count = 1 + for comment, charset, aliases in self.data: + count = count + 2 + len(aliases) + write('\n' + "/* This is derived from Bruno Haible's `libiconv' package. */" + '\n' + 'static const char *iconv_name_list[%d] =\n' + ' {\n' + % count) + for comment, charset, aliases in self.data: + if comment: + write('\n' + ' /* %s. */\n' + '\n' + % comment) + if aliases: + write(' "%s",\n' % charset) + for alias in aliases[:-1]: + write('\t"%s",\n' % alias) + write('\t"%s", NULL,\n' % aliases[-1]) + else: + write(' "%s", NULL,\n' % charset) + write(' NULL\n' + ' };\n') + + def complete_texinfo(self, french): + if not self.do_texinfo: + return + if french: + write = Output('fr-%s' % self.TEXINFO, noheader=1).write + else: + write = Output(self.TEXINFO, noheader=1).write + write('\n' + '@itemize @bullet\n') + block = None + for comment, charset, aliases in self.data: + if not block and not comment: + comment = 'General character sets' + if comment: + if block: + write('@end table\n' + '\n') + write('@item %s\n' + '@table @code\n' + % comment) + block = comment + else: + write('\n') + write('@item %s\n' % charset) + if aliases: + write('@tindex %s@r{, aliases}\n' + % re.sub(':([0-9]+)', r'(\1)', charset)) + for alias in aliases: + write('@tindex %s\n' % re.sub(':([0-9]+)', r'(\1)', alias)) + if len(aliases) == 1: + write('@code{%s} is an alias for this charset.\n' + % aliases[0]) + else: + write('@code{%s} and @code{%s} are aliases' + ' for this charset.\n' + % (string.join(aliases[:-1], '}, @code{'), + aliases[-1])) + else: + write('@tindex %s\n' % re.sub(':([0-9]+)', r'(\1)', charset)) + write('@end table\n' + '@end itemize\n') + +# Mnemonics. -# Numeric value of a character, given its mnemonic. -ucs2_map = {} +class Mnemonics(Options): + SOURCES = 'rfc1345.h' -# Name of character, given its numerical value. -charname_map = {} + # Ignore any mnemonic whose length is greater than MAX_MNEMONIC_LENGTH. + MAX_MNEMONIC_LENGTH = 3 -# Frequency of each word, then its crypt code. -code_map = {} + # Numeric value of a character, given its mnemonic. + ucs2_map = {} -# Maximum printable length of a character name. -max_length = 0 + table_length = 0 + mnemonic_map = {} -def digest_rfc1345_names(): - global max_length + # Read in a mnemonics file. + def digest_mnemonics_ds(self, input): + while input.readline(): + match = input.match('<([^ \t\n]+)>\t') + if match: + mnemonic = re.sub('/(.)', r'\1', match.group(1)) + ucs2 = string.atoi(match.group(2), 16) + self.declare(mnemonic, ucs2, input.warn) - def read_line(): - skip = 0 + # Read in Keld's list of 10646 characters. + def digest_iso10646_def(self, input): while 1: line = input.readline() if not line: break - if input.begins('Simonsen'): - skip = 1 + if line == '\n': continue - if skip: - if input.begins('RFC 1345'): - skip = 0 + if len(line) == 3: continue - if input.begins('4. CHARSETS'): - break - if line == '\n': + if input.begins(' \.\.\.'): + continue + if line == ' Presentation forms\n': + continue + if input.begins(' naming: first vertical '): + continue + match = input.match(' row ([0-9][0-9][0-9])$') + if match and int(match.group(1)) < 256: + row = int(match.group(1)) + cell = 0 + continue + if line == ' cell 00\n': + cell = 0 + continue + match = input.match(' cell ([0-9][0-9][0-9])$') + if match and int(match.group(1)) < 256: + cell = int(match.group(1)) + continue + if input.match(' [^ ]+'): + if not input.match(' [A-Z][A-Z][A-Z]'): + continue + if input.match(' [^ ].*'): + if cell == 256: + input.warn("Over 256 cells in row %d", row) + cell = cell + 1 + continue + match = (input.match('([^ ]) [^ ].*') + or input.match('([^ ][^ ]+) [^ ].*')) + if match: + if cell == 256: + input.warn("Over 256 cells in row %d", row) + self.declare(match.group(1), 256*row + cell, input.warn) + cell = cell + 1 continue - if line[0] == ' ': - return string.lstrip(line[:-1]) - return None - - max_length = 0 - - # Read the character descriptions. Count words in charnames. - - line = read_line() - while line: - # Look ahead one line and merge it if it should. - - next = read_line() - while next: - match = re.match(' *( .*)', next) - if not match: - break - line = line + match.group(1) - next = read_line() - - # Separate fields and save needed information. - - match = re.search('([^ ]+) +[0-9a-f]+ +(.*)', line) - if match: - mnemo = match.group(1) - text = string.lower(match.group(2)) - - if ucs2_map.has_key(mnemo): - charname_map[ucs2_map[mnemo]] = text - if len(text) > max_length: - max_length = len(text) - for word in string.split(text): - if code_map.has_key(word): - code_map[word] = code_map[word] + 1 - else: - code_map[word] = 1 - elif len(mnemo) <= MAX_MNEMONIC_LENGTH: - input.warn("No known UCS-2 code for `%s'", mnemo) - elif not re.search(' +e000', line): input.warn("Unrecognised line") - line = next - -def digest_french_names(): - global max_length + # Read the text of RFC 1345, saving all character names it declares. + def digest_rfc1345(self, input, charnames): + def read_line(input=input): + skip = 0 + while 1: + line = input.readline() + if not line: + break + if input.begins('Simonsen'): + skip = 1 + continue + if skip: + if input.begins('RFC 1345'): + skip = 0 + continue + if input.begins('4. CHARSETS'): + break + if line == '\n': + continue + if line[0] == ' ': + return string.lstrip(line[:-1]) + return None + self.max_length = 0 + # Read the character descriptions. Count words in charnames. + line = read_line() + while line: + # Look ahead one line and merge it if it should. + next = read_line() + while next: + match = re.match(' *( .*)', next) + if not match: + break + line = line + match.group(1) + next = read_line() + # Separate fields and save needed information. + match = re.search('([^ ]+) +[0-9a-f]+ +(.*)', line) + if match: + mnemo = match.group(1) + text = string.lower(match.group(2)) + if self.ucs2_map.has_key(mnemo): + charnames.declare(self.ucs2_map[mnemo], text) + elif len(mnemo) <= self.MAX_MNEMONIC_LENGTH: + input.warn("No known UCS-2 code for `%s'", mnemo) + elif not re.search(' +e000', line): + input.warn("Unrecognised line") + line = next - max_length = 0 - ucs = 0x0000 - - for text in ( - "nul (nul)", # 0000 - "début d'en-tête (soh)", # 0001 - "début de texte (stx)", # 0002 - "fin de texte (etx)", # 0003 - "fin de transmission (eot)", # 0004 - "demande (enq)", # 0005 - "accusé de réception positif (ack)", # 0006 - "sonnerie (bel)", # 0007 - "espace arrière (bs)", # 0008 - "tabulation horizontale (ht)", # 0009 - "interligne (lf)", # 000A - "tabulation verticale (vt)", # 000B - "page suivante (ff)", # 000C - "retour de chariot (cr)", # 000D - "hors code (so)", # 000E - "en code (si)", # 000F - "échappement transmission (dle)", # 0010 - "commande d'appareil un (dc1)", # 0011 - "commande d'appareil deux (dc2)", # 0012 - "commande d'appareil trois (dc3)", # 0013 - "commande d'appareil quatre (dc4)", # 0014 - "accusé de réception négatif (nak)", # 0015 - "synchronisation (syn)", # 0016 - "fin de transmission de bloc (etb)", # 0017 - "annulation (can)", # 0018 - "fin de support (em)", # 0019 - "caractère de substitution (sub)", # 001A - "échappement (esc)", # 001B - "séparateur de fichier (fs)", # 001C - "séparateur de groupe (gs)", # 001D - "séparateur d'article (rs)", # 001E - "séparateur de sous-article (us)", # 001F - ): - charname_map[ucs] = text - ucs = ucs + 1 - if len(text) > max_length: - max_length = len(text) - for word in string.split(text): - if code_map.has_key(word): - code_map[word] = code_map[word] + 1 - else: - code_map[word] = 1 - - ucs = 0x007F - for text in ( - "suppression (del)", # 007F - "caractère de bourre (pad)", # 0080 - "octet supérieur prédéfini (hop)", # 0081 - "arrêt permis ici (bph)", # 0082 - "aucun arrêt ici (nbh)", # 0083 - "index (ind)", # 0084 - "à la ligne (nel)", # 0085 - "début de zone sélectionnée (ssa)", # 0086 - "fin de zone sélectionnée (esa)", # 0087 - "arrêt de tabulateur horizontal (hts)", # 0088 - "tabulateur horizontal avec justification (htj)", # 0089 - "arrêt de tabulateur vertical (vts)", # 008A - "interligne partiel vers <= bas (pld)", # 008B - "interligne partiel vers <= haut (plu)", # 008C - "index inversé (ri)", # 008D - "remplacement unique deux (ss2)", # 008E - "remplacement unique trois (ss3)", # 008F - "chaîne de commande d'appareil (dcs)", # 0090 - "usage privé un (pu1)", # 0091 - "usage privé deux (pu2)", # 0092 - "mise en mode transmission (sts)", # 0093 - "annulation du caractère précédent (cch)", # 0094 - "message en attente (mw)", # 0095 - "début de zone protégée (sga)", # 0096 - "fin de zone protégée (ega)", # 0097 - "début de chaîne (sos)", # 0098 - "introducteur de caractère graphique unique (sgci)",# 0099 - "introducteur de caractère unique (sci)", # 009A - "introducteur de séquence de commande (csi)", # 009B - "fin de chaîne (st)", # 009C - "commande de système d'exploitation (osc)", # 009D - "message privé (pm)", # 009E - "commande de progiciel (apc)", # 009F - ): - charname_map[ucs] = text - ucs = ucs + 1 - if len(text) > max_length: - max_length = len(text) - for word in string.split(text): - if code_map.has_key(word): - code_map[word] = code_map[word] + 1 + # Declare a correspondence between a mnemonic and an UCS-2 value. + def declare(self, mnemonic, ucs2, warn): + if len(mnemonic) > self.MAX_MNEMONIC_LENGTH: + return + if self.do_sources: + if self.mnemonic_map.has_key(ucs2): + if self.mnemonic_map[ucs2] != mnemonic: + warn("U+%04X `%s' known as `%s'", + ucs2, mnemonic, self.mnemonic_map[ucs2]) + if len(mnemonic) < len(self.mnemonic_map[ucs2]): + self.mnemonic_map[ucs2] = mnemonic else: - code_map[word] = 1 - - fold_table = range(256) - for before, after in map(None, - 'ABCDEFGHIJKLMNOPQRSTUVWXYZÀÂÇÈÉÊÎÏÑÔÖÛ', - 'abcdefghijklmnopqrstuvwxyzàâçèéêîïñôöû'): - fold_table[ord(before)] = ord(after) - folding = string.join(map(chr, fold_table), '') - - while 1: - line = input.readline() - if not line: - break - if line[-1] == '\n': - line = line[:-1] - line = string.rstrip(line) - input.line = line - match = input.match('([0-9A-F]{4}) ([^\(]+)( \(.*\))?$') - if match: - ucs = string.atoi(match.group(1), 16) - text = string.translate(match.group(2), folding) - - charname_map[ucs] = re.sub(r' +\*$', '', text, 1) - if len(match.group(2)) > max_length: - max_length = len(match.group(2)) - for word in string.split(text): - if code_map.has_key(word): - code_map[word] = code_map[word] + 1 - else: - code_map[word] = 1 + self.mnemonic_map[ucs2] = mnemonic + self.table_length = self.table_length + 1 + if self.ucs2_map.has_key(mnemonic): + if self.ucs2_map[mnemonic] != ucs2: + warn("`%s' U+%04X known as U+%04X", + mnemonic, ucs2, self.ucs2_map[mnemonic]) + #FIXME: ??? cell = self.ucs2_map[mnemonic] - 256*row else: - input.warn("Unrecognised line") + self.ucs2_map[mnemonic] = ucs2 + + def complete(self, french): + if self.do_sources: + self.complete_sources() + + # Write an UCS-2 to RFC 1345 mnemonic table. + def complete_sources(self): + inverse_map = {} + write = Output(self.SOURCES).write + write('\n' + '#define TABLE_LENGTH %d\n' + '#define MAX_MNEMONIC_LENGTH %d\n' + % (self.table_length, self.MAX_MNEMONIC_LENGTH)) + write('\n' + 'struct entry\n' + ' {\n' + ' recode_ucs2 code;\n' + ' const char *rfc1345;\n' + ' };\n' + '\n' + 'static const struct entry table[TABLE_LENGTH] =\n' + ' {\n') + count = 0 + indices = self.mnemonic_map.keys() + indices.sort() + for ucs2 in indices: + text = self.mnemonic_map[ucs2] + inverse_map[text] = count + write(' /* %4d */ {0x%04X, "%s"},\n' + % (count, ucs2, re.sub(r'([\"])', r'\\\1', text))) + count = count + 1 + write(' };\n') -## ------------------------------------------------------------ ## -## Read the text of RFC 1345, saving all charsets it declares. ## -## UCS-2 mnemonics files should have been read in already. ## -## ------------------------------------------------------------ ## - -used_map = {} -table = [] - -#codedim -#code -#list - -declare_alias = [] -implied_surface = {} -#hashname - -def digest_rfc1345_tables(): - global alias_count - global aliases - global charset - global comment - global discard_charset - global remark - global table - - # Informal canonical order of presentation. - CHARSET, REM, ALIAS, ESC, BITS, CODE = range(6) - - skip = 0 - while 1: - line = input.readline() - if not line: - break - if input.begins('Simonsen'): - skip = 1 - continue - if skip: - if input.begins('RFC 1345'): - skip = 0 - continue - if line == '\n': - continue - if line == 'ACKNOWLEDGEMENTS\n': - break - - line, count = re.subn('^ ?', '', line) - if not count: - continue - input.line = line - - # Recognize `&charset'. - - match = input.match('&charset (.*)') - if match: - # Before beginning a new charset, process the previous one. - complete_charset() - charset = match.group(1) + write('\n' + 'static const unsigned short inverse[TABLE_LENGTH] =\n' + ' {') + count = 0 + keys = inverse_map.keys() + keys.sort() + for text in keys: + if count % 10 == 0: + if count != 0: + write(',') + write('\n /* %4d */ ' % count) + else: + write(', ') + write('%4d' % inverse_map[text]) + count = count + 1 + write('\n' + ' };\n') + +# Global table of strips. - # Prepare for processing a new charset: save the charset - # name for further declaration; announce this charset in - # the array initialization section; and initialize its - # processing. +class Strips(Options): + POOL = 'strip-pool.c' + DATA = 'strip-data.c' + TEXINFO = 'rfc1345.texi' - sys.stderr.write(" %d) %s\n" % (charset_ordinal + 1, charset)) - status = CHARSET + # Change STRIP_SIZE in `src/recode.h' if you change the value here. + # See the accompanying documentation there, as needed. + STRIP_SIZE = 8 - comment = '\n/* %s\n' % charset + # Prepare the production of tables. + pool_size = 0 + pool_refs = 0 + strip_map = {} + strips = [] - hashname = re.sub('[^a-z0-9]', '', string.lower(charset)) - if used_map.has_key(hashname): - input.warn("Duplicate of %s (discarded)", used_map[hashname]) - discard_charset = 1 + # While digesting files. + used_map = {} + table = [] + declare_alias = [] + implied_surface = {} + + def __init__(self): + Options.__init__(self) + self.write_data = None + self.aliases_map = {} + self.remark_map = {} + self.declare_charset = [] + # Prepare to read various tables. + self.charset_ordinal = 0 + self.discard_charset = 0 + self.alias_count = 0 + self.comment = '' + + def init_write_data(self): + if self.do_sources and not self.write_data: + # Table fragments will be produced while reading data tables. + self.write_data = Output(self.DATA).write + write = self.write_data + write('\n' + '#include \"common.h\"\n') + + # Read the text of RFC 1345, saving all charsets it declares. + # UCS-2 mnemonics files should have been read in already. + def digest_rfc1345(self, input, mnemonics): + self.init_write_data() + # Informal canonical order of presentation. + CHARSET, REM, ALIAS, ESC, BITS, CODE = range(6) + charset = None + skip = 0 + while 1: + line = input.readline() + if not line: + break + if input.begins('Simonsen'): + skip = 1 continue - used_map[hashname] = charset - - alias_count = 0 - table = [NOT_A_CHARACTER] * 256 - codedim = 0 - code = 0 - aliases = [] - remark = [] - - match = re.match('(CP|IBM)([0-9]+)$', charset) + if skip: + if input.begins('RFC 1345'): + skip = 0 + continue + if line == '\n': + continue + if line == 'ACKNOWLEDGEMENTS\n': + break + line, count = re.subn('^ ?', '', line) + if not count: + continue + input.line = line + # Recognize `&charset'. + match = input.match('&charset (.*)') if match: - implied_surface[match.group(2)] = 'crlf' - implied_surface['CP' + match.group(2)] = 'crlf' - implied_surface['IBM' + match.group(2)] = 'crlf' - declare_alias.append((charset, charset)) - alias_count = alias_count + 1 + # Before beginning a new charset, process the previous one. + if charset: + self.charset_done(charset, remark, aliases) + charset = match.group(1) + # Prepare for processing a new charset: save the charset + # name for further declaration; announce this charset in + # the array initialization section; and initialize its + # processing. + sys.stderr.write(" %d) %s\n" + % (self.charset_ordinal + 1, charset)) + status = CHARSET + self.comment = '\n/* %s\n' % charset + hashname = re.sub('[^a-z0-9]', '', string.lower(charset)) + if self.used_map.has_key(hashname): + input.warn("Duplicate of %s (discarded)", + self.used_map[hashname]) + self.discard_charset = 1 + continue + self.used_map[hashname] = charset + self.alias_count = 0 + self.table = [NOT_A_CHARACTER] * 256 + codedim = 0 + code = 0 + aliases = [] + remark = [] + match = re.match('(CP|IBM)([0-9]+)$', charset) + if match: + self.implied_surface[match.group(2)] = 'crlf' + self.implied_surface['CP' + match.group(2)] = 'crlf' + self.implied_surface['IBM' + match.group(2)] = 'crlf' + self.declare_alias.append((charset, charset)) + self.alias_count = self.alias_count + 1 + continue + #FIXME:match = re.match('windows-([0-9]+)$', charset) + #FIXME:if match: + #FIXME: self.implied_surface[match.group(1)] = 'crlf' + #FIXME: self.implied_surface['CP' + match.group(1)] = 'crlf' + #FIXME: self.implied_surface['IBM' + match.group(1)] = 'crlf' + #FIXME: self.declare_alias.append((charset, charset)) + #FIXME: self.alias_count = self.alias_count + 1 + #FIXME: continue + if charset in ('macintosh', 'macintosh_ce'): + self.implied_surface[charset] = 'cr' + self.declare_alias.append((charset, charset)) + self.alias_count = self.alias_count + 1 + continue continue - - #FIXME:match = re.match('windows-([0-9]+)$', charset) - #FIXME:if match: - #FIXME: implied_surface[match.group(1)] = 'crlf' - #FIXME: implied_surface['CP' + match.group(1)] = 'crlf' - #FIXME: implied_surface['IBM' + match.group(1)] = 'crlf' - #FIXME: declare_alias.append((charset, charset)) - #FIXME: alias_count = alias_count + 1 - #FIXME: continue - - if charset in ('macintosh', 'macintosh_ce'): - implied_surface[charset] = 'cr' - declare_alias.append((charset, charset)) - alias_count = alias_count + 1 + # Recognize other `&' directives. + match = input.match('&rem (.*)') + if match and not input.begins('&rem &alias'): + # Keld now prefers `&rem' to be allowed everywhere. + #if status > REM: + # input.warn("`&rem' out of sequence") + #status = REM; + if self.do_texinfo: + # Save remarks for Texinfo. + text = match.group(1) + remark.append(text) continue - - continue - - # Recognize other `&' directives. - - match = input.match('&rem (.*)') - if match and not input.begins('&rem &alias'): - # Keld now prefers `&rem' to be allowed everywhere. - #if status > REM: - # input.warn("`&rem' out of sequence") - #status = REM; - - if rfc1345_texinfo_option: - # Save remarks for Texinfo. - text = match.group(1) - remark.append(text) - continue - - match = input.match('(&rem )?&alias (.*)') - if match: - if status > ALIAS: - input.warn("`&alias' out of sequence") - status = ALIAS - - # Save synonymous charset names for later declarations. - - alias = match.group(2) - if alias[-1] == ' ': - input.warn("Spurious trailing whitespace") - alias = string.rstrip(alias) - comment = comment + ' %s\n' % alias - - hashname = re.sub('[^a-z0-9]', '', string.lower(alias)) - if used_map.has_key(hashname) and used_map[hashname] != charset: - input.warn("Duplicate of %s", used_map[hashname]) + match = input.match('(&rem )?&alias (.*)') + if match: + if status > ALIAS: + input.warn("`&alias' out of sequence") + status = ALIAS + # Save synonymous charset names for later declarations. + alias = match.group(2) + if alias[-1] == ' ': + input.warn("Spurious trailing whitespace") + alias = string.rstrip(alias) + self.comment = self.comment + ' %s\n' % alias + hashname = re.sub('[^a-z0-9]', '', string.lower(alias)) + if self.used_map.has_key(hashname): + if self.used_map[hashname] != charset: + input.warn("Duplicate of %s", self.used_map[hashname]) + continue + else: + self.used_map[hashname] = charset + aliases.append(alias) + match = re.match('(CP|IBM)([0-9]+)$', alias) + if match: + self.implied_surface[match.group(2)] = 'crlf' + self.implied_surface['CP' + match.group(2)] = 'crlf' + self.implied_surface['IBM' + match.group(2)] = 'crlf' + elif alias in ('mac', 'macce'): + self.implied_surface[alias] = 'cr' + self.declare_alias.append((alias, charset)) + self.alias_count = self.alias_count + 1 continue - used_map[hashname] = charset - - aliases.append(alias) - - match = re.match('(CP|IBM)([0-9]+)$', alias) + if input.match('&g[0-4]esc'): + if status > ESC: + input.warn("`&esc' out of sequence") + status = ESC + continue + match = input.match('&bits ([0-9]+)$') if match: - implied_surface[match.group(2)] = 'crlf' - implied_surface['CP' + match.group(2)] = 'crlf' - implied_surface['IBM' + match.group(2)] = 'crlf' - elif alias in ('mac', 'macce'): - implied_surface[alias] = 'cr' - declare_alias.append((alias, charset)) - alias_count = alias_count + 1 - continue - - if input.match('&g[0-4]esc'): - if status > ESC: - input.warn("`&esc' out of sequence") - status = ESC - continue - - match = input.match('&bits ([0-9]+)$') - if match: - if status > BITS: - input.warn("`&bits' out of sequence") - status = BITS - - if int(match.group(1)) > 8: - input.warn("`&bits %s' not accepted (charset discarded)", - match.group(1)) - discard_charset = 1 - continue - - match = input.match('&code (.*)') - if match: - if status > CODE: - input.warn("`&code' out of sequence") - status = CODE - - # Save the code position. - - code = int(match.group(1)) - continue - - # Other lines cause the charset to be discarded. - - match = input.match('&([^ ]+)') - if match: - if not discard_charset: - input.warn("`&%s' not accepted (charset discarded)", - match.group(1)) - discard_charset = 1 - - if discard_charset: - continue - - # Save all other tokens into the double table. - - if explode_option or strip_option: + if status > BITS: + input.warn("`&bits' out of sequence") + status = BITS + if int(match.group(1)) > 8: + input.warn("`&bits %s' not accepted (charset discarded)", + match.group(1)) + self.discard_charset = 1 + continue + match = input.match('&code (.*)') + if match: + if status > CODE: + input.warn("`&code' out of sequence") + status = CODE + # Save the code position. + code = int(match.group(1)) + continue + # Other lines cause the charset to be discarded. + match = input.match('&([^ ]+)') + if match: + if not self.discard_charset: + input.warn("`&%s' not accepted (charset discarded)", + match.group(1)) + self.discard_charset = 1 + if self.discard_charset: + continue + # Save all other tokens into the double table. for token in string.split(line): if token == '??': - table[code] = NOT_A_CHARACTER + self.table[code] = NOT_A_CHARACTER elif token == '__': - table[code] = REPLACEMENT_CHARACTER - elif ucs2_map.has_key(token): - table[code] = ucs2_map[token] + self.table[code] = REPLACEMENT_CHARACTER + elif mnemonics.ucs2_map.has_key(token): + self.table[code] = mnemonics.ucs2_map[token] if len(token) > codedim: codedim = len(token) else: input.warn("Unknown mnemonic for code: %s", token) - table[code] = REPLACEMENT_CHARACTER + self.table[code] = REPLACEMENT_CHARACTER code = code + 1 - - # Push the last charset out. - complete_charset() - -## ---------------------------------------------------------------- ## -## Read a Unicode map, as found in ftp://ftp.unicode.com/MAPPINGS. ## -## ---------------------------------------------------------------- ## - -def digest_unimap(): - global alias_count - global aliases - global charset - global comment - global discard_charset - global remark - global table - - line = input.line - match = input.match('# +Name: +([^ ]+) to Unicode table$') - if match: - name = string.split(match.group(1)) - charset = name[0] - del name[0] - comment = '\n/* %s\n' % charset - - hashname = re.sub('[^a-z0-9]', '', string.lower(charset)) - if used_map[hashname]: - input.warn("`%s' duplicates `%s' (charset discarded)", - hashname, used_map[hashname]) - discard_charset = 1 - return - used_map[hashname] = charset - - alias_count = 0 - table = [NOT_A_CHARACTER] * 256 - codedim = 0 - code = 0 - aliases = [] - remark = [] - if discard_charset: - return - - for alias in name: - comment = comment + ' %s\n' % alias - - hashname = re.sub('[^a-z0-9]', '', string.lower(alias)) - if used_map[hashname] and used_map[hashname] != charset: - input.warn("`%s' duplicates `%s'", hashname, used_map[hashname]) - continue - used_map[hashname] = charset - - aliases.append(alias) - declare_alias.append((alias, charset)) - alias_count = alias_count + 1 - - while 1: - line = input.readline() - if not line: - break - if line == '\n': - continue - if line[0] == '#': - continue - if input.match('0x([0-9A-F]+)\t\t#UNDEFINED$'): - continue - if input.search('\032'): - # Old MS-DOS C-z !! - break - - match = input.match('0x([0-9A-F]+)\t0x([0-9A-F]+)\t\#') + # Push the last charset out. + self.charset_done(charset, remark, aliases) + + # Read a Unicode map, as found in ftp://ftp.unicode.com/MAPPINGS. + def digest_unimap(self, input): + self.init_write_data() + line = input.line + match = input.match('# +Name: +([^ ]+) to Unicode table$') if match: - table[string.atoi(match.group(1), 16)] \ - = string.atoi(match.group(2), 16) - else: - input.warn("Unrecognised input line") - - complete_charset() - -# Reader services. - -## ---------------------------------------------------------------- ## -## Declare a correspondence between a mnemonic and an UCS-2 value. ## -## ---------------------------------------------------------------- ## - -table_length = 0 -mnemonic_map = {} - -def declare_mnemonic(mnemonic, ucs2): - global table_length - - if len(mnemonic) > MAX_MNEMONIC_LENGTH: - return - - if mnemonic_option: - if mnemonic_map.has_key(ucs2): - if mnemonic_map[ucs2] != mnemonic: - input.warn("U+%04X `%s' known as `%s'", - ucs2, mnemonic, mnemonic_map[ucs2]) - if len(mnemonic) < len(mnemonic_map[ucs2]): - mnemonic_map[ucs2] = mnemonic - - else: - mnemonic_map[ucs2] = mnemonic - table_length = table_length + 1 - - if charname_option or explode_option or strip_option: - if ucs2_map.has_key(mnemonic): - if ucs2_map[mnemonic] != ucs2: - input.warn("`%s' U+%04X known as U+%04X", - mnemonic, ucs2, ucs2_map[mnemonic]) - #FIXME: ??? cell = ucs2_map[mnemonic] - 256*row - else: - ucs2_map[mnemonic] = ucs2 - -## ---------------------------------------------------------- ## -## Print all accumulated information for the charset. If the ## -## charset should be discarded, adjust tables. ## -## ---------------------------------------------------------- ## - -aliases_map = {} -remark_map = {} -declare_charset = [] - -def complete_charset(): - global alias_count - global charset_ordinal - global comment - global discard_charset - - if discard_charset: - while alias_count > 0: - del declare_alias[-1] - alias_count = alias_count - 1 - discard_charset = 0 - comment = '' - if not comment: - return - - if rfc1345_texinfo_option: - - # Save the documentation. - aliases.sort() - aliases_map[charset] = aliases - remark_map[charset] = remark - - if explode_option: - write = output.write - - # Make introductory C comments. - write(comment) - write('*/\n') - - # Make the table for this charset. - write('\n') - write('static const unsigned short data_%d[] =\n' % charset_ordinal) - write(' {\n') - for code in range(256): - if code != table[code]: - write(' %3d, 0x%.4X, DONE,\n' % (code, table[code])) - write(' DONE\n') - write(' };\n') - - # Register the table. - declare_charset.append(charset) - - if strip_option: - write = output.write + # Set comment. + name = string.split(match.group(1)) + charset = name[0] + del name[0] + self.comment = '\n/* %s\n' % charset + # Set charset. + hashname = re.sub('[^a-z0-9]', '', string.lower(charset)) + if self.used_map[hashname]: + input.warn("`%s' duplicates `%s' (charset discarded)", + hashname, self.used_map[hashname]) + self.discard_charset = 1 + return + self.used_map[hashname] = charset + # Prepare for read. + self.alias_count = 0 + self.table = [NOT_A_CHARACTER] * 256 + codedim = 0 + code = 0 + aliases = [] + remark = [] + if self.discard_charset: + return + # Process aliases. + for alias in name: + self.comment = self.comment + ' %s\n' % alias - # Make introductory C comments. - write(comment) - write('*/\n') + hashname = re.sub('[^a-z0-9]', '', string.lower(alias)) + if self.used_map[hashname] and self.used_map[hashname] != charset: + input.warn("`%s' duplicates `%s'", hashname, + self.used_map[hashname]) + continue + self.used_map[hashname] = charset - # Make the table for this charset. - write('\n') - write('static struct strip_data data_%d =\n' % charset_ordinal) - write(' {\n') - write(' ucs2_data_pool,\n') - write(' {\n') - count = 0 - for code in range(0, 256, STRIP_SIZE): - if count % 12 == 0: - if count != 0: - write(',\n') - write(' ') + aliases.append(alias) + self.declare_alias.append((alias, charset)) + self.alias_count = self.alias_count + 1 + # Read table contents. + while 1: + line = input.readline() + if not line: + break + if line == '\n': + continue + if line[0] == '#': + continue + if input.match('0x([0-9A-F]+)\t\t#UNDEFINED$'): + continue + if input.search('\032'): + # Old MS-DOS C-z !! + break + match = input.match('0x([0-9A-F]+)\t0x([0-9A-F]+)\t\#') + if match: + self.table[string.atoi( + match.group(1), 16)] = string.atoi(match.group(2), 16) else: - write(', ') - write('%4d' % pool_index(table[code:code+STRIP_SIZE])) + input.warn("Unrecognised input line") + # Complete processing. + self.charset_done(charset, remark, aliases) + + # Print all accumulated information for the charset. If the + # charset should be discarded, adjust tables. + def charset_done(self, charset, remark, aliases): + if self.discard_charset: + while self.alias_count > 0: + del self.declare_alias[-1] + self.alias_count = self.alias_count - 1 + self.discard_charset = 0 + self.comment = '' + if not self.comment: + return + if self.do_texinfo: + # Save the documentation. + aliases.sort() + self.aliases_map[charset] = aliases + self.remark_map[charset] = remark + if explodes: + write = explodes.write + # Make introductory C comments. + write(self.comment) + write('*/\n') + # Make the table for this charset. + write('\n' + 'static const unsigned short data_%d[] =\n' + ' {\n' + % self.charset_ordinal) + for code in range(256): + if code != self.table[code]: + write(' %3d, 0x%.4X, DONE,\n' + % (code, self.table[code])) + write(' DONE\n' + ' };\n') + # Register the table. + self.declare_charset.append(charset) + if self.do_sources: + write = self.write_data + # Make introductory C comments. + write(self.comment) + write('*/\n') + # Make the table for this charset. + write('\n' + 'static struct strip_data data_%d =\n' + ' {\n' + ' ucs2_data_pool,\n' + ' {\n' + % self.charset_ordinal) + count = 0 + for code in range(0, 256, self.STRIP_SIZE): + if count % 12 == 0: + if count != 0: + write(',\n') + write(' ') + else: + write(', ') + strip = self.table[code:code+self.STRIP_SIZE] + write('%4d' % self.pool_index(strip)) + count = count + 1 + write('\n' + ' }\n' + ' };\n') + # Register the table. + self.declare_charset.append(charset) + self.charset_ordinal = self.charset_ordinal + 1 + self.comment = '' + + # Return the pool index for strip. Add to the pool as required. + def pool_index(self, strip): + def format(item): + return '%04X' % item + self.pool_refs = self.pool_refs + 1 + text = string.join (map(format, strip), '') + if not self.strip_map.has_key(text): + self.strip_map[text] = self.pool_size + self.pool_size = self.pool_size + self.STRIP_SIZE + self.strips.append(text) + return self.strip_map[text] + + def complete(self, french): + if self.do_sources: + self.complete_sources() + if self.do_texinfo: + self.complete_texinfo(french) + + def complete_sources(self): + # Give memory statistics. + sys.stderr.write('Table memory = %d bytes (pool %d, refs %d)\n' + % (self.pool_size * 2 + self.pool_refs * 2, + self.pool_size * 2, + self.pool_refs * 2)) + + # Print the collectable initialization function. + sys.stderr.write("Completing %s\n" % self.DATA) + write = self.write_data + write('\n' + 'bool\n' + 'module_strips (struct recode_outer *outer)\n' + '{\n' + ' RECODE_ALIAS alias;\n' + '\n') + count = 0 + while self.declare_charset: + write(' if (!declare_strip_data (outer, &data_%d, "%s"))\n' + ' return false;\n' + % (count, self.declare_charset[0])) + del self.declare_charset[0] count = count + 1 write('\n') - write(' }\n') - write(' };\n') + while self.declare_alias: + alias, charset = self.declare_alias[0] + if self.implied_surface.has_key(alias): + write(' if (alias = declare_alias (outer, "%s", "%s"),' + ' !alias)\n' + ' return false;\n' + % self.declare_alias[0]) + write(' if (!declare_implied_surface (outer, alias,' + ' outer->%s_surface))\n' + ' return false;\n' + % self.implied_surface[alias]) + else: + write(' if (!declare_alias (outer, "%s", "%s"))\n' + ' return false;\n' + % self.declare_alias[0]) + del self.declare_alias[0] + write('\n' + ' return true;\n' + '}\n') + + # Write the pool file. + write = Output(self.POOL).write + write('\n' + '#include "common.h"\n' + '\n' + 'const recode_ucs2 ucs2_data_pool[%d] =\n' + ' {' + % self.pool_size) + count = 0 + for strip in self.strips: + for pos in range(0, self.STRIP_SIZE * 4, 4): + if count % 8 == 0: + if count != 0: + write(',') + write('\n /* %4d */ ' % count) + else: + write(', ') + write('0x' + strip[pos:pos+4]) + count = count + 1 + write('\n' + ' };\n') + + def complete_texinfo(self, french): + if french: + write = Output('fr-%s' % self.TEXINFO, noheader=1).write + else: + write = Output(self.TEXINFO, noheader=1).write + charsets = self.remark_map.keys() + charsets.sort() + for charset in charsets: + write('\n' + '@item %s\n' + '@tindex %s@r{, aliases and source}\n' + % (charset, re.sub(':([0-9]+)', r'(\1)', charset))) + aliases = self.aliases_map[charset] + if aliases: + if len(aliases) == 1: + if aliases[0]: # FIXME: pourquoi parfois vide ?? + write('@tindex %s\n' + '@code{%s} is an alias for this charset.\n' + % (re.sub(':([0-9]+)', r'(\1)', aliases[0]), + aliases[0])) + else: + for alias in aliases: + write('@tindex %s\n' + % re.sub(':([0-9]+)', r'(\1)', alias)) + write('@code{%s} and @code{%s} are aliases' + ' for this charset.\n' + % (string.join(aliases[:-1], '}, @code{'), + aliases[-1])) + for line in self.remark_map[charset]: + if line[0] in string.lowercase: + line = string.upper(line[0]) + line[1:] + write(string.replace(line, '@', '@@')) + if line[-1] != '.': + write('.') + write('\n') + +# Handling basic input and output. - # Register the table. - declare_charset.append(charset) +class Input: - charset_ordinal = charset_ordinal + 1 - comment = '' + def __init__(self, name): + self.name = name + self.input = open(name) + self.line_count = 0 + sys.stderr.write("Reading %s\n" % name) -## --------------------------------------------------------------- ## -## Return the pool index for strip. Add to the pool as required. ## -## --------------------------------------------------------------- ## + def readline(self): + self.line = self.input.readline() + self.line_count = self.line_count + 1 + return self.line -def pool_index(strip): - global strips - global pool_refs - global pool_size + def warn(self, format, *args): + sys.stderr.write('%s:%s: %s\n' + % (self.name, self.line_count, format % args)) - def format(item): - return '%04X' % item + def die(self, format, *args): + sys.stderr.write('%s:%s: %s\n' + % (self.name, self.line_count, format % args)) + raise 'Fatal' - pool_refs = pool_refs + 1 - text = string.join (map(format, strip), '') - if not strip_map.has_key(text): - strip_map[text] = pool_size - pool_size = pool_size + STRIP_SIZE - strips.append(text) - return strip_map[text] - -# Table writers. - -## -------------------------------------------- ## -## Write a compressed list of character names. ## -## -------------------------------------------- ## - -def produce_charname(name): - global output - - output = Output(name) - write = output.write - - # Establish a mild compression scheme. Words word[0:singles] will be - # represented by a single byte running from 1 to singles. All remaining - # words will be represented by two bytes, the first one running slowly - # from singles+1 to 255, the second cycling faster from 1 to 255. - - def presort_word(word): - return -code_map[word], word - - def postsort_word(pair): - return pair[1] - - sys.stderr.write(' sorting words...') - pairs = map(presort_word, code_map.keys()) - pairs.sort() - words = map(postsort_word, pairs) - pairs = None - sys.stderr.write(' %d of them\n' % len(words)) - - count = len(words) - singles = (255 * 255 - count) / 254 - - # Transmit a few values for further usage by the C code. - - sys.stderr.write(' sorting names...') - ucs2_table = charname_map.keys() - ucs2_table.sort() - sys.stderr.write(' %d of them\n' % len(ucs2_table)) - - write('\n') - write('#define NUMBER_OF_SINGLES %d\n' % singles) - write('#define MAX_CHARNAME_LENGTH %d\n' % max_length) - write('#define NUMBER_OF_CHARNAMES %d\n' % len(ucs2_table)) - - # Establish a mild compression scheme (one or two bytes per word). - - sys.stderr.write(" writing words\n") - write('\n') - write('static const char *const word[%d] =\n' % count) - write(' {\n') - - char1 = 1 - char2 = 1 - - for counter in range(singles): - word = words[counter] - write(' %-28s/* \\%0.3o */\n' - % ('"%s",' % re.sub('"', r'\"', word), char1)) - code_map[words[counter]] = char1 - char1 = char1 + 1 - - for counter in range(singles, count): - word = words[counter] - write(' %-28s/* \\%0.3o\\%0.3o */\n' - % ('"%s",' % re.sub('"', r'\"', word, 1), char1, char2)) - code_map[words[counter]] = 256 * char1 + char2 - if char2 == 255: - char1 = char1 + 1 - char2 = 1 - else: - char2 = char2 + 1 - write(' };\n') - - sys.stderr.write(" writing names\n") - write('\n') - write('struct charname\n') - write(' {\n') - write(' recode_ucs2 code;\n') - write(' const char *crypted;\n') - write(' };\n') - - write('\n') - write('static const struct charname charname[NUMBER_OF_CHARNAMES] =\n') - write(' {\n') - - for ucs2 in ucs2_table: - write(' {0x%04X, "' % ucs2) - for word in string.split(charname_map[ucs2]): - if code_map.has_key(word): - code = code_map[word] - if code < 256: - write('\\%0.3o' % code) - else: - write('\\%0.3o\\%0.3o' % (code / 256, code % 256)) - else: - sys.stderr.write('??? %s\n' % word) - write('"},\n') - - write(' };\n') - del output - -## ------------------------------- ## -## Write libiconv initialisation. ## -## ------------------------------- ## - -def produce_libiconv(name): - global output - - output = Output(name) - write = output.write - - count = 1 - for comment, charset, aliases in libiconv_data: - count = count + 2 + len(aliases) - write('\n') - write("/* This is derived from Bruno Haible's `libiconv' package. */") - write('\n') - write('static const char *iconv_name_list[%d] =\n' % count) - write(' {\n') - for comment, charset, aliases in libiconv_data: - if comment: - write('\n') - write(' /* %s. */\n' % comment) - write('\n') - if aliases: - write(' "%s",\n' % charset) - for alias in aliases[:-1]: - write('\t"%s",\n' % alias) - write('\t"%s", NULL,\n' % aliases[-1]) - else: - write(' "%s", NULL,\n' % charset) - write(' NULL\n') - write(' };\n') - - write('\n') - write('typedef void *iconv_t;\n') - write('#ifndef EILSEQ\n') - write('# define EILSEQ EINVAL\n') - write('#endif\n') - write('\n') - write('#ifdef __cplusplus\n') - write('extern "C" {\n') - write('#endif\n') - write('\n') - write('iconv_t iconv_open (const char *, const char *);\n') - write('size_t iconv' - ' (iconv_t, const char **, size_t *, char **, size_t *);\n') - write('extern int iconv_close (iconv_t cd);\n') - write('\n') - write('#ifdef __cplusplus\n') - write('}\n') - write('#endif\n') - - del output - -## ------------------------------------------- ## -## Write an UCS-2 to RFC 1345 mnemonic table. ## -## ------------------------------------------- ## - -def produce_mnemonic(name): - global output - inverse_map = {} - - output = Output(name) - write = output.write - write('\n') - write('#define TABLE_LENGTH %d\n' % table_length) - write('#define MAX_MNEMONIC_LENGTH %d\n' % MAX_MNEMONIC_LENGTH) - write('\n') - write('struct entry\n') - write(' {\n') - write(' recode_ucs2 code;\n') - write(' const char *rfc1345;\n') - write(' };\n') - - write('\n') - write('static const struct entry table[TABLE_LENGTH] =\n') - write(' {\n') - count = 0 - indices = mnemonic_map.keys() - indices.sort() - for ucs2 in indices: - text = mnemonic_map[ucs2] - inverse_map[text] = count - write(' /* %4d */ {0x%04X, "%s"},\n' - % (count, ucs2, re.sub(r'([\"])', r'\\\1', text))) - count = count + 1 - write(' };\n') - - write('\n') - write('static const unsigned short inverse[TABLE_LENGTH] =\n') - write(' {') - count = 0 - keys = inverse_map.keys() - keys.sort() - for text in keys: - if count % 10 == 0: - if count != 0: - write(',') - write('\n /* %4d */ ' % count) - else: - write(', ') - write('%4d' % inverse_map[text]) - count = count + 1 - write('\n') - write(' };\n') - - del output - -## ------------------------------- ## -## Write the explode source file. ## -## ------------------------------- ## - -def produce_explode_init(name): - global output - - output = Output(name) - write = output.write - write('\n') - write('#include "common.h"\n') - - # Table fragments will be produced while reading data tables. - -def produce_explode_term(): - - # Print the collectable initialization function. - sys.stderr.write("Completing %s\n" % output.name) - - write = output.write - write('\n') - write('bool\n') - write('module_explodes (struct recode_outer *outer)\n') - write('{\n') - count = 0 - while declare_charset: - write(' if (!declare_explode_data (outer, &data_%d, "%s"))\n' - % (count, declare_charset[0])) - write(' return false;\n') - del declare_charset[0] - count = count + 1 - write('\n') - while declare_alias: - write(' if (!declare_alias (outer, "%s", "%s"))\n' % declare_alias[0]) - write(' return false;\n') - del declare_alias[0] - write('\n') - write(' return true;\n') - write('}\n') - - del output - -## --------------------------------- ## -## Write the pool and index tables. ## -## --------------------------------- ## - -def produce_strip_init(name): - global output - global pool_refs - global pool_size - global strips - global strip_map + def begins(self, text): + return self.line[:len(text)] == text - # Prepare the production of tables. - pool_size = 0 - pool_refs = 0 - strip_map = {} - strips = [] + def match(self, pattern): + return re.match(pattern, self.line) - output = Output(name) - write = output.write - write('\n') - write('#include \"common.h\"\n') - - # Table fragments will be produced while reading data tables. - -def produce_strip_term(pool_name): - global output - - # Give memory statistics. - sys.stderr.write('Table memory = %d bytes (pool %d, refs %d)\n' - % (pool_size * 2 + pool_refs * 2, - pool_size * 2, - pool_refs * 2)) - - # Print the collectable initialization function. - sys.stderr.write("Completing %s\n" % output.name) - write = output.write - - write('\n') - write('bool\n') - write('module_strips (struct recode_outer *outer)\n') - write('{\n') - write(' RECODE_SYMBOL symbol;\n') - write('\n') - count = 0 - while declare_charset: - write(' if (!declare_strip_data (outer, &data_%d, "%s"))\n' - % (count, declare_charset[0])) - write(' return false;\n') - del declare_charset[0] - count = count + 1 - write('\n') - while declare_alias: - alias, charset = declare_alias[0] - if implied_surface.has_key(alias): - write(' if (symbol = declare_alias (outer, "%s", "%s"), !symbol)\n' - % declare_alias[0]) - write(' return false;\n') - write(' if (!declare_implied_surface (outer, symbol, outer->%s_surface))\n' - % implied_surface[alias]) - write(' return false;\n') - else: - write(' if (!declare_alias (outer, "%s", "%s"))\n' - % declare_alias[0]) - write(' return false;\n') - del declare_alias[0] - write('\n') - write(' return true;\n') - write('}\n') - del output - - # Write the pool file. - - output = Output(pool_name) - write = output.write - write('\n') - write('#include \"common.h\"\n') - write('\n') - write('const recode_ucs2 ucs2_data_pool[%d] =\n' % pool_size) - write(' {') - count = 0 - for strip in strips: - for pos in range(0, STRIP_SIZE * 4, 4): - if count % 8 == 0: - if count != 0: - write(',') - write('\n /* %4d */ ' % count) - else: - write(', ') - write('0x' + strip[pos:pos+4]) - count = count + 1 - write('\n') - write(' };\n') - - del output - -## ------------------------------- ## -## Write the documentation files. ## -## ------------------------------- ## - -def produce_libiconv_texinfo(name): - global output - - output = Output(name, noheader=1) - write = output.write - write('\n') - write('@itemize @bullet\n') - block = None - for comment, charset, aliases in libiconv_data: - if not block and not comment: - comment = 'General character sets' - if comment: - if block: - write('@end table\n') - write('\n') - write('@item %s\n' % comment) - write('@table @code\n') - block = comment - else: - write('\n') - write('@item %s\n' % charset) - if aliases: - write('@tindex %s@r{, aliases}\n' - % re.sub(':([0-9]+)', r'(\1)', charset)) - for alias in aliases: - write('@tindex %s\n' % re.sub(':([0-9]+)', r'(\1)', alias)) - if len(aliases) == 1: - write('@code{%s} is an alias for this charset.\n' % aliases[0]) - else: - write('@code{%s} and @code{%s} are aliases for this charset.\n' - % (string.join(aliases[:-1], '}, @code{'), aliases[-1])) - else: - write('@tindex %s\n' % re.sub(':([0-9]+)', r'(\1)', charset)) - write('@end table\n') - write('@end itemize\n') + def search(self, pattern): + return re.search(pattern, self.line) + +class Output: - del output + def __init__(self, name, noheader=0): + self.name = name + self.write = open(name, 'w').write + sys.stderr.write("Writing %s\n" % name) + if not noheader: + self.write("""\ +/* DO NOT MODIFY THIS FILE! It was generated by `recode/doc/tables.py'. */ + +/* Conversion of files between different charsets and surfaces. + Copyright © 1999 Free Software Foundation, Inc. + Contributed by François Pinard , 1993, 1997. -def produce_rfc1345_texinfo(name): - global output + This library is free software; you can redistribute 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. - output = Output(name, noheader=1) - write = output.write + This library is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty + of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - charsets = remark_map.keys() - charsets.sort() - for charset in charsets: - write('\n') - write('@item %s\n' % charset) - write('@tindex %s@r{, aliases and source}\n' - % re.sub(':([0-9]+)', r'(\1)', charset)) - aliases = aliases_map[charset] - if aliases: - if len(aliases) == 1: - if aliases[0]: # FIXME: pourquoi parfois vide ?? - write('@tindex %s\n' - % re.sub(':([0-9]+)', r'(\1)', aliases[0])) - write('@code{%s} is an alias for this charset.\n' - % aliases[0]) - else: - for alias in aliases: - write('@tindex %s\n' - % re.sub(':([0-9]+)', r'(\1)', alias)) - write('@code{%s} and @code{%s} are aliases for this charset.\n' - % (string.join(aliases[:-1], '}, @code{'), aliases[-1])) - for line in remark_map[charset]: - if line[0] in string.lowercase: - line = string.upper(line[0]) + line[1:] - write(string.replace(line, '@', '@@')) - if line[-1] != '.': - write('.') - write('\n') - - del output + You should have received a copy of the GNU Lesser General Public + License along with the `recode' Library; see the file `COPYING.LIB'. + If not, write to the Free Software Foundation, Inc., 59 Temple Place - + Suite 330, Boston, MA 02111-1307, USA. */ +""") if __name__ == '__main__': apply(main, tuple(sys.argv[1:])) diff --git a/doc/texinfo.tex b/doc/texinfo.tex index fff5c4e..c49af9f 100644 --- a/doc/texinfo.tex +++ b/doc/texinfo.tex @@ -1,52 +1,72 @@ -%% TeX macros to handle Texinfo files. -%% $Id: texinfo.tex,v 2.221 1997/12/24 18:59:06 karl Exp $ - -% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, -% 94, 95, 96, 97 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 2, 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 texinfo.tex file; see the file COPYING. If not, write -%to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -%Boston, MA 02111-1307, USA. - - -%In other words, you are welcome to use, share and improve this program. -%You are forbidden to forbid anyone else to use, share and improve -%what you give them. Help stamp out software-hoarding! - - -% Send bug reports to bug-texinfo@prep.ai.mit.edu. -% Please include a *precise* test case in each bug report. - - -% Make it possible to create a .fmt file just by loading this file: -% if the underlying format is not loaded, start by loading it now. -% Added by gildea November 1993. +% 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{1999-09-25.10} +% +% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 +% 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 2, 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 texinfo.tex file; see the file COPYING. If not, write +% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +% Boston, MA 02111-1307, USA. +% +% In other words, you are welcome to use, share and improve this program. +% You are forbidden to forbid anyone else to use, share and improve +% what you give them. Help stamp out software-hoarding! +% +% Please try the latest version of texinfo.tex before submitting bug +% reports; you can get the latest version from: +% ftp://ftp.gnu.org/gnu/texinfo.tex +% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) +% ftp://texinfo.org/tex/texinfo.tex +% ftp://us.ctan.org/macros/texinfo/texinfo.tex +% (and all CTAN mirrors, finger ctan@us.ctan.org for a list). +% /home/gd/gnu/doc/texinfo.tex on the GNU machines. +% The texinfo.tex in any given Texinfo distribution could well be out +% of date, so if that's what you're using, please check. +% Texinfo has a small home page at http://texinfo.org/. +% +% 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, to process the dvi file; this makes foo.ps. +% The extra runs of TeX 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. You can get +% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/. -% This automatically updates the version number based on RCS. -\def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}} -\deftexinfoversion$Revision: 2.221 $ -\message{Loading texinfo package [Version \texinfoversion]:} +\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]}\message{} +\everyjob{\message{[Texinfo version \texinfoversion]}% \catcode`+=\active \catcode`\_=\active} % Save some parts of plain tex whose names we will redefine. - \let\ptexb=\b \let\ptexbullet=\bullet \let\ptexc=\c @@ -54,25 +74,17 @@ \let\ptexdot=\. \let\ptexdots=\dots \let\ptexend=\end -\let\ptexequiv = \equiv +\let\ptexequiv=\equiv +\let\ptexexclam=\! \let\ptexi=\i \let\ptexlbrace=\{ \let\ptexrbrace=\} \let\ptexstar=\* \let\ptext=\t -% 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\ } -} - +% We never want plain's outer \+ definition in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax \message{Basics,} \chardef\other=12 @@ -81,18 +93,47 @@ % starts a new line in the output. \newlinechar = `^^J -% Set up fixed words for English. -\ifx\putwordChapter\undefined{\gdef\putwordChapter{Chapter}}\fi% -\def\putwordInfo{Info}% -\ifx\putwordSee\undefined{\gdef\putwordSee{See}}\fi% -\ifx\putwordsee\undefined{\gdef\putwordsee{see}}\fi% -\ifx\putwordfile\undefined{\gdef\putwordfile{file}}\fi% -\ifx\putwordpage\undefined{\gdef\putwordpage{page}}\fi% -\ifx\putwordsection\undefined{\gdef\putwordsection{section}}\fi% -\ifx\putwordSection\undefined{\gdef\putwordSection{Section}}\fi% -\ifx\putwordTableofContents\undefined{\gdef\putwordTableofContents{Table of Contents}}\fi% -\ifx\putwordShortContents\undefined{\gdef\putwordShortContents{Short Contents}}\fi% -\ifx\putwordAppendix\undefined{\gdef\putwordAppendix{Appendix}}\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\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi +\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi +\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi % Ignore a token. % @@ -113,30 +154,35 @@ % since that produces some useless output on the terminal. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\ifx\eTeXversion\undefined \def\loggingall{\tracingcommands2 \tracingstats2 \tracingpages1 \tracingoutput1 \tracinglostchars1 \tracingmacros2 \tracingparagraphs1 \tracingrestores1 \showboxbreadth\maxdimen\showboxdepth\maxdimen }% +\else +\def\loggingall{\tracingcommands3 \tracingstats2 + \tracingpages1 \tracingoutput1 \tracinglostchars1 + \tracingmacros2 \tracingparagraphs1 \tracingrestores1 + \tracingscantokens1 \tracingassigns1 \tracingifs1 + \tracinggroups1 \tracingnesting2 + \showboxbreadth\maxdimen\showboxdepth\maxdimen +}% +\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\cornerlong \newdimen\cornerthick -\newdimen\topandbottommargin -\newdimen\outerhsize \newdimen\outervsize -\cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks -\outerhsize=7in -%\outervsize=9.5in -% Alternative @smallbook page size is 9.25in -\outervsize=9.25in -\topandbottommargin=.75in +\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines +\newdimen\cornerlong \cornerlong=1pc +\newdimen\cornerthick \cornerthick=.3pt +\newdimen\topandbottommargin \topandbottommargin=.75in % Main output routine. \chardef\PAGE = 255 @@ -170,13 +216,16 @@ \shipout\vbox{% \ifcropmarks \vbox to \outervsize\bgroup \hsize = \outerhsize - \line{\ewtop\hfil\ewtop}% - \nointerlineskip - \line{% - \vbox{\moveleft\cornerthick\nstop}% - \hfill - \vbox{\moveright\cornerthick\nstop}% - }% + \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. @@ -194,18 +243,22 @@ \unvbox\footlinebox \fi % + \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi + % \ifcropmarks \egroup % end of \vbox\bgroup \hfil\egroup % end of (centering) \line\bgroup \vskip\topandbottommargin plus1fill minus1fill \boxmaxdepth = \cornerthick - \line{% - \vbox{\moveleft\cornerthick\nsbot}% - \hfill - \vbox{\moveright\cornerthick\nsbot}% + \vbox to0pt{\vss + \line{% + \vbox{\moveleft\cornerthick\nsbot}% + \hfill + \vbox{\moveright\cornerthick\nsbot}% + }% + \nointerlineskip + \line{\ewbot\hfil\ewbot}% }% - \nointerlineskip - \line{\ewbot\hfil\ewbot}% \egroup % \vbox from first cropmarks clause \fi }% end of \shipout\vbox @@ -321,11 +374,11 @@ %% Call \inENV within environments (after a \begingroup) \newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi} \def\ENVcheck{% -\ifENV\errmessage{Still within an environment. Type Return to continue.} +\ifENV\errmessage{Still within an environment; press RETURN to continue} \endgroup\fi} % This is not perfect, but it should reduce lossage % @begin foo is the same as @foo, for now. -\newhelp\EMsimple{Type to continue.} +\newhelp\EMsimple{Press RETURN to continue.} \outer\def\begin{\parsearg\beginxxx} @@ -384,7 +437,7 @@ % @@ prints an @ % Kludge this until the fonts are right (grr). -\def\@{{\tt \char '100}} +\def\@{{\tt\char64}} % This is turned off because it was never documented % and you can use @w{...} around a quote to suppress ligatures. @@ -394,8 +447,8 @@ %\def\'{{'}} % Used to generate quoted braces. -\def\mylbrace {{\tt \char '173}} -\def\myrbrace {{\tt \char '175}} +\def\mylbrace {{\tt\char123}} +\def\myrbrace {{\tt\char125}} \let\{=\mylbrace \let\}=\myrbrace \begingroup @@ -432,6 +485,18 @@ \fi\fi } +% 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 } @@ -529,41 +594,47 @@ where each line of input produces a line of output.} %% 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\penalty 10000 +%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak %\prevdepth=-1000pt %}} \def\needx#1{% - % Go into vertical mode, so we don't make a big box in the middle of a + % Ensure vertical mode, so we don't make a big box in the middle of a % paragraph. \par % - % Don't add any leading before our big empty box, but allow a page - % break, since the best break might be right here. - \allowbreak - \nointerlineskip - \vtop to #1\mil{\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 + % 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 @@ -574,15 +645,19 @@ where each line of input produces a line of output.} % We do .5em per period so that it has the same spacing in a typewriter % font as three actual period characters. % -\def\dots{\hbox to 1.5em{% - \hskip 0pt plus 0.25fil minus 0.25fil - .\hss.\hss.% - \hskip 0pt plus 0.5fil minus 0.5fil -}} +\def\dots{% + \leavevmode + \hbox to 1.5em{% + \hskip 0pt plus 0.25fil minus 0.25fil + .\hss.\hss.% + \hskip 0pt plus 0.5fil minus 0.5fil + }% +} % @enddots{} is an end-of-sentence ellipsis. -% +% \def\enddots{% + \leavevmode \hbox to 2em{% \hskip 0pt plus 0.25fil minus 0.25fil .\hss.\hss.\hss.% @@ -593,7 +668,7 @@ where each line of input produces a line of output.} % @page forces the start of a new page - +% \def\page{\par\vfill\supereject} % @exdent text.... @@ -660,420 +735,295 @@ where each line of input produces a line of output.} % @c is the same as @comment % @ignore ... @end ignore is another way to write a comment -\def\comment{\catcode 64=\other \catcode 123=\other \catcode 125=\other% -\parsearg \commentxxx} - -\def\commentxxx #1{\catcode 64=0 \catcode 123=1 \catcode 125=2 } +\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 is defined for the Info formatting commands only. -\let\paragraphindent=\comment - -% Prevent errors for section commands. -% Used in @ignore and in failing conditionals. -\def\ignoresections{% -\let\chapter=\relax -\let\unnumbered=\relax -\let\top=\relax -\let\unnumberedsec=\relax -\let\unnumberedsection=\relax -\let\unnumberedsubsec=\relax -\let\unnumberedsubsection=\relax -\let\unnumberedsubsubsec=\relax -\let\unnumberedsubsubsection=\relax -\let\section=\relax -\let\subsec=\relax -\let\subsubsec=\relax -\let\subsection=\relax -\let\subsubsection=\relax -\let\appendix=\relax -\let\appendixsec=\relax -\let\appendixsection=\relax -\let\appendixsubsec=\relax -\let\appendixsubsection=\relax -\let\appendixsubsubsec=\relax -\let\appendixsubsubsection=\relax -\let\contents=\relax -\let\smallbook=\relax -\let\titlepage=\relax +% @paragraphindent NCHARS +% We'll use ems for NCHARS, close enough. +% We cannot implement @paragraphindent asis, though. +% +\def\asisword{asis} % no translation, these are keywords +\def\noneword{none} +% +\def\paragraphindent{\parsearg\doparagraphindent} +\def\doparagraphindent#1{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \defaultparindent = 0pt + \else + \defaultparindent = #1em + \fi + \fi + \parindent = \defaultparindent } -% Used in nested conditionals, where we have to parse the Texinfo source -% and so want to turn off most commands, in case they are used -% incorrectly. -% -\def\ignoremorecommands{% - \let\defcodeindex = \relax - \let\defcv = \relax - \let\deffn = \relax - \let\deffnx = \relax - \let\defindex = \relax - \let\defivar = \relax - \let\defmac = \relax - \let\defmethod = \relax - \let\defop = \relax - \let\defopt = \relax - \let\defspec = \relax - \let\deftp = \relax - \let\deftypefn = \relax - \let\deftypefun = \relax - \let\deftypevar = \relax - \let\deftypevr = \relax - \let\defun = \relax - \let\defvar = \relax - \let\defvr = \relax - \let\ref = \relax - \let\xref = \relax - \let\printindex = \relax - \let\pxref = \relax - \let\settitle = \relax - \let\setchapternewpage = \relax - \let\setchapterstyle = \relax - \let\everyheading = \relax - \let\evenheading = \relax - \let\oddheading = \relax - \let\everyfooting = \relax - \let\evenfooting = \relax - \let\oddfooting = \relax - \let\headings = \relax - \let\include = \relax - \let\lowersections = \relax - \let\down = \relax - \let\raisesections = \relax - \let\up = \relax - \let\set = \relax - \let\clear = \relax - \let\item = \relax +% @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. +\def\exampleindent{\parsearg\doexampleindent} +\def\doexampleindent#1{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi } -% Ignore @ignore ... @end ignore. +% @asis just yields its argument. Used with @table, for example. % -\def\ignore{\doignore{ignore}} +\def\asis#1{#1} -% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text. +% @math means output in math mode. +% We don't use $'s directly in the definition of \math because control +% sequences like \math are expanded when the toc file is written. Then, +% we read the toc file back, the $'s will be normal characters (as they +% should be, according to the definition of Texinfo). So we must use a +% control sequence to switch into and out of math mode. % -\def\ifinfo{\doignore{ifinfo}} -\def\ifhtml{\doignore{ifhtml}} -\def\ifnottex{\doignore{ifnottex}} -\def\html{\doignore{html}} -\def\menu{\doignore{menu}} -\def\direntry{\doignore{direntry}} - -% Also ignore @macro ... @end macro. The user must run texi2dvi, -% which runs makeinfo to do macro expansion. Ignore @unmacro, too. -\def\macro{\doignore{macro}} -\let\unmacro = \comment +% This isn't quite enough for @math to work properly in indices, but it +% seems unlikely it will ever be needed there. +% +\let\implicitmath = $ +\def\math#1{\implicitmath #1\implicitmath} +% @bullet and @minus need the same treatment as @math, just above. +\def\bullet{\implicitmath\ptexbullet\implicitmath} +\def\minus{\implicitmath-\implicitmath} -% @dircategory CATEGORY -- specify a category of the dir file -% which this file should belong to. Ignore this in TeX. -\let\dircategory = \comment +% @refill is a no-op. +\let\refill=\relax -% Ignore text until a line `@end #1'. +% 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). % -\def\doignore#1{\begingroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define a command to swallow text until we reach `@end #1'. - \long\def\doignoretext##1\end #1{\enddoignore}% - % - % Make sure that spaces turn into tokens that match what \doignoretext wants. - \catcode32 = 10 - % - % Ignore braces, too, so mismatched braces don't cause trouble. - \catcode`\{ = 9 - \catcode`\} = 9 - % - % And now expand that command. - \doignoretext +\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{% + \iflinks + \readauxfile + \fi % \openindices needs to do some work in any case. + \openindices + \fixbackslash % Turn off hack to swallow `\input texinfo'. + \global\let\setfilename=\comment % Ignore extra @setfilename cmds. + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. + % Just to be on the safe side, close the input stream before the \input. + \openin 1 texinfo.cnf + \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi + \closein1 + \temp + % + \comment % Ignore the actual filename. } -% What we do to finish off ignored text. +% Called from \setfilename. % -\def\enddoignore{\endgroup\ignorespaces}% +\def\openindices{% + \newindex{cp}% + \newcodeindex{fn}% + \newcodeindex{vr}% + \newcodeindex{tp}% + \newcodeindex{ky}% + \newcodeindex{pg}% +} -\newif\ifwarnedobs\warnedobsfalse -\def\obstexwarn{% - \ifwarnedobs\relax\else - % We need to warn folks that they may have trouble with TeX 3.0. - % This uses \immediate\write16 rather than \message to get newlines. - \immediate\write16{} - \immediate\write16{***WARNING*** for users of Unix TeX 3.0!} - \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).} - \immediate\write16{If you are running another version of TeX, relax.} - \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} - \immediate\write16{ Then upgrade your TeX installation if you can.} - \immediate\write16{ (See ftp://ftp.gnu.ai.mit.edu/pub/gnu/TeX.README.)} - \immediate\write16{If you are stuck with version 3.0, run the} - \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} - \immediate\write16{ to use a workaround.} - \immediate\write16{} - \global\warnedobstrue +% @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 + +\ifx\pdfoutput\undefined + \pdffalse + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\linkcolor = \relax + \let\pdfmakeoutlines = \relax +\else + \pdftrue + \pdfoutput = 1 + \input pdfcolor + \def\dopdfimage#1#2#3{% + \def\imagewidth{#2}% + \def\imageheight{#3}% + \ifnum\pdftexversion < 14 + \pdfimage + \else + \pdfximage \fi -} - -% **In TeX 3.0, setting text in \nullfont hangs tex. For a -% workaround (which requires the file ``dummy.tfm'' to be installed), -% uncomment the following line: -%%%%%\font\nullfont=dummy\let\obstexwarn=\relax - -% Ignore text, except that we keep track of conditional commands for -% purposes of nesting, up to an `@end #1' command. -% -\def\nestedignore#1{% - \obstexwarn - % We must actually expand the ignored text to look for the @end - % command, so that nested ignore constructs work. Thus, we put the - % text into a \vbox and then do nothing with the result. To minimize - % the change of memory overflow, we follow the approach outlined on - % page 401 of the TeXbook: make the current font be a dummy font. - % - \setbox0 = \vbox\bgroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define `@end #1' to end the box, which will in turn undefine the - % @end command again. - \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}% - % - % We are going to be parsing Texinfo commands. Most cause no - % trouble when they are used incorrectly, but some commands do - % complicated argument parsing or otherwise get confused, so we - % undefine them. - % - % We can't do anything about stray @-signs, unfortunately; - % they'll produce `undefined control sequence' errors. - \ignoremorecommands - % - % Set the current font to be \nullfont, a TeX primitive, and define - % all the font commands to also use \nullfont. We don't use - % dummy.tfm, as suggested in the TeXbook, because not all sites - % might have that installed. Therefore, math mode will still - % produce output, but that should be an extremely small amount of - % stuff compared to the main input. - % - \nullfont - \let\tenrm = \nullfont \let\tenit = \nullfont \let\tensl = \nullfont - \let\tenbf = \nullfont \let\tentt = \nullfont \let\smallcaps = \nullfont - \let\tensf = \nullfont - % Similarly for index fonts (mostly for their use in - % smallexample) - \let\indrm = \nullfont \let\indit = \nullfont \let\indsl = \nullfont - \let\indbf = \nullfont \let\indtt = \nullfont \let\indsc = \nullfont - \let\indsf = \nullfont - % - % Don't complain when characters are missing from the fonts. - \tracinglostchars = 0 - % - % Don't bother to do space factor calculations. - \frenchspacing - % - % Don't report underfull hboxes. - \hbadness = 10000 - % - % Do minimal line-breaking. - \pretolerance = 10000 - % - % Do not execute instructions in @tex - \def\tex{\doignore{tex}}% -} - -% @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. Make sure the catcode of space is correct to avoid -% losing inside @example, for instance. -% -\def\set{\begingroup\catcode` =10 - \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. - \parsearg\setxxx} -\def\setxxx#1{\setyyy#1 \endsetyyy} -\def\setyyy#1 #2\endsetyyy{% - \def\temp{#2}% - \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty - \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. - \fi - \endgroup -} -% Can't use \xdef to pre-expand #2 and save some time, since \temp or -% \next or other control sequences that we've defined might get us into -% an infinite loop. Consider `@set foo @cite{bar}'. -\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} - -% @clear VAR clears (i.e., unsets) the variable VAR. -% -\def\clear{\parsearg\clearxxx} -\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax} - -% @value{foo} gets the text saved in variable foo. -% -\def\value{\begingroup - \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. - \valuexxx} -\def\valuexxx#1{% - \expandafter\ifx\csname SET#1\endcsname\relax - {\{No value for ``#1''\}}% - \else - \csname SET#1\endcsname - \fi -\endgroup} - -% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined -% with @set. -% -\def\ifset{\parsearg\ifsetxxx} -\def\ifsetxxx #1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \expandafter\ifsetfail - \else - \expandafter\ifsetsucceed - \fi -} -\def\ifsetsucceed{\conditionalsucceed{ifset}} -\def\ifsetfail{\nestedignore{ifset}} -\defineunmatchedend{ifset} - -% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been -% defined with @set, or has been undefined with @clear. -% -\def\ifclear{\parsearg\ifclearxxx} -\def\ifclearxxx #1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \expandafter\ifclearsucceed - \else - \expandafter\ifclearfail - \fi -} -\def\ifclearsucceed{\conditionalsucceed{ifclear}} -\def\ifclearfail{\nestedignore{ifclear}} -\defineunmatchedend{ifclear} - -% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text -% following, through the first @end iftex (etc.). Make `@end iftex' -% (etc.) valid only after an @iftex. -% -\def\iftex{\conditionalsucceed{iftex}} -\def\ifnothtml{\conditionalsucceed{ifnothtml}} -\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} -\defineunmatchedend{iftex} -\defineunmatchedend{ifnothtml} -\defineunmatchedend{ifnotinfo} - -% We can't just want to start a group at @iftex (for example) and end it -% at @end iftex, since then @set commands inside the conditional have no -% effect (they'd get reverted at the end of the group). So we must -% define \Eiftex to redefine itself to be its previous value. (We can't -% just define it to fail again with an ``unmatched end'' error, since -% the @ifset might be nested.) -% -\def\conditionalsucceed#1{% - \edef\temp{% - % Remember the current value of \E#1. - \let\nece{prevE#1} = \nece{E#1}% - % - % At the `@end #1', redefine \E#1 to be its previous value. - \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}% - }% - \temp -} - -% We need to expand lots of \csname's, but we don't want to expand the -% control sequences after we've constructed them. -% -\def\nece#1{\expandafter\noexpand\csname#1\endcsname} - -% @asis just yields its argument. Used with @table, for example. -% -\def\asis#1{#1} - -% @math means output in math mode. -% We don't use $'s directly in the definition of \math because control -% sequences like \math are expanded when the toc file is written. Then, -% we read the toc file back, the $'s will be normal characters (as they -% should be, according to the definition of Texinfo). So we must use a -% control sequence to switch into and out of math mode. -% -% This isn't quite enough for @math to work properly in indices, but it -% seems unlikely it will ever be needed there. -% -\let\implicitmath = $ -\def\math#1{\implicitmath #1\implicitmath} - -% @bullet and @minus need the same treatment as @math, just above. -\def\bullet{\implicitmath\ptexbullet\implicitmath} -\def\minus{\implicitmath-\implicitmath} - -\def\node{\ENVcheck\parsearg\nodezzz} -\def\nodezzz#1{\nodexxx [#1,]} -\def\nodexxx[#1,#2]{\gdef\lastnode{#1}} -\let\nwnode=\node -\let\lastnode=\relax - -\def\donoderef{\ifx\lastnode\relax\else -\expandafter\expandafter\expandafter\setref{\lastnode}\fi -\global\let\lastnode=\relax} - -\def\unnumbnoderef{\ifx\lastnode\relax\else -\expandafter\expandafter\expandafter\unnumbsetref{\lastnode}\fi -\global\let\lastnode=\relax} - -\def\appendixnoderef{\ifx\lastnode\relax\else -\expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi -\global\let\lastnode=\relax} - -% @refill is a no-op. -\let\refill=\relax - -% @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{% - \readauxfile - \opencontents - \openindices - \fixbackslash % Turn off hack to swallow `\input texinfo'. - \global\let\setfilename=\comment % Ignore extra @setfilename cmds. - % - % If texinfo.cnf is present on the system, read it. - % Useful for site-wide @afourpaper, etc. - % Just to be on the safe side, close the input stream before the \input. - \openin 1 texinfo.cnf - \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi - \closein1 - \temp - % - \comment % Ignore the actual filename. -} - -% @bye. -\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} - -% \def\macro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\macroxxx} -% \def\macroxxx#1#2 \end macro{% -% \expandafter\gdef\macrotemp#1{#2}% -% \endgroup} - -%\def\linemacro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\linemacroxxx} -%\def\linemacroxxx#1#2 \end linemacro{% -%\let\parsearg=\relax -%\edef\macrotempx{\csname M\butfirst\expandafter\string\macrotemp\endcsname}% -%\expandafter\xdef\macrotemp{\parsearg\macrotempx}% -%\expandafter\gdef\macrotempx#1{#2}% -%\endgroup} - -%\def\butfirst#1{} + \ifx\empty\imagewidth\else width \imagewidth \fi + \ifx\empty\imageheight\else height \imageheight \fi + {#1.pdf}% + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + \def\pdfmkdest#1{\pdfdest name{#1@} xyz} + \def\pdfmkpgn#1{#1@} + \let\linkcolor = \Cyan + \def\endlink{\Black\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 by1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + \def\pdfmakeoutlines{{% + \openin 1 \jobname.toc + \ifeof 1\else\bgroup + \closein 1 + \indexnofonts + \def\tt{} + % thanh's hack / proper braces in bookmarks + \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace + \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace + % + \def\chapentry ##1##2##3{} + \def\unnumbchapentry ##1##2{} + \def\secentry ##1##2##3##4{\advancenumber{chap##2}} + \def\unnumbsecentry ##1##2{} + \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} + \def\unnumbsubsecentry ##1##2{} + \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} + \def\unnumbsubsubsecentry ##1##2{} + \input \jobname.toc + \def\chapentry ##1##2##3{% + \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} + \def\unnumbchapentry ##1##2{% + \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} + \def\secentry ##1##2##3##4{% + \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} + \def\unnumbsecentry ##1##2{% + \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} + \def\subsecentry ##1##2##3##4##5{% + \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} + \def\unnumbsubsecentry ##1##2{% + \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} + \def\subsubsecentry ##1##2##3##4##5##6{% + \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} + \def\unnumbsubsubsecentry ##1##2{% + \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} + \input \jobname.toc + \egroup\fi + }} + \def\makelinks #1,{% + \def\params{#1}\def\E{END}% + \ifx\params\E + \let\nextmakelinks=\relax + \else + \let\nextmakelinks=\makelinks + \ifnum\lnkcount>0,\fi + \picknum{#1}% + \startlink attr{/Border [0 0 0]} + goto name{\pdfmkpgn{\the\pgn}}% + \linkcolor #1% + \advance\lnkcount by 1% + \endlink + \fi + \nextmakelinks + } + \def\picknum#1{\expandafter\pn#1} + \def\pn#1{% + \def\p{#1}% + \ifx\p\lbrace + \let\nextpn=\ppn + \else + \let\nextpn=\ppnn + \def\first{#1} + \fi + \nextpn + } + \def\ppn#1{\pgn=#1\gobble} + \def\ppnn{\pgn=\first} + \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \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 + \def\pdfurl#1{% + \begingroup + \normalturnoffactive\def\@{@}% + \leavevmode\Red + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + % #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| + \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{\mkpgn{#1}} + \linkcolor #1\endlink} + \def\mkpgn#1{#1@} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +\fi % \ifx\pdfoutput \message{fonts,} - % Font-change commands. -% Texinfo supports the sans serif font style, which plain TeX does not. +% Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf analogous to plain's \rm, etc. \newfam\sffam \def\sf{\fam=\sffam \tensf} @@ -1139,22 +1089,17 @@ where each line of input produces a line of output.} \setfont\deftt\ttshape{10}{\magstep1} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} -% Fonts for indices and small examples (9pt). -% We actually use the slanted font rather than the italic, -% because texinfo normally uses the slanted fonts for that. -% Do not make many font distinctions in general in the index, since they -% aren't very useful. -\setfont\ninett\ttshape{9}{1000} -\setfont\indrm\rmshape{9}{1000} -\setfont\indit\slshape{9}{1000} -\let\indsl=\indit -\let\indtt=\ninett -\let\indttsl=\ninett -\let\indsf=\indrm -\let\indbf=\indrm -\setfont\indsc\scshape{10}{900} -\font\indi=cmmi9 -\font\indsy=cmsy9 +% Fonts for indices, footnotes, small examples (9pt). +\setfont\smallrm\rmshape{9}{1000} +\setfont\smalltt\ttshape{9}{1000} +\setfont\smallbf\bfshape{10}{900} +\setfont\smallit\itshape{9}{1000} +\setfont\smallsl\slshape{9}{1000} +\setfont\smallsf\sfshape{9}{1000} +\setfont\smallsc\scshape{10}{900} +\setfont\smallttsl\ttslshape{10}{900} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 % Fonts for title page: \setfont\titlerm\rmbshape{12}{\magstep3} @@ -1268,16 +1213,21 @@ where each line of input produces a line of output.} \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl \resetmathfonts \setleading{15pt}} \let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf? -\def\indexfonts{% - \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl - \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc - \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy \let\tenttsl=\indttsl - \resetmathfonts \setleading{12pt}} +\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 + \resetmathfonts \setleading{11pt}} % Set up the default fonts, so we can use them for creating boxes. % \textfonts +% 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 @@ -1292,13 +1242,14 @@ where each line of input produces a line of output.} % \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\/\fi\fi\fi} -\def\smartitalic#1{{\sl #1}\futurelet\next\smartitalicx} +\def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx} +\def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx} \let\i=\smartitalic -\let\var=\smartitalic -\let\dfn=\smartitalic +\let\var=\smartslanted +\let\dfn=\smartslanted \let\emph=\smartitalic -\let\cite=\smartitalic +\let\cite=\smartslanted \def\b#1{{\bf #1}} \let\strong=\b @@ -1315,20 +1266,22 @@ where each line of input produces a line of output.} \null } \let\ttfont=\t -\def\samp #1{`\tclose{#1}'\null} -\setfont\smallrm\rmshape{8}{1000} -\font\smallsy=cmsy9 -\def\key#1{{\smallrm\textfont2=\smallsy \leavevmode\hbox{% - \raise0.4pt\hbox{$\langle$}\kern-.08em\vtop{% +\def\samp#1{`\tclose{#1}'\null} +\setfont\keyrm\rmshape{8}{1000} +\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{$\langle$}}#1}}% + \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% \kern-0.4pt\hrule}% - \kern-.06em\raise0.4pt\hbox{$\rangle$}}}} + \kern-.06em\raise0.4pt\hbox{\angleright}}}} % 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. @@ -1363,20 +1316,18 @@ where each line of input produces a line of output.} % and arrange explicitly to hyphenate at a dash. % -- rms. { -\catcode`\-=\active -\catcode`\_=\active -\catcode`\|=\active -\global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex} -% The following is used by \doprintindex to insure that long function names -% wrap around. It is necessary for - and _ to be active before the index is -% read from the file, as \entry parses the arguments long before \code is -% ever called. -- mycroft -% _ is always active; and it shouldn't be \let = to an _ that is a -% subscript character anyway. Then, @cindex @samp{_} (for example) -% fails. --karl -\global\def\indexbreaks{% - \catcode`\-=\active \let-\realdash -} + \catcode`\-=\active + \catcode`\_=\active + % + \global\def\code{\begingroup + \catcode`\-=\active \let-\codedash + \catcode`\_=\active \let_\codeunder + \codex + } + % + % If we end up with any active - characters when handling the index, + % just treat them as a normal -. + \global\def\indexbreaks{\catcode`\-=\active \let-\realdash} } \def\realdash{-} @@ -1417,27 +1368,55 @@ where each line of input produces a line of output.} \else{\tclose{\kbdfont\look}}\fi \else{\tclose{\kbdfont\look}}\fi} -% @url. Quotes do not seem necessary, so use \code. +% For @url, @env, @command quotes seem unnecessary, so use \code. \let\url=\code - -% @uref (abbreviation for `urlref') takes an optional second argument -% specifying the text to display. First (mandatory) arg is the url. -% Perhaps eventually put in a hypertex \special here. -% -\def\uref#1{\urefxxx #1,,\finish} -\def\urefxxx#1,#2,#3\finish{% - \setbox0 = \hbox{\ignorespaces #2}% +\let\env=\code +\let\command=\code + +% @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\ (\code{#1})% + \unhbox0 % third arg given, show only that \else - \code{#1}% + \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} -% rms does not like the angle brackets --karl, 17may97. -% So now @email is just like @uref. -%\def\email#1{$\langle${\tt #1}$\rangle$} -\let\email=\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 @@ -1447,8 +1426,7 @@ where each line of input produces a line of output.} \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. +% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % \def\dmn#1{\thinspace #1} @@ -1459,11 +1437,14 @@ where each line of input produces a line of output.} % 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 -% Use of \lowercase was suggested. \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font +% @acronym downcases the argument and prints in smallcaps. +\def\acronym#1{{\smallcaps \lowercase{#1}}} + % @pounds{} is a sterling sign. \def\pounds{{\it\$}} @@ -1477,15 +1458,20 @@ where each line of input produces a line of output.} \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 + \def\shorttitlepage{\parsearg\shorttitlepagezzz} \def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% \endgroup\page\hbox{}\page} \def\titlepage{\begingroup \parindent=0pt \textfonts \let\subtitlerm=\tenrm -% I deinstalled the following change because \cmr12 is undefined. -% This change was not in the ChangeLog anyway. --rms. -% \let\subtitlerm=\cmr12 \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% % \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}% @@ -1534,6 +1520,23 @@ where each line of input produces a line of output.} % after the title page, which we certainly don't want. \oldpage \endgroup + % + % 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 + % + \ifpdf \pdfmakepagedesttrue \fi + % \HEADINGSon } @@ -1547,10 +1550,10 @@ where each line of input produces a line of output.} \let\thispage=\folio -\newtoks \evenheadline % Token sequence for heading line of even pages -\newtoks \oddheadline % Token sequence for heading line of odd pages -\newtoks \evenfootline % Token sequence for footing line of even pages -\newtoks \oddfootline % Token sequence for footing line of odd pages +\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 @@ -1668,39 +1671,23 @@ where each line of input produces a line of output.} % Subroutines used in generating headings % Produces Day Month Year style of output. -\def\today{\number\day\space -\ifcase\month\or -January\or February\or March\or April\or May\or June\or -July\or August\or September\or October\or November\or December\fi -\space\number\year} - -% Use this if you want the Month Day, Year style of output. -%\def\today{\ifcase\month\or -%January\or February\or March\or April\or May\or June\or -%July\or August\or September\or October\or November\or December\fi -%\space\number\day, \number\year} - -% @settitle line... specifies the title of the document, for headings -% It generates no output of its own - -\def\thistitle{No Title} +\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} + +% @settitle line... specifies the title of the document, for headings. +% It generates no output of its own. +\def\thistitle{\putwordNoTitle} \def\settitle{\parsearg\settitlezzz} \def\settitlezzz #1{\gdef\thistitle{#1}} \message{tables,} - -% @tabs -- simple alignment - -% These don't work. For one thing, \+ is defined as outer. -% So these macros cannot even be defined. - -%\def\tabs{\parsearg\tabszzz} -%\def\tabszzz #1{\settabs\+#1\cr} -%\def\tabline{\parsearg\tablinezzz} -%\def\tablinezzz #1{\+#1\cr} -%\def\&{&} - % Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x). % default indentation of table text @@ -1744,11 +1731,6 @@ July\or August\or September\or October\or November\or December\fi \itemindex{#1}% \nobreak % This prevents a break before @itemx. % - % Be sure we are not still in the middle of a paragraph. - %{\parskip = 0in - %\par - %}% - % % 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 @@ -1777,13 +1759,17 @@ July\or August\or September\or October\or November\or December\fi \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. Since that - % text will be indented by \tableindent, we make the item text be in - % a zero-width box. + % following text (if any) will end up on the same line. \noindent - \rlap{\hskip -\tableindent\box0}\ignorespaces% - \endgroup% - \itemxneedsnegativevskiptrue% + % 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 } @@ -1794,9 +1780,10 @@ July\or August\or September\or October\or November\or December\fi \def\xitem{\errmessage{@xitem while not in a table}} \def\xitemx{\errmessage{@xitemx while not in a table}} -%% Contains a kludge to get @end[description] to work +% Contains a kludge to get @end[description] to work. \def\description{\tablez{\dontindex}{1}{}{}{}{}} +% @table, @ftable, @vtable. \def\table{\begingroup\inENV\obeylines\obeyspaces\tablex} {\obeylines\obeyspaces% \gdef\tablex #1^^M{% @@ -1856,7 +1843,7 @@ July\or August\or September\or October\or November\or December\fi \def\itemize{\parsearg\itemizezzz} \def\itemizezzz #1{% - \begingroup % ended by the @end itemsize + \begingroup % ended by the @end itemize \itemizey {#1}{\Eitemize} } @@ -2011,199 +1998,567 @@ July\or August\or September\or October\or November\or December\fi % 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. +% Or use a template: +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item ... +% using the widest term desired in each column. +% +% For those who want to use more than one line's worth of words in +% the preamble, break the line within one argument and it +% will parse correctly, i.e., +% +% @multitable {Column 1 template} {Column 2 template} {Column 3 +% template} +% Not: +% @multitable {Column 1 template} {Column 2 template} +% {Column 3 template} + +% 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, @multitable or @end multitable 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 part of the @columnfraction before the decimal point, which +% is presumably either 0 or the empty string (but we don't check, we +% just throw it away). #2 is the decimal part, which we use as the +% percent of \hsize for this column. +\def\pickupwholefraction#1.#2 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{.#2\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 }% 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 +} + +% This used to have \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{&} + +% @multitable ... @end multitable definitions: +% +\def\multitable{\parsearg\dotable} +\def\dotable#1{\bgroup + \vskip\parskip + \let\item\crcr + \tolerance=9500 + \hbadness=9500 + \setmultitablespacing + \parskip=\multitableparskip + \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0 + \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}% + % + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % \everycr will reset column counter, \colcount, at the end of + % each line. Every column entry will cause \colcount to advance by one. + % The table preamble + % looks at the current \colcount to find the correct column width. + \everycr{\noalign{% + % + % \filbreak%% keeps underfull box messages off when table breaks over pages. + % 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. + \global\colcount=0\relax}}% + % + % 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\relax + \multistrut\vtop{\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\setmultitablespacing{% test to see if user has set \multitablelinespace. +% If so, do nothing. If not, give it an appropriate dimension based on +% current baselineskip. +\ifdim\multitablelinespace=0pt +\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip +\global\advance\multitablelinespace by-\ht0 +%% strut to put in table in case some entry doesn't have descenders, +%% to keep lines equally spaced +\let\multistrut = \strut +\else +%% FIXME: what is \box0 supposed to be? +\gdef\multistrut{\vrule height\multitablelinespace depth\dp0 +width0pt\relax} \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,} +% Prevent errors for section commands. +% Used in @ignore and in failing conditionals. +\def\ignoresections{% + \let\chapter=\relax + \let\unnumbered=\relax + \let\top=\relax + \let\unnumberedsec=\relax + \let\unnumberedsection=\relax + \let\unnumberedsubsec=\relax + \let\unnumberedsubsection=\relax + \let\unnumberedsubsubsec=\relax + \let\unnumberedsubsubsection=\relax + \let\section=\relax + \let\subsec=\relax + \let\subsubsec=\relax + \let\subsection=\relax + \let\subsubsection=\relax + \let\appendix=\relax + \let\appendixsec=\relax + \let\appendixsection=\relax + \let\appendixsubsec=\relax + \let\appendixsubsection=\relax + \let\appendixsubsubsec=\relax + \let\appendixsubsubsection=\relax + \let\contents=\relax + \let\smallbook=\relax + \let\titlepage=\relax +} + +% Used in nested conditionals, where we have to parse the Texinfo source +% and so want to turn off most commands, in case they are used +% incorrectly. +% +\def\ignoremorecommands{% + \let\defcodeindex = \relax + \let\defcv = \relax + \let\deffn = \relax + \let\deffnx = \relax + \let\defindex = \relax + \let\defivar = \relax + \let\defmac = \relax + \let\defmethod = \relax + \let\defop = \relax + \let\defopt = \relax + \let\defspec = \relax + \let\deftp = \relax + \let\deftypefn = \relax + \let\deftypefun = \relax + \let\deftypeivar = \relax + \let\deftypeop = \relax + \let\deftypevar = \relax + \let\deftypevr = \relax + \let\defun = \relax + \let\defvar = \relax + \let\defvr = \relax + \let\ref = \relax + \let\xref = \relax + \let\printindex = \relax + \let\pxref = \relax + \let\settitle = \relax + \let\setchapternewpage = \relax + \let\setchapterstyle = \relax + \let\everyheading = \relax + \let\evenheading = \relax + \let\oddheading = \relax + \let\everyfooting = \relax + \let\evenfooting = \relax + \let\oddfooting = \relax + \let\headings = \relax + \let\include = \relax + \let\lowersections = \relax + \let\down = \relax + \let\raisesections = \relax + \let\up = \relax + \let\set = \relax + \let\clear = \relax + \let\item = \relax +} + +% Ignore @ignore ... @end ignore. +% +\def\ignore{\doignore{ignore}} + +% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text. +% +\def\ifinfo{\doignore{ifinfo}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifnottex{\doignore{ifnottex}} +\def\html{\doignore{html}} +\def\menu{\doignore{menu}} +\def\direntry{\doignore{direntry}} + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory = \comment + +% Ignore text until a line `@end #1'. +% +\def\doignore#1{\begingroup + % Don't complain about control sequences we have declared \outer. + \ignoresections + % + % Define a command to swallow text until we reach `@end #1'. + % This @ is a catcode 12 token (that is the normal catcode of @ in + % this texinfo.tex file). We change the catcode of @ below to match. + \long\def\doignoretext##1@end #1{\enddoignore}% + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \catcode32 = 10 + % + % Ignore braces, too, so mismatched braces don't cause trouble. + \catcode`\{ = 9 + \catcode`\} = 9 + % + % We must not have @c interpreted as a control sequence. + \catcode`\@ = 12 + % + % Make the letter c a comment character so that the rest of the line + % will be ignored. This way, the document can have (for example) + % @c @end ifinfo + % and the @end ifinfo will be properly ignored. + % (We've just changed @ to catcode 12.) + \catcode`\c = 14 + % + % And now expand that command. + \doignoretext +} + +% What we do to finish off ignored text. +% +\def\enddoignore{\endgroup\ignorespaces}% + +\newif\ifwarnedobs\warnedobsfalse +\def\obstexwarn{% + \ifwarnedobs\relax\else + % We need to warn folks that they may have trouble with TeX 3.0. + % This uses \immediate\write16 rather than \message to get newlines. + \immediate\write16{} + \immediate\write16{WARNING: for users of Unix TeX 3.0!} + \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).} + \immediate\write16{If you are running another version of TeX, relax.} + \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} + \immediate\write16{ Then upgrade your TeX installation if you can.} + \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)} + \immediate\write16{If you are stuck with version 3.0, run the} + \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} + \immediate\write16{ to use a workaround.} + \immediate\write16{} + \global\warnedobstrue + \fi +} + +% **In TeX 3.0, setting text in \nullfont hangs tex. For a +% workaround (which requires the file ``dummy.tfm'' to be installed), +% uncomment the following line: +%%%%%\font\nullfont=dummy\let\obstexwarn=\relax + +% Ignore text, except that we keep track of conditional commands for +% purposes of nesting, up to an `@end #1' command. +% +\def\nestedignore#1{% + \obstexwarn + % We must actually expand the ignored text to look for the @end + % command, so that nested ignore constructs work. Thus, we put the + % text into a \vbox and then do nothing with the result. To minimize + % the change of memory overflow, we follow the approach outlined on + % page 401 of the TeXbook: make the current font be a dummy font. + % + \setbox0 = \vbox\bgroup + % Don't complain about control sequences we have declared \outer. + \ignoresections + % + % Define `@end #1' to end the box, which will in turn undefine the + % @end command again. + \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}% + % + % We are going to be parsing Texinfo commands. Most cause no + % trouble when they are used incorrectly, but some commands do + % complicated argument parsing or otherwise get confused, so we + % undefine them. + % + % We can't do anything about stray @-signs, unfortunately; + % they'll produce `undefined control sequence' errors. + \ignoremorecommands + % + % Set the current font to be \nullfont, a TeX primitive, and define + % all the font commands to also use \nullfont. We don't use + % dummy.tfm, as suggested in the TeXbook, because not all sites + % might have that installed. Therefore, math mode will still + % produce output, but that should be an extremely small amount of + % stuff compared to the main input. + % + \nullfont + \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont + \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont + \let\tensf=\nullfont + % Similarly for index fonts (mostly for their use in smallexample). + \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont + \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont + \let\smallsf=\nullfont + % + % Don't complain when characters are missing from the fonts. + \tracinglostchars = 0 + % + % Don't bother to do space factor calculations. + \frenchspacing + % + % Don't report underfull hboxes. + \hbadness = 10000 + % + % Do minimal line-breaking. + \pretolerance = 10000 + % + % Do not execute instructions in @tex + \def\tex{\doignore{tex}}% + % Do not execute macro definitions. + % `c' is a comment character, so the word `macro' will get cut off. + \def\macro{\doignore{ma}}% +} + +% @set VAR sets the variable VAR to an empty value. +% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. % -% For those who want to use more than one line's worth of words in -% the preamble, break the line within one argument and it -% will parse correctly, i.e., +% 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. Make sure the catcode of space is correct to avoid +% losing inside @example, for instance. % -% @multitable {Column 1 template} {Column 2 template} {Column 3 -% template} -% Not: -% @multitable {Column 1 template} {Column 2 template} -% {Column 3 template} - -% 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, @multitable or @end multitable do not need to be on their -% own lines, but it will not hurt if they are. - -% Sample multitable: +\def\set{\begingroup\catcode` =10 + \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. + \parsearg\setxxx} +\def\setxxx#1{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + \def\temp{#2}% + \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty + \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. + \fi + \endgroup +} +% Can't use \xdef to pre-expand #2 and save some time, since \temp or +% \next or other control sequences that we've defined might get us into +% an infinite loop. Consider `@set foo @cite{bar}'. +\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} -% @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. +% @clear VAR clears (i.e., unsets) the variable VAR. % -% 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. - -%%%% -% Dimensions - -\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 - -%% 2/1/96, to allow fractions to be given with more than one digit. -\def\pickupwholefraction#1 {\global\advance\colcount by1 % -\expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}% -\setuptable} +\def\clear{\parsearg\clearxxx} +\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax} -\newcount\colcount -\def\setuptable#1{\def\firstarg{#1}% -\ifx\firstarg\xendsetuptable\let\go\relax% -\else - \ifx\firstarg\xcolumnfractions\global\setpercenttrue% +% @value{foo} gets the text saved in variable foo. +{ + \catcode`\_ = \active + % + % We might end up with active _ or - characters in the argument if + % we're called from @code, as @code{@value{foo-bar_}}. So \let any + % such active characters to their normal equivalents. + \gdef\value{\begingroup + \catcode`\-=12 \catcode`\_=12 + \indexbreaks \let_\normalunderscore + \valuexxx} +} +\def\valuexxx#1{\expandablevalue{#1}\endgroup} + +% We have this subroutine so that we can handle at least some @value's +% properly in indexes (we \let\value to this in \indexdummies). Ones +% whose names contain - or _ still won't work, but we can't do anything +% about that. The command has to be fully expandable, 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'']}% \else - \ifsetpercent - \let\go\pickupwholefraction % In this case arg of setuptable - % is the decimal point before the - % number given in percent of hsize. - % We don't need this so we don't use it. - \else - \global\advance\colcount by1 - \setbox0=\hbox{#1 }% 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\else\let\go\setuptable\fi% -\fi\go} - -%%%% -% multitable syntax -\def\tab{&\hskip1sp\relax} % 2/2/96 - % tiny skip here makes sure this column space is - % maintained, even if it is never used. - - -%%%% -% @multitable ... @end multitable definitions: + \csname SET#1\endcsname + \fi +} -\def\multitable{\parsearg\dotable} +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +\def\ifset{\parsearg\ifsetxxx} +\def\ifsetxxx #1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \expandafter\ifsetfail + \else + \expandafter\ifsetsucceed + \fi +} +\def\ifsetsucceed{\conditionalsucceed{ifset}} +\def\ifsetfail{\nestedignore{ifset}} +\defineunmatchedend{ifset} -\def\dotable#1{\bgroup -\let\item\cr -\tolerance=9500 -\hbadness=9500 -\setmultitablespacing -\parskip=\multitableparskip -\parindent=\multitableparindent -\overfullrule=0pt -\global\colcount=0\relax% -\def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}% - % To parse everything between @multitable and @item : -\setuptable#1 \endsetuptable - % Need to reset this to 0 after \setuptable. -\global\colcount=0\relax% - % - % 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\relax% -\multistrut\vtop{\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 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. -\ifnum\colcount=1 -\else - \ifsetpercent +% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been +% defined with @set, or has been undefined with @clear. +% +\def\ifclear{\parsearg\ifclearxxx} +\def\ifclearxxx #1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \expandafter\ifclearsucceed \else - % If user has set preamble in terms of percent of \hsize - % we will advance \hsize by \multitablecolspace - \advance\hsize by \multitablecolspace + \expandafter\ifclearfail \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 - % \everycr will reset column counter, \colcount, at the end of - % each line. Every column entry will cause \colcount to advance by one. - % The table preamble - % looks at the current \colcount to find the correct column width. -\global\everycr{\noalign{% -% \filbreak%% keeps underfull box messages off when table breaks over pages. -% 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. -\global\colcount=0\relax}} } +\def\ifclearsucceed{\conditionalsucceed{ifclear}} +\def\ifclearfail{\nestedignore{ifclear}} +\defineunmatchedend{ifclear} -\def\setmultitablespacing{% test to see if user has set \multitablelinespace. -% If so, do nothing. If not, give it an appropriate dimension based on -% current baselineskip. -\ifdim\multitablelinespace=0pt -%% strut to put in table in case some entry doesn't have descenders, -%% to keep lines equally spaced -\let\multistrut = \strut -%% 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. -\else -\gdef\multistrut{\vrule height\multitablelinespace depth\dp0 -width0pt\relax} \fi -\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} +% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text +% following, through the first @end iftex (etc.). Make `@end iftex' +% (etc.) valid only after an @iftex. +% +\def\iftex{\conditionalsucceed{iftex}} +\def\ifnothtml{\conditionalsucceed{ifnothtml}} +\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} +\defineunmatchedend{iftex} +\defineunmatchedend{ifnothtml} +\defineunmatchedend{ifnotinfo} + +% We can't just want to start a group at @iftex (for example) and end it +% at @end iftex, since then @set commands inside the conditional have no +% effect (they'd get reverted at the end of the group). So we must +% define \Eiftex to redefine itself to be its previous value. (We can't +% just define it to fail again with an ``unmatched end'' error, since +% the @ifset might be nested.) +% +\def\conditionalsucceed#1{% + \edef\temp{% + % Remember the current value of \E#1. + \let\nece{prevE#1} = \nece{E#1}% + % + % At the `@end #1', redefine \E#1 to be its previous value. + \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}% + }% + \temp +} + +% We need to expand lots of \csname's, but we don't want to expand the +% control sequences after we've constructed them. +% +\def\nece#1{\expandafter\noexpand\csname#1\endcsname} + +% @defininfoenclose. +\let\definfoenclose=\comment \message{indexing,} @@ -2221,12 +2576,14 @@ width0pt\relax} \fi % 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{ -\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file -\openout \csname#1indfile\endcsname \jobname.#1 % Open the file -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex -\noexpand\doindex {#1}} +% +\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} @@ -2235,31 +2592,37 @@ width0pt\relax} \fi % Define @defcodeindex, like @defindex except put all entries in @code. -\def\newcodeindex #1{ -\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file -\openout \csname#1indfile\endcsname \jobname.#1 % Open the file -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex -\noexpand\docodeindex {#1}} +\def\newcodeindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 + \fi + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}} } \def\defcodeindex{\parsearg\newcodeindex} % @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. -\def\synindex #1 #2 {% -\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname -\expandafter\let\csname#1indfile\endcsname=\synindexfoo -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex -\noexpand\doindex {#2}}% +% The \closeout helps reduce unnecessary open files; the limit on the +% Acorn RISC OS is a mere 16 files. +\def\synindex#1 #2 {% + \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname + \expandafter\closeout\csname#1indfile\endcsname + \expandafter\let\csname#1indfile\endcsname=\synindexfoo + \expandafter\xdef\csname#1index\endcsname{% define \xxxindex + \noexpand\doindex{#2}}% } % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. -\def\syncodeindex #1 #2 {% -\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname -\expandafter\let\csname#1indfile\endcsname=\synindexfoo -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex -\noexpand\docodeindex {#2}}% +\def\syncodeindex#1 #2 {% + \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname + \expandafter\closeout\csname#1indfile\endcsname + \expandafter\let\csname#1indfile\endcsname=\synindexfoo + \expandafter\xdef\csname#1index\endcsname{% define \xxxindex + \noexpand\docodeindex{#2}}% } % Define \doindex, the driver for all \fooindex macros. @@ -2280,6 +2643,7 @@ width0pt\relax} \fi \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} \def\indexdummies{% +\def\ { }% % Take care of the plain tex accent commands. \def\"{\realbackslash "}% \def\`{\realbackslash `}% @@ -2309,8 +2673,11 @@ width0pt\relax} \fi % (Must be a way to avoid doing expansion at all, and thus not have to % laboriously list every single command here.) \def\@{@}% will be @@ when we switch to @ as escape char. -%\let\{ = \lbracecmd -%\let\} = \rbracecmd +% 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 \def\_{{\realbackslash _}}% \def\w{\realbackslash w }% \def\bf{\realbackslash bf }% @@ -2321,7 +2688,6 @@ width0pt\relax} \fi \def\gtr{\realbackslash gtr}% \def\less{\realbackslash less}% \def\hat{\realbackslash hat}% -%\def\char{\realbackslash char}% \def\TeX{\realbackslash TeX}% \def\dots{\realbackslash dots }% \def\result{\realbackslash result}% @@ -2333,6 +2699,11 @@ width0pt\relax} \fi \def\copyright{\realbackslash copyright}% \def\tclose##1{\realbackslash tclose {##1}}% \def\code##1{\realbackslash code {##1}}% +\def\uref##1{\realbackslash uref {##1}}% +\def\url##1{\realbackslash url {##1}}% +\def\env##1{\realbackslash env {##1}}% +\def\command##1{\realbackslash command {##1}}% +\def\option##1{\realbackslash option {##1}}% \def\dotless##1{\realbackslash dotless {##1}}% \def\samp##1{\realbackslash samp {##1}}% \def\,##1{\realbackslash ,{##1}}% @@ -2348,8 +2719,16 @@ width0pt\relax} \fi \def\kbd##1{\realbackslash kbd {##1}}% \def\dfn##1{\realbackslash dfn {##1}}% \def\emph##1{\realbackslash emph {##1}}% -\def\value##1{\realbackslash value {##1}}% +\def\acronym##1{\realbackslash acronym {##1}}% +% +% Handle some cases of @value -- where the variable name does not +% contain - or _, and the value does not contain any +% (non-fully-expandable) commands. +\let\value = \expandablevalue +% \unsepspaces +% Turn off macro expansion +\turnoffmacros } % If an index command is used in an @example environment, any spaces @@ -2406,6 +2785,12 @@ width0pt\relax} \fi %\let\tt=\indexdummyfont \let\tclose=\indexdummyfont \let\code=\indexdummyfont +\let\url=\indexdummyfont +\let\uref=\indexdummyfont +\let\env=\indexdummyfont +\let\acronym=\indexdummyfont +\let\command=\indexdummyfont +\let\option=\indexdummyfont \let\file=\indexdummyfont \let\samp=\indexdummyfont \let\kbd=\indexdummyfont @@ -2421,14 +2806,24 @@ width0pt\relax} \fi % so we do not become unable to do a definition. {\catcode`\@=0 \catcode`\\=\other -@gdef@realbackslash{\}} + @gdef@realbackslash{\}} \let\indexbackslash=0 %overridden during \printindex. +\let\SETmarginindex=\relax % put index entries in margin (undocumented)? + +% For \ifx comparisons. +\def\emptymacro{\empty} -\let\SETmarginindex=\relax %initialize! -% workhorse for all \fooindexes -% #1 is name of index, #2 is stuff to put there -\def\doind #1#2{% +% Most index entries go through here, but \dosubind is the general case. +% +\def\doind#1#2{\dosubind{#1}{#2}\empty} + +% 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 defuns, which call us directly. +% +\def\dosubind#1#2#3{% % Put the index entry in the margin if desired. \ifx\SETmarginindex\relax\else \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% @@ -2439,48 +2834,75 @@ width0pt\relax} \fi \indexdummies % Must do this here, since \bf, etc expand at this stage \escapechar=`\\ {% - \let\folio=0% We will expand all macros now EXCEPT \folio. + \let\folio = 0% We will expand all macros now EXCEPT \folio. \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now % so it will be output as is; and it will print as backslash. % - % First process the index-string with all font commands turned off - % to get the string to sort by. - {\indexnofonts \xdef\indexsorttmp{#2}}% + \def\thirdarg{#3}% + % + % If third arg is present, precede it with space in sort key. + \ifx\thirdarg\emptymacro + \let\subentry = \empty + \else + \def\subentry{ #3}% + \fi + % + % First process the index entry with all font commands turned + % off to get the string to sort by. + {\indexnofonts \xdef\indexsorttmp{#2\subentry}}% % - % Now produce the complete index entry, with both the sort key and the - % original text, including any font commands. + % Now the real index entry with the fonts. \toks0 = {#2}% + % + % If third (subentry) arg is present, add it to the index + % string. And include a space. + \ifx\thirdarg\emptymacro \else + \toks0 = \expandafter{\the\toks0 \space #3}% + \fi + % + % 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, texindex reduces to + % two when writing the .??s sorted result. \edef\temp{% \write\csname#1indfile\endcsname{% \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}% }% - \temp + % + % 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 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. + % + \iflinks + \ifvmode + \skip0 = \lastskip + \ifdim\lastskip = 0pt \else \nobreak\vskip-\lastskip \fi + \fi + % + \temp % do the write + % + % + \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi + \fi }% }% \penalty\count255 }% } -\def\dosubind #1#2#3{% -{\count10=\lastpenalty % -{\indexdummies % Must do this here, since \bf, etc expand at this stage -\escapechar=`\\% -{\let\folio=0% -\def\rawbackslashxx{\indexbackslash}% -% -% Now process the index-string once, with all font commands turned off, -% to get the string to sort the index by. -{\indexnofonts -\xdef\temp1{#2 #3}% -}% -% Now produce the complete index entry. We process the index-string again, -% this time with font commands expanded, to get what to print in the index. -\edef\temp{% -\write \csname#1indfile\endcsname{% -\realbackslash entry {\temp1}{\folio}{#2}{#3}}}% -\temp }% -}\penalty\count10}} - % The index entry written in the file actually looks like % \entry {sortstring}{page}{topic} % or @@ -2520,18 +2942,23 @@ width0pt\relax} \fi \def\doprintindex#1{\begingroup \dobreak \chapheadingskip{10000}% % - \indexfonts \rm + \smallfonts \rm \tolerance = 9500 \indexbreaks % % 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. - (Index is nonexistent) + \putwordIndexNonexistent \else % % If the index file exists but is empty, then \openin leaves \ifeof @@ -2539,14 +2966,13 @@ width0pt\relax} \fi % it can discover if there is anything in it. \read 1 to \temp \ifeof 1 - (Index is empty) + \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{\rawbackslashxx}% \catcode`\\ = 0 - \catcode`\@ = 11 \escapechar = `\\ \begindoublecolumns \input \jobname.#1s @@ -2559,21 +2985,35 @@ width0pt\relax} \fi % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. -% Same as \bigskipamount except no shrink. -% \balancecolumns gets confused if there is any shrink. -\newskip\initialskipamount \initialskipamount 12pt plus4pt - -\def\initial #1{% -{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt -\ifdim\lastskip<\initialskipamount -\removelastskip \penalty-200 \vskip \initialskipamount\fi -\line{\secbf#1\hfill}\kern 2pt\penalty10000}} +\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. + \penalty -300 + % + % 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}% + \vskip .33\baselineskip plus .1\baselineskip + % + % Do our best not to break after the initial. + \nobreak +}} % This typesets a paragraph consisting of #1, dot leaders, and then #2 % flush to the right margin. It is used for index and table of contents % entries. The paragraph is indented by \leftskip. % -\def\entry #1#2{\begingroup +\def\entry#1#2{\begingroup % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. @@ -2596,12 +3036,15 @@ width0pt\relax} \fi % % \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 + \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 + % % Start a ``paragraph'' for the index entry so the line breaking % parameters we've set above will have an effect. \noindent @@ -2626,7 +3069,11 @@ width0pt\relax} \fi % The `\ ' here is removed by the implicit \unskip that TeX does as % part of (the primitive) \par. Without it, a spurious underfull % \hbox ensues. - \ #2% The page number ends the paragraph. + \ifpdf + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \else + \ #2% The page number ends the paragraph. + \fi \fi% \par \endgroup} @@ -2655,24 +3102,26 @@ width0pt\relax} \fi \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. - \output = {\global\setbox\partialpage = \vbox{% - % + \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 must prevent the second \partialpage from - % simply overwriting the first, causing us to lose the page. - % This will preserve it until a real output routine can ship it - % out. Generally, \partialpage will be empty when this runs and - % this will be a no-op. - \unvbox\partialpage + % 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 % - % Unvbox the main output page. - \unvbox255 - \kern-\topskip \kern\baselineskip - }}% - \eject + \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}% @@ -2700,14 +3149,21 @@ width0pt\relax} \fi % % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) + \advance\vsize by -\ht\partialpage \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@=\pageheight \advance\dimen@ by-\ht\partialpage + \dimen@ = \vsize + \divide\dimen@ by 2 + % % box0 will be the left-hand column, box2 the right. \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ \onepageout\pagesofar @@ -2716,42 +3172,67 @@ width0pt\relax} \fi } \def\pagesofar{% % Re-output the contents of the output page -- any previous material, - % followed by the two boxes we just split. + % followed by the two boxes we just split, in box0 and box2. \unvbox\partialpage + % \hsize = \doublecolumnhsize - \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% + \wd0=\hsize \wd2=\hsize + \hbox to\pagewidth{\box0\hfil\box2}% } \def\enddoublecolumns{% - \output = {\balancecolumns}\eject % split what we have + \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 % - % Back to normal single-column typesetting, but take account of the - % fact that we just accumulated some stuff on the output page. + % \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 } \def\balancecolumns{% % Called at the end of the double column material. - \setbox0 = \vbox{\unvbox255}% + \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 + \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@ by1pt - \repeat}% + {% + \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,} -% Define chapters, sections, etc. +% Chapters, sections, etc. \newcount\chapno \newcount\secno \secno=0 @@ -2760,58 +3241,48 @@ width0pt\relax} \fi % This counter is funny since it counts through charcodes of letters A, B, ... \newcount\appendixno \appendixno = `\@ -\def\appendixletter{\char\the\appendixno} - -\newwrite\contentsfile -% This is called from \setfilename. -\def\opencontents{\openout\contentsfile = \jobname.toc } +% \def\appendixletter{\char\the\appendixno} +% We do the following 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 this as the name of the chapter. -% page headings and footings can use it. @section does likewise - -\def\thischapter{} \def\thissection{} -\def\seccheck#1{\ifnum \pageno<0 - \errmessage{@#1 not allowed after generating table of contents}% -\fi} - -\def\chapternofonts{% - \let\rawbackslash=\relax - \let\frenchspacing=\relax - \def\result{\realbackslash result}% - \def\equiv{\realbackslash equiv}% - \def\expansion{\realbackslash expansion}% - \def\print{\realbackslash print}% - \def\TeX{\realbackslash TeX}% - \def\dots{\realbackslash dots}% - \def\result{\realbackslash result}% - \def\equiv{\realbackslash equiv}% - \def\expansion{\realbackslash expansion}% - \def\print{\realbackslash print}% - \def\error{\realbackslash error}% - \def\point{\realbackslash point}% - \def\copyright{\realbackslash copyright}% - \def\tt{\realbackslash tt}% - \def\bf{\realbackslash bf}% - \def\w{\realbackslash w}% - \def\less{\realbackslash less}% - \def\gtr{\realbackslash gtr}% - \def\hat{\realbackslash hat}% - \def\char{\realbackslash char}% - \def\tclose##1{\realbackslash tclose{##1}}% - \def\code##1{\realbackslash code{##1}}% - \def\samp##1{\realbackslash samp{##1}}% - \def\r##1{\realbackslash r{##1}}% - \def\b##1{\realbackslash b{##1}}% - \def\key##1{\realbackslash key{##1}}% - \def\file##1{\realbackslash file{##1}}% - \def\kbd##1{\realbackslash kbd{##1}}% - % These are redefined because @smartitalic wouldn't work inside xdef. - \def\i##1{\realbackslash i{##1}}% - \def\cite##1{\realbackslash cite{##1}}% - \def\var##1{\realbackslash var{##1}}% - \def\emph##1{\realbackslash emph{##1}}% - \def\dfn##1{\realbackslash dfn{##1}}% -} +% page headings and footings can use it. @section does likewise. +\def\thischapter{} +\def\thissection{} \newcount\absseclevel % used to calculate proper heading level \newcount\secbase\secbase=0 % @raise/lowersections modify this count @@ -2883,59 +3354,59 @@ width0pt\relax} \fi \fi } - +% @chapter, @appendix, @unnumbered. \def\thischaptername{No Chapter Title} \outer\def\chapter{\parsearg\chapteryyy} \def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz -\def\chapterzzz #1{\seccheck{chapter}% +\def\chapterzzz #1{% \secno=0 \subsecno=0 \subsubsecno=0 -\global\advance \chapno by 1 \message{\putwordChapter \the\chapno}% +\global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}% \chapmacro {#1}{\the\chapno}% \gdef\thissection{#1}% \gdef\thischaptername{#1}% % We don't substitute the actual chapter name into \thischapter % because we don't want its macros evaluated now. \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% -{\chapternofonts% \toks0 = {#1}% -\edef\temp{{\realbackslash chapentry{\the\toks0}{\the\chapno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\donoderef % +\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% + {\the\chapno}}}% +\temp +\donoderef \global\let\section = \numberedsec \global\let\subsection = \numberedsubsec \global\let\subsubsection = \numberedsubsubsec -}} +} \outer\def\appendix{\parsearg\appendixyyy} \def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz -\def\appendixzzz #1{\seccheck{appendix}% +\def\appendixzzz #1{% \secno=0 \subsecno=0 \subsubsecno=0 -\global\advance \appendixno by 1 \message{Appendix \appendixletter}% +\global\advance \appendixno by 1 +\message{\putwordAppendix\space \appendixletter}% \chapmacro {#1}{\putwordAppendix{} \appendixletter}% \gdef\thissection{#1}% \gdef\thischaptername{#1}% \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% -{\chapternofonts% \toks0 = {#1}% -\edef\temp{{\realbackslash chapentry{\the\toks0}% - {\putwordAppendix{} \appendixletter}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\appendixnoderef % +\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% + {\putwordAppendix{} \appendixletter}}}% +\temp +\appendixnoderef \global\let\section = \appendixsec \global\let\subsection = \appendixsubsec \global\let\subsubsection = \appendixsubsubsec -}} +} % @centerchap is like @unnumbered, but the heading is centered. \outer\def\centerchap{\parsearg\centerchapyyy} \def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}} +% @top is like @unnumbered. \outer\def\top{\parsearg\unnumberedyyy} + \outer\def\unnumbered{\parsearg\unnumberedyyy} \def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz -\def\unnumberedzzz #1{\seccheck{unnumbered}% +\def\unnumberedzzz #1{% \secno=0 \subsecno=0 \subsubsecno=0 % % This used to be simply \message{#1}, but TeX fully expands the @@ -2947,155 +3418,139 @@ width0pt\relax} \fi % 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 to achieve this: TeX expands \the only once, -% simply yielding the contents of the . +% simply yielding the contents of . (We also do this for +% the toc entries.) \toks0 = {#1}\message{(\the\toks0)}% % \unnumbchapmacro {#1}% \gdef\thischapter{#1}\gdef\thissection{#1}% -{\chapternofonts% \toks0 = {#1}% -\edef\temp{{\realbackslash unnumbchapentry{\the\toks0}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\unnumbnoderef % +\edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}}}% +\temp +\unnumbnoderef \global\let\section = \unnumberedsec \global\let\subsection = \unnumberedsubsec \global\let\subsubsection = \unnumberedsubsubsec -}} +} +% Sections. \outer\def\numberedsec{\parsearg\secyyy} \def\secyyy #1{\numhead1{#1}} % normally calls seczzz -\def\seczzz #1{\seccheck{section}% +\def\seczzz #1{% \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% -{\chapternofonts% \toks0 = {#1}% -\edef\temp{{\realbackslash secentry % -{\the\toks0}{\the\chapno}{\the\secno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\donoderef % -\penalty 10000 % -}} +\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% + {\the\chapno}{\the\secno}}}% +\temp +\donoderef +\nobreak +} \outer\def\appendixsection{\parsearg\appendixsecyyy} \outer\def\appendixsec{\parsearg\appendixsecyyy} \def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz -\def\appendixsectionzzz #1{\seccheck{appendixsection}% +\def\appendixsectionzzz #1{% \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% -{\chapternofonts% \toks0 = {#1}% -\edef\temp{{\realbackslash secentry % -{\the\toks0}{\appendixletter}{\the\secno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\appendixnoderef % -\penalty 10000 % -}} +\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% + {\appendixletter}{\the\secno}}}% +\temp +\appendixnoderef +\nobreak +} \outer\def\unnumberedsec{\parsearg\unnumberedsecyyy} \def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz -\def\unnumberedseczzz #1{\seccheck{unnumberedsec}% +\def\unnumberedseczzz #1{% \plainsecheading {#1}\gdef\thissection{#1}% -{\chapternofonts% \toks0 = {#1}% -\edef\temp{{\realbackslash unnumbsecentry{\the\toks0}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\unnumbnoderef % -\penalty 10000 % -}} +\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}% +\temp +\unnumbnoderef +\nobreak +} +% Subsections. \outer\def\numberedsubsec{\parsearg\numberedsubsecyyy} \def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz -\def\numberedsubseczzz #1{\seccheck{subsection}% +\def\numberedsubseczzz #1{% \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% -{\chapternofonts% \toks0 = {#1}% -\edef\temp{{\realbackslash subsecentry % -{\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\donoderef % -\penalty 10000 % -}} +\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% + {\the\chapno}{\the\secno}{\the\subsecno}}}% +\temp +\donoderef +\nobreak +} \outer\def\appendixsubsec{\parsearg\appendixsubsecyyy} \def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz -\def\appendixsubseczzz #1{\seccheck{appendixsubsec}% +\def\appendixsubseczzz #1{% \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% -{\chapternofonts% \toks0 = {#1}% -\edef\temp{{\realbackslash subsecentry % -{\the\toks0}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\appendixnoderef % -\penalty 10000 % -}} +\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% + {\appendixletter}{\the\secno}{\the\subsecno}}}% +\temp +\appendixnoderef +\nobreak +} \outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} \def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz -\def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}% +\def\unnumberedsubseczzz #1{% \plainsubsecheading {#1}\gdef\thissection{#1}% -{\chapternofonts% \toks0 = {#1}% -\edef\temp{{\realbackslash unnumbsubsecentry{\the\toks0}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\unnumbnoderef % -\penalty 10000 % -}} +\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% + {\the\toks0}}}% +\temp +\unnumbnoderef +\nobreak +} +% Subsubsections. \outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy} \def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz -\def\numberedsubsubseczzz #1{\seccheck{subsubsection}% +\def\numberedsubsubseczzz #1{% \gdef\thissection{#1}\global\advance \subsubsecno by 1 % \subsubsecheading {#1} {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% -{\chapternofonts% \toks0 = {#1}% -\edef\temp{{\realbackslash subsubsecentry{\the\toks0} - {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno} - {\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\donoderef % -\penalty 10000 % -}} +\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% + {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% +\temp +\donoderef +\nobreak +} \outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy} \def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz -\def\appendixsubsubseczzz #1{\seccheck{appendixsubsubsec}% +\def\appendixsubsubseczzz #1{% \gdef\thissection{#1}\global\advance \subsubsecno by 1 % \subsubsecheading {#1} {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% -{\chapternofonts% \toks0 = {#1}% -\edef\temp{{\realbackslash subsubsecentry{\the\toks0}% - {\appendixletter} - {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\appendixnoderef % -\penalty 10000 % -}} +\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% + {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% +\temp +\appendixnoderef +\nobreak +} \outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} \def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz -\def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}% +\def\unnumberedsubsubseczzz #1{% \plainsubsubsecheading {#1}\gdef\thissection{#1}% -{\chapternofonts% \toks0 = {#1}% -\edef\temp{{\realbackslash unnumbsubsubsecentry{\the\toks0}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\unnumbnoderef % -\penalty 10000 % -}} +\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% + {\the\toks0}}}% +\temp +\unnumbnoderef +\nobreak +} % These are variants which are not "outer", so they can appear in @ifinfo. % Actually, they should now be obsolete; ordinary section commands should work. @@ -3124,8 +3579,7 @@ width0pt\relax} \fi % Define @majorheading, @heading and @subheading -% NOTE on use of \vbox for chapter headings, section headings, and -% such: +% 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 @@ -3172,12 +3626,12 @@ width0pt\relax} \fi \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} -\def\CHAPPAGoff{ +\def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak \global\let\pagealignmacro=\chappager} -\def\CHAPPAGon{ +\def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager \global\let\pagealignmacro=\chappager @@ -3231,7 +3685,7 @@ width0pt\relax} \fi \def\unnchfopen #1{% \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 10000 % + \rm #1\hfill}}\bigskip \par\nobreak } \def\chfopen #1#2{\chapoddpage {\chapfonts @@ -3242,7 +3696,7 @@ width0pt\relax} \fi \def\centerchfopen #1{% \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt - \hfill {\rm #1}\hfill}}\bigskip \par\penalty 10000 % + \hfill {\rm #1}\hfill}}\bigskip \par\nobreak } \def\CHAPFopen{ @@ -3295,24 +3749,45 @@ width0pt\relax} \fi } -\message{toc printing,} -% Finish up the main text and prepare to read what we've written -% to \contentsfile. +\message{toc,} +% Table of contents. +\newwrite\tocfile + +% Write an entry to the toc file, opening it if necessary. +% Called from @chapter, etc. We supply {\folio} at the end of the +% argument, which will end up as the last argument to the \...entry macro. +% +% We open the .toc file here instead of at @setfilename or any other +% given time so that @contents can be put in the document anywhere. +% +\newif\iftocfileopened +\def\writetocentry#1{% + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + \iflinks \write\tocfile{#1{\folio}}\fi +} \newskip\contentsrightmargin \contentsrightmargin=1in +\newcount\savepageno +\newcount\lastnegativepageno \lastnegativepageno = -1 + +% Finish up the main text and 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 \contentsalignmacro - \immediate\closeout \contentsfile - \ifnum \pageno>0 - \pageno = -1 % Request roman numbered pages. - \fi + \immediate\closeout\tocfile + % % Don't need to put `Contents' or `Short Contents' in the headline. % It is abundantly clear what they are. \unnumbchapmacro{#1}\def\thischapter{}% + \savepageno = \pageno \begingroup % Set up to handle contents files properly. \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 % We can't do this, because then an actual ^ in a section @@ -3320,20 +3795,31 @@ width0pt\relax} \fi %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi \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 \pageno = \lastnegativepageno \fi } % Normal (long) toc. -\outer\def\contents{% - \startcontents{\putwordTableofContents}% - \input \jobname.toc +\def\contents{% + \startcontents{\putwordTOC}% + \openin 1 \jobname.toc + \ifeof 1 \else + \closein 1 + \input \jobname.toc + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \pdfmakeoutlines \endgroup - \vfill \eject + \lastnegativepageno = \pageno + \pageno = \savepageno } % And just the chapters. -\outer\def\summarycontents{% - \startcontents{\putwordShortContents}% +\def\summarycontents{% + \startcontents{\putwordShortTOC}% % \let\chapentry = \shortchapentry \let\unnumbchapentry = \shortunnumberedentry @@ -3349,12 +3835,23 @@ width0pt\relax} \fi \def\unnumbsubsecentry ##1##2{} \def\subsubsecentry ##1##2##3##4##5##6{} \def\unnumbsubsubsecentry ##1##2{} - \input \jobname.toc + \openin 1 \jobname.toc + \ifeof 1 \else + \closein 1 + \input \jobname.toc + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup - \vfill \eject + \lastnegativepageno = \pageno + \pageno = \savepageno } \let\shortcontents = \summarycontents +\ifpdf + \pdfcatalog{/PageMode /UseOutlines}% +\fi + % 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. @@ -3365,7 +3862,7 @@ width0pt\relax} \fi % See comments in \dochapentry re vbox and related settings \def\shortchapentry#1#2#3{% - \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno{#3}}% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% } % Typeset the label for a chapter or appendix for the short contents. @@ -3373,10 +3870,14 @@ width0pt\relax} \fi % We could simplify the code here by writing out an \appendixentry % command in the toc file for appendices, instead of using \chapentry % for both, but it doesn't seem worth it. -\setbox0 = \hbox{\shortcontrm \putwordAppendix } -\newdimen\shortappendixwidth \shortappendixwidth = \wd0 - +% +\newdimen\shortappendixwidth +% \def\shortchaplabel#1{% + % Compute width of word "Appendix", may change with language. + \setbox0 = \hbox{\shortcontrm \putwordAppendix}% + \shortappendixwidth = \wd0 + % % We typeset #1 in a box of constant width, regardless of the text of % #1, so the chapter titles will come out aligned. \setbox0 = \hbox{#1}% @@ -3391,7 +3892,7 @@ width0pt\relax} \fi } \def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} -\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno{#2}}} +\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} % Sections. \def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} @@ -3418,35 +3919,36 @@ width0pt\relax} \fi \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup \chapentryfonts - \tocentry{#1}{\dopageno{#2}}% + \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{#2}}% + \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent - \tocentry{#1}{\dopageno{#2}}% + \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent - \tocentry{#1}{\dopageno{#2}}% + \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} % Final typesetting of a toc entry; we use the same \entry macro as for % the index entries, but we want to suppress hyphenation here. (We % can't do that in the \entry macro, since index entries might consist % of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) -% -% \turnoffactive is for the sake of @" used for umlauts. \def\tocentry#1#2{\begingroup \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks - \entry{\turnoffactive #1}{\turnoffactive #2}% + % Do not use \turnoffactive in these arguments. Since the toc is + % typeset in cmr, so characters such as _ would come out wrong; we + % have to do the usual translation tricks. + \entry{#1}{#2}% \endgroup} % Space between chapter (or whatever) number and the title. @@ -3462,6 +3964,7 @@ width0pt\relax} \fi \message{environments,} +% @foo ... @end foo. % Since these characters are used in examples, it should be an even number of % \tt widths. Each \tt character is 1en, so two makes it 1em. @@ -3512,30 +4015,36 @@ width0pt\relax} \fi % But \@ or @@ will get a plain tex @ character. \def\tex{\begingroup -\catcode `\\=0 \catcode `\{=1 \catcode `\}=2 -\catcode `\$=3 \catcode `\&=4 \catcode `\#=6 -\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie -\catcode `\%=14 -\catcode 43=12 % plus -\catcode`\"=12 -\catcode`\==12 -\catcode`\|=12 -\catcode`\<=12 -\catcode`\>=12 -\escapechar=`\\ -% -\let\,=\ptexcomma -\let\{=\ptexlbrace -\let\}=\ptexrbrace -\let\.=\ptexdot -\let\*=\ptexstar -\let\dots=\ptexdots -\def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% -\def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% -\def\@{@}% -\let\bullet=\ptexbullet -\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext -% + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie + \catcode `\%=14 + \catcode 43=12 % plus + \catcode`\"=12 + \catcode`\==12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \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\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\*=\ptexstar + \let\t=\ptext + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% \let\Etex=\endgroup} % Define @lisp ... @endlisp. @@ -3580,8 +4089,8 @@ width0pt\relax} \fi % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins. \let\nonarrowing=\relax -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \cartouche: draw rectangle w/rounded corners around argument +% @cartouche ... @end cartouche: draw rectangle w/rounded corners around +% environment contents. \font\circle=lcircle10 \newdimen\circthick \newdimen\cartouter\newdimen\cartinner @@ -3608,9 +4117,9 @@ width0pt\relax} \fi \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip \cartouter=\hsize - \advance\cartouter by 18pt % allow for 3pt kerns on either + \advance\cartouter by 18.4pt % allow for 3pt kerns on either % side, and for 6pt waste from -% each corner char +% each corner char, and rule thickness \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % Flag to tell @lisp, etc., not to narrow margin. \let\nonarrowing=\comment @@ -3664,49 +4173,52 @@ width0pt\relax} \fi \fi } -% To ending an @example-like environment, we first end the paragraph -% (via \afterenvbreak's vertical glue), and then the group. That way we -% keep the zero \parskip that the environments set -- \parskip glue -% will be inserted at the beginning of the next paragraph in the -% document, after the environment. +% Define the \E... control sequence only if we are inside the particular +% environment, so the error checking in \end will work. +% +% To end an @example-like environment, we first end the paragraph (via +% \afterenvbreak's vertical glue), and then the group. That way we keep +% the zero \parskip that the environments set -- \parskip glue will be +% inserted at the beginning of the next paragraph in the document, after +% the environment. % -\def\nonfillfinish{\afterenvbreak\endgroup}% +\def\nonfillfinish{\afterenvbreak\endgroup} +% @lisp: indented, narrowed, typewriter font. \def\lisp{\begingroup \nonfillstart \let\Elisp = \nonfillfinish \tt - % Make @kbd do something special, if requested. - \let\kbdfont\kbdexamplefont - \rawbackslash % have \ input char produce \ char from current font - \gobble + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \gobble % eat return } -% Define the \E... control sequence only if we are inside the -% environment, so the error checking in \end will work. -% -% We must call \lisp last in the definition, since it reads the -% return following the @example (or whatever) command. -% +% @example: Same as @lisp. \def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp} -\def\smallexample{\begingroup \def\Esmallexample{\nonfillfinish\endgroup}\lisp} -\def\smalllisp{\begingroup \def\Esmalllisp{\nonfillfinish\endgroup}\lisp} -% @smallexample and @smalllisp. This is not used unless the @smallbook -% command is given. Originally contributed by Pavel@xerox. +% @small... is usually equivalent to the non-small (@smallbook +% redefines). We must call \example (or whatever) last in the +% definition, since it reads the return following the @example (or +% whatever) command. % +% This actually allows (for example) @end display inside an +% @smalldisplay. Too bad, but makeinfo will catch the error anyway. +% +\def\smalldisplay{\begingroup\def\Esmalldisplay{\nonfillfinish\endgroup}\display} +\def\smallexample{\begingroup\def\Esmallexample{\nonfillfinish\endgroup}\lisp} +\def\smallformat{\begingroup\def\Esmallformat{\nonfillfinish\endgroup}\format} +\def\smalllisp{\begingroup\def\Esmalllisp{\nonfillfinish\endgroup}\lisp} + +% Real @smallexample and @smalllisp (when @smallbook): use smaller fonts. +% Originally contributed by Pavel@xerox. \def\smalllispx{\begingroup - \nonfillstart - \let\Esmalllisp = \nonfillfinish - \let\Esmallexample = \nonfillfinish - % - % Smaller fonts for small examples. - \indexfonts \tt - \rawbackslash % make \ output the \ character from the current font (tt) - \gobble + \def\Esmalllisp{\nonfillfinish\endgroup}% + \def\Esmallexample{\nonfillfinish\endgroup}% + \smallfonts + \lisp } -% This is @display; same as @lisp except use roman font. +% @display: same as @lisp except keep current font. % \def\display{\begingroup \nonfillstart @@ -3714,7 +4226,15 @@ width0pt\relax} \fi \gobble } -% This is @format; same as @display except don't narrow margins. +% @smalldisplay (when @smallbook): @display plus smaller fonts. +% +\def\smalldisplayx{\begingroup + \def\Esmalldisplay{\nonfillfinish\endgroup}% + \smallfonts \rm + \display +} + +% @format: same as @display except don't narrow margins. % \def\format{\begingroup \let\nonarrowing = t @@ -3723,20 +4243,27 @@ width0pt\relax} \fi \gobble } -% @flushleft (same as @format) and @flushright. +% @smallformat (when @smallbook): @format plus smaller fonts. % -\def\flushleft{\begingroup - \let\nonarrowing = t - \nonfillstart - \let\Eflushleft = \nonfillfinish - \gobble +\def\smallformatx{\begingroup + \def\Esmallformat{\nonfillfinish\endgroup}% + \smallfonts \rm + \format } + +% @flushleft (same as @format). +% +\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format} + +% @flushright. +% \def\flushright{\begingroup \let\nonarrowing = t \nonfillstart \let\Eflushright = \nonfillfinish \advance\leftskip by 0pt plus 1fill - \gobble} + \gobble +} % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. @@ -3759,9 +4286,11 @@ width0pt\relax} \fi \fi } + \message{defuns,} -% Define formatter for defuns -% First, allow user to change definition object font (\df) internally +% @defun etc. + +% Allow user to change definition object font (\df) internally \def\setdeffont #1 {\csname DEF#1\endcsname} \newskip\defbodyindent \defbodyindent=.4in @@ -3815,10 +4344,16 @@ width0pt\relax} \fi %% contained text. This is especially needed for [ and ] \def\opnr{{\sf\char`\(}\global\advance\parencount by 1 } \def\clnr{{\sf\char`\)}\global\advance\parencount by -1 } -\def\ampnr{\&} +\let\ampnr = \& \def\lbrb{{\bf\char`\[}} \def\rbrb{{\bf\char`\]}} +% Active &'s sneak into the index arguments, so make sure it's defined. +{ + \catcode`& = 13 + \global\let& = \ampnr +} + % First, defname, which formats the header line itself. % #1 should be the function name. % #2 should be the type of definition, such as "Function". @@ -3828,20 +4363,18 @@ width0pt\relax} \fi % outside the @def... \dimen2=\leftskip \advance\dimen2 by -\defbodyindent -\dimen3=\rightskip -\advance\dimen3 by -\defbodyindent -\noindent % +\noindent \setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}% \dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line \dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations -\parshape 2 0in \dimen0 \defargsindent \dimen1 % +\parshape 2 0in \dimen0 \defargsindent \dimen1 % Now output arg 2 ("Function" or some such) % ending at \deftypemargin from the right margin, % but stuck inside a box of width 0 so it does not interfere with linebreaking {% Adjust \hsize to exclude the ambient margins, % so that \rightline will obey them. -\advance \hsize by -\dimen2 \advance \hsize by -\dimen3 -\rlap{\rightline{{\rm #2}\hskip \deftypemargin}}}% +\advance \hsize by -\dimen2 +\rlap{\rightline{{\rm #2}\hskip -1.25pc }}}% % Make all lines underfull and no complaints: \tolerance=10000 \hbadness=10000 \advance\leftskip by -\defbodyindent @@ -3862,23 +4395,62 @@ width0pt\relax} \fi \def#1{\endgraf\endgroup\medbreak}% \def#2{\begingroup\obeylines\activeparens\spacesplit#3}% \parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup % \catcode 61=\active % 61 is `=' \obeylines\activeparens\spacesplit#3} -\def\defmethparsebody #1#2#3#4 {\begingroup\inENV % +% #1 is the \E... control sequence to end the definition (which we define). +% #2 is the \...x control sequence for consecutive fns (which we define). +% #3 is the control sequence to call to resume processing. +% #4, delimited by the space, is the class name. +% +\def\defmethparsebody#1#2#3#4 {\begingroup\inENV % \medbreak % % Define the end token that this defining construct specifies % so that it will exit this group. \def#1{\endgraf\endgroup\medbreak}% \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% \parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines\activeparens\spacesplit{#3{#4}}} +% Used for @deftypemethod and @deftypeivar. +% #1 is the \E... control sequence to end the definition (which we define). +% #2 is the \...x control sequence for consecutive fns (which we define). +% #3 is the control sequence to call to resume processing. +% #4, delimited by a space, is the class name. +% #5 is the method's return type. +% +\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV + \medbreak + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}} + +% Used for @deftypeop. The change from \deftypemethparsebody is an +% extra argument at the beginning which is the `category', instead of it +% being the hardwired string `Method' or `Instance Variable'. We have +% to account for this both in the \...x definition and in parsing the +% input at hand. Thus also need a control sequence (passed as #5) for +% the \E... definition to assign the category name to. +% +\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV + \medbreak + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 ##2 ##3 {% + \def#4{##1}% + \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}} + \def\defopparsebody #1#2#3#4#5 {\begingroup\inENV % \medbreak % % Define the end token that this defining construct specifies @@ -3887,7 +4459,7 @@ width0pt\relax} \fi \def#2##1 ##2 {\def#4{##1}% \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}% \parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines\activeparens\spacesplit{#3{#5}}} @@ -3902,7 +4474,7 @@ width0pt\relax} \fi \def#1{\endgraf\endgroup\medbreak}% \def#2{\begingroup\obeylines\spacesplit#3}% \parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup % \catcode 61=\active % @@ -3919,7 +4491,7 @@ width0pt\relax} \fi \def#1{\endgraf\endgroup\medbreak}% \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% \parindent=0in - \advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent + \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines } @@ -3964,7 +4536,7 @@ width0pt\relax} \fi \def#2##1 ##2 {\def#4{##1}% \begingroup\obeylines\spacesplit{#3{##2}}}% \parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines\spacesplit{#3{#5}}} @@ -3988,16 +4560,17 @@ width0pt\relax} \fi % First, define the processing that is wanted for arguments of \defun % Use this to expand the args and terminate the paragraph they make up -\def\defunargs #1{\functionparens \sl +\def\defunargs#1{\functionparens \sl % Expand, preventing hyphenation at `-' chars. % Note that groups don't affect changes in \hyphenchar. -\hyphenchar\tensl=0 +% Set the font temporarily and use \font in case \setfont made \tensl a macro. +{\tensl\hyphenchar\font=0}% #1% -\hyphenchar\tensl=45 +{\tensl\hyphenchar\font=45}% \ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% \interlinepenalty=10000 \advance\rightskip by 0pt plus 1fil -\endgraf\penalty 10000\vskip -\parskip\penalty 10000% +\endgraf\nobreak\vskip -\parskip\nobreak } \def\deftypefunargs #1{% @@ -4008,7 +4581,7 @@ width0pt\relax} \fi \tclose{#1}% avoid \code because of side effects on active chars \interlinepenalty=10000 \advance\rightskip by 0pt plus 1fil -\endgraf\penalty 10000\vskip -\parskip\penalty 10000% +\endgraf\nobreak\vskip -\parskip\nobreak } % Do complete processing of one @defun or @defunx line already parsed. @@ -4027,7 +4600,7 @@ width0pt\relax} \fi \def\defun{\defparsebody\Edefun\defunx\defunheader} \def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{Function}% +\begingroup\defname {#1}{\putwordDeffunc}% \defunargs {#2}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } @@ -4041,7 +4614,7 @@ width0pt\relax} \fi % #1 is the data type, #2 the name, #3 the args. \def\deftypefunheaderx #1#2 #3\relax{% \doind {fn}{\code{#2}}% Make entry in function index -\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Function}% +\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}% \deftypefunargs {#3}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } @@ -4072,7 +4645,7 @@ width0pt\relax} \fi \def\defmac{\defparsebody\Edefmac\defmacx\defmacheader} \def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{Macro}% +\begingroup\defname {#1}{\putwordDefmac}% \defunargs {#2}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } @@ -4082,53 +4655,77 @@ width0pt\relax} \fi \def\defspec{\defparsebody\Edefspec\defspecx\defspecheader} \def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{Special Form}% +\begingroup\defname {#1}{\putwordDefspec}% \defunargs {#2}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } -% This definition is run if you use @defunx -% anywhere other than immediately after a @defun or @defunx. - -\def\deffnx #1 {\errmessage{@deffnx in invalid context}} -\def\defunx #1 {\errmessage{@defunx in invalid context}} -\def\defmacx #1 {\errmessage{@defmacx in invalid context}} -\def\defspecx #1 {\errmessage{@defspecx in invalid context}} -\def\deftypefnx #1 {\errmessage{@deftypefnx in invalid context}} -\def\deftypemethodx #1 {\errmessage{@deftypemethodx in invalid context}} -\def\deftypeunx #1 {\errmessage{@deftypeunx in invalid context}} - -% @defmethod, and so on - -% @defop {Funny Method} foo-class frobnicate argument - +% @defop CATEGORY CLASS OPERATION ARG... +% \def\defop #1 {\def\defoptype{#1}% \defopparsebody\Edefop\defopx\defopheader\defoptype} - -\def\defopheader #1#2#3{% -\dosubind {fn}{\code{#2}}{on #1}% Make entry in function index -\begingroup\defname {#2}{\defoptype{} on #1}% +% +\def\defopheader#1#2#3{% +\dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index +\begingroup\defname {#2}{\defoptype\ \putwordon\ #1}% \defunargs {#3}\endgroup % } -% @deftypemethod foo-class return-type foo-method args +% @deftypeop CATEGORY CLASS TYPE OPERATION ARG... +% +\def\deftypeop #1 {\def\deftypeopcategory{#1}% + \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader + \deftypeopcategory} +% +% #1 is the class name, #2 the data type, #3 the operation name, #4 the args. +\def\deftypeopheader#1#2#3#4{% + \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{\defheaderxcond#2\relax$$$#3} + {\deftypeopcategory\ \putwordon\ \code{#1}}% + \deftypefunargs{#4}% + \endgroup +} + +% @deftypemethod CLASS TYPE METHOD ARG... % \def\deftypemethod{% - \defmethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} + \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} % % #1 is the class name, #2 the data type, #3 the method name, #4 the args. \def\deftypemethodheader#1#2#3#4{% - \deftypefnheaderx{Method on #1}{#2}#3 #4\relax + \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}% + \deftypefunargs{#4}% + \endgroup } -% @defmethod == @defop Method +% @deftypeivar CLASS TYPE VARNAME +% +\def\deftypeivar{% + \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader} +% +% #1 is the class name, #2 the data type, #3 the variable name. +\def\deftypeivarheader#1#2#3{% + \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index + \begingroup + \defname{#3}{\putwordInstanceVariableof\ \code{#1}}% + \defvarargs{#3}% + \endgroup +} +% @defmethod == @defop Method +% \def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} - -\def\defmethodheader #1#2#3{% -\dosubind {fn}{\code{#2}}{on #1}% entry in function index -\begingroup\defname {#2}{Method on #1}% -\defunargs {#3}\endgroup % +% +% #1 is the class name, #2 the method name, #3 the args. +\def\defmethodheader#1#2#3{% + \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{#2}{\putwordMethodon\ \code{#1}}% + \defunargs{#3}% + \endgroup } % @defcv {Class Option} foo-class foo-flag @@ -4137,37 +4734,30 @@ width0pt\relax} \fi \defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype} \def\defcvarheader #1#2#3{% -\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index -\begingroup\defname {#2}{\defcvtype{} of #1}% +\dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index +\begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}% \defvarargs {#3}\endgroup % } -% @defivar == @defcv {Instance Variable} - +% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME +% \def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader} - -\def\defivarheader #1#2#3{% -\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index -\begingroup\defname {#2}{Instance Variable of #1}% -\defvarargs {#3}\endgroup % +% +\def\defivarheader#1#2#3{% + \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index + \begingroup + \defname{#2}{\putwordInstanceVariableof\ #1}% + \defvarargs{#3}% + \endgroup } -% These definitions are run if you use @defmethodx, etc., -% anywhere other than immediately after a @defmethod, etc. - -\def\defopx #1 {\errmessage{@defopx in invalid context}} -\def\defmethodx #1 {\errmessage{@defmethodx in invalid context}} -\def\defcvx #1 {\errmessage{@defcvx in invalid context}} -\def\defivarx #1 {\errmessage{@defivarx in invalid context}} - -% Now @defvar - +% @defvar % First, define the processing that is wanted for arguments of @defvar. % This is actually simple: just print them in roman. % This must expand the args and terminate the paragraph they make up \def\defvarargs #1{\normalparens #1% \interlinepenalty=10000 -\endgraf\penalty 10000\vskip -\parskip\penalty 10000} +\endgraf\nobreak\vskip -\parskip\nobreak} % @defvr Counter foo-count @@ -4181,7 +4771,7 @@ width0pt\relax} \fi \def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader} \def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index -\begingroup\defname {#1}{Variable}% +\begingroup\defname {#1}{\putwordDefvar}% \defvarargs {#2}\endgroup % } @@ -4190,7 +4780,7 @@ width0pt\relax} \fi \def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader} \def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index -\begingroup\defname {#1}{User Option}% +\begingroup\defname {#1}{\putwordDefopt}% \defvarargs {#2}\endgroup % } @@ -4202,9 +4792,9 @@ width0pt\relax} \fi % is actually part of the data type, which should not be put into the index. \def\deftypevarheader #1#2{% \dovarind#2 \relax% Make entry in variables index -\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}% +\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}% \interlinepenalty=10000 -\endgraf\penalty 10000\vskip -\parskip\penalty 10000 +\endgraf\nobreak\vskip -\parskip\nobreak \endgroup} \def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} @@ -4215,18 +4805,9 @@ width0pt\relax} \fi \def\deftypevrheader #1#2#3{\dovarind#3 \relax% \begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} \interlinepenalty=10000 -\endgraf\penalty 10000\vskip -\parskip\penalty 10000 +\endgraf\nobreak\vskip -\parskip\nobreak \endgroup} -% This definition is run if you use @defvarx -% anywhere other than immediately after a @defvar or @defvarx. - -\def\defvrx #1 {\errmessage{@defvrx in invalid context}} -\def\defvarx #1 {\errmessage{@defvarx in invalid context}} -\def\defoptx #1 {\errmessage{@defoptx in invalid context}} -\def\deftypevarx #1 {\errmessage{@deftypevarx in invalid context}} -\def\deftypevrx #1 {\errmessage{@deftypevrx in invalid context}} - % Now define @deftp % Args are printed in bold, a slight difference from @defvar. @@ -4239,51 +4820,394 @@ width0pt\relax} \fi \def\deftpheader #1#2#3{\doind {tp}{\code{#2}}% \begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup} -% This definition is run if you use @deftpx, etc -% anywhere other than immediately after a @deftp, etc. +% These definitions are used if you use @defunx (etc.) +% anywhere other than immediately after a @defun or @defunx. +% +\def\defcvx#1 {\errmessage{@defcvx in invalid context}} +\def\deffnx#1 {\errmessage{@deffnx in invalid context}} +\def\defivarx#1 {\errmessage{@defivarx in invalid context}} +\def\defmacx#1 {\errmessage{@defmacx in invalid context}} +\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}} +\def\defoptx #1 {\errmessage{@defoptx in invalid context}} +\def\defopx#1 {\errmessage{@defopx in invalid context}} +\def\defspecx#1 {\errmessage{@defspecx in invalid context}} +\def\deftpx#1 {\errmessage{@deftpx in invalid context}} +\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}} +\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}} +\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}} +\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}} +\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}} +\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}} +\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}} +\def\defunx#1 {\errmessage{@defunx in invalid context}} +\def\defvarx#1 {\errmessage{@defvarx in invalid context}} +\def\defvrx#1 {\errmessage{@defvrx in invalid context}} + + +\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\scanmacro#1{% + \begingroup \newlinechar`\^^M + % Undo catcode changes of \startcontents and \doprintindex + \catcode`\@=0 \catcode`\\=12 \escapechar=`\@ + % Append \endinput to make sure that TeX does not see the ending newline. + \toks0={#1\endinput}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \let\xeatspaces\eatspaces + \input \jobname.tmp + \endgroup +} +\else +\def\scanmacro#1{% +\begingroup \newlinechar`\^^M +% Undo catcode changes of \startcontents and \doprintindex +\catcode`\@=0 \catcode`\\=12 \escapechar=`\@ +\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup} +\fi + +\newcount\paramno % Count of parameters +\newtoks\macname % Macro name +\newif\ifrecursive % Is it recursive? +\def\macrolist{} % List of all defined macros in the form + % \do\macro1\do\macro2... + +% Utility routines. +% Thisdoes \let #1 = #2, except with \csnames. +\def\cslet#1#2{% +\expandafter\expandafter +\expandafter\let +\expandafter\expandafter +\csname#1\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=12\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 \. + +% 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\macrobodyctxt{% + \catcode`\~=12 + \catcode`\^=12 + \catcode`\_=12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \catcode`\+=12 + \catcode`\{=12 + \catcode`\}=12 + \catcode`\@=12 + \catcode`\^^M=12 + \usembodybackslash} + +\def\macroargctxt{% + \catcode`\~=12 + \catcode`\^=12 + \catcode`\_=12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \catcode`\+=12 + \catcode`\@=12 + \catcode`\\=12} + +% \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{The name \the\macname\space is reserved}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + % Add the macroname to \macrolist + \toks0 = \expandafter{\macrolist\do}% + \xdef\macrolist{\the\toks0 + \expandafter\noexpand\csname\the\macname\endcsname}% + \fi + \begingroup \macrobodyctxt + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + +\def\unmacro{\parsearg\unmacroxxx} +\def\unmacroxxx#1{% + \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 + \edef\tempa{\expandafter\noexpand\csname#1\endcsname}% + \def\do##1{% + \def\tempb{##1}% + \ifx\tempa\tempb + % remove this + \else + \toks0 = \expandafter{\newmacrolist\do}% + \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}% + \fi}% + \def\newmacrolist{}% + % Execute macro list to define \newmacrolist + \macrolist + \global\let\macrolist\newmacrolist + \endgroup + \else + \errmessage{Macro #1 not defined}% + \fi +} + +% This makes use of the obscure feature that if the last token of a +% 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\next=#1\futurelet\nchar\braceorlinexxx} +\def\braceorlinexxx{% + \ifx\nchar\bgroup\else + \expandafter\parsearg + \fi \next} -\def\deftpx #1 {\errmessage{@deftpx in invalid context}} +% We mant to disable all macros during \shipout so that they are not +% expanded by \write. +\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}% + \edef\next{\macrolist}\expandafter\endgroup\next} -\message{cross reference,} -% Define cross-reference macros -\newwrite \auxfile +% @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{\begingroup\obeyspaces\parsearg\aliasxxx} +\def\aliasxxx #1{\aliasyyy#1\relax} +\def\aliasyyy #1=#2\relax{\ignoreactivespaces +\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=% + \expandafter\noexpand\csname#2\endcsname}% +\expandafter\endgroup\next} -\newif\ifhavexrefs % True if xref values are known. + +\message{cross references,} +% @xref etc. + +\newwrite\auxfile + +\newif\ifhavexrefs % True if xref values are known. \newif\ifwarnedxrefs % True if we warned once that they aren't known. -% @inforef is simple. +% @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{}}} -% \setref{foo} defines a cross-reference point named foo. +% @node's job is to define \lastnode. +\def\node{\ENVcheck\parsearg\nodezzz} +\def\nodezzz#1{\nodexxx [#1,]} +\def\nodexxx[#1,#2]{\gdef\lastnode{#1}} +\let\nwnode=\node +\let\lastnode=\relax -\def\setref#1{% -\dosetq{#1-title}{Ytitle}% -\dosetq{#1-pg}{Ypagenumber}% -\dosetq{#1-snt}{Ysectionnumberandtype}} +% The sectioning commands (@chapter, etc.) call these. +\def\donoderef{% + \ifx\lastnode\relax\else + \expandafter\expandafter\expandafter\setref{\lastnode}% + {Ysectionnumberandtype}% + \global\let\lastnode=\relax + \fi +} +\def\unnumbnoderef{% + \ifx\lastnode\relax\else + \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}% + \global\let\lastnode=\relax + \fi +} +\def\appendixnoderef{% + \ifx\lastnode\relax\else + \expandafter\expandafter\expandafter\setref{\lastnode}% + {Yappendixletterandtype}% + \global\let\lastnode=\relax + \fi +} -\def\unnumbsetref#1{% -\dosetq{#1-title}{Ytitle}% -\dosetq{#1-pg}{Ypagenumber}% -\dosetq{#1-snt}{Ynothing}} -\def\appendixsetref#1{% -\dosetq{#1-title}{Ytitle}% -\dosetq{#1-pg}{Ypagenumber}% -\dosetq{#1-snt}{Yappendixletterandtype}} +% @anchor{NAME} -- define xref target at arbitrary point. +% +\newcount\savesfregister +\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} +\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} +\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} + +% \setref{NAME}{SNT} defines a cross-reference point NAME, namely +% NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have +% to set \indexdummies so commands such as @code in a section title +% aren't expanded. It would be nicer not to expand the titles in the +% first place, but there's so many layers that that is hard to do. +% +\def\setref#1#2{{% + \indexdummies + \pdfmkdest{#1}% + \dosetq{#1-title}{Ytitle}% + \dosetq{#1-pg}{Ypagenumber}% + \dosetq{#1-snt}{#2}% +}} -% \xref, \pxref, and \ref generate cross-references to specified points. -% 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. +% @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\printednodename{\ignorespaces #3}% \setbox1=\hbox{\printedmanual}% @@ -4296,7 +5220,7 @@ width0pt\relax} \fi \else % Use the actual chapter/section title appear inside % the square brackets. Use the real section title if we have it. - \ifdim \wd1>0pt% + \ifdim \wd1 > 0pt % It is in another manual, so we don't have it. \def\printednodename{\ignorespaces #1}% \else @@ -4317,27 +5241,54 @@ width0pt\relax} \fi % 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. + \ifpdf + \leavevmode + \getfilename{#4}% + \ifnum\filenamelength>0 + \startlink attr{/Border [0 0 0]}% + goto file{\the\filename.pdf} name{#1@}% + \else + \startlink attr{/Border [0 0 0]}% + goto name{#1@}% + \fi + \linkcolor + \fi + % \ifdim \wd1 > 0pt - \putwordsection{} ``\printednodename'' in \cite{\printedmanual}% + \putwordsection{} ``\printednodename'' \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 \refx{#1-snt}{}}% - \space [\printednodename],\space + {\normalturnoffactive + % 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 + }% + % [mynode], + [\printednodename],\space + % page 3 \turnoffactive \putwordpage\tie\refx{#1-pg}{}% \fi + \endlink \endgroup} % \dosetq is the interface for calls from other macros -% Use \turnoffactive so that punctuation chars such as underscore -% work in node names. -\def\dosetq #1#2{{\let\folio=0 \turnoffactive -\edef\next{\write\auxfile{\internalsetq {#1}{#2}}}% -\next}} +% Use \normalturnoffactive so that punctuation chars such as underscore +% and backslash work in node names. (\turnoffactive doesn't do \.) +\def\dosetq#1#2{% + {\let\folio=0% + \normalturnoffactive + \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}% + \iflinks + \next + \fi + }% +} % \internalsetq {foo}{page} expands into % CHARACTERS 'xrdef {foo}{...expansion of \Ypage...} @@ -4388,13 +5339,15 @@ width0pt\relax} \fi \def\refx#1#2{% \expandafter\ifx\csname X#1\endcsname\relax % If not defined, say something at least. - $\langle$un\-de\-fined$\rangle$% - \ifhavexrefs - \message{\linenumber Undefined cross reference `#1'.}% - \else - \ifwarnedxrefs\else - \global\warnedxrefstrue - \message{Cross reference values unknown; you must run TeX again.}% + \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 @@ -4405,10 +5358,13 @@ width0pt\relax} \fi } % This is the macro invoked by entries in the aux file. -\def\xrdef #1#2{{% - \catcode`\'=\other - \expandafter\gdef\csname X#1\endcsname{#2}% -}} +% +\def\xrdef#1{\begingroup + % Reenable \ as an escape while reading the second argument. + \catcode`\\ = 0 + \afterassignment\endgroup + \expandafter\gdef\csname X#1\endcsname +} % Read the last existing aux file, if any. No error if none exists. \def\readauxfile{\begingroup @@ -4465,8 +5421,7 @@ width0pt\relax} \fi \catcode`\$=\other \catcode`\#=\other \catcode`\&=\other - % `\+ does not work, so use 43. - \catcode43=\other + \catcode`+=\other % avoid \+ for paranoia even though we've turned it off % Make the characters 128-255 be printing characters {% \count 1=128 @@ -4555,6 +5510,8 @@ width0pt\relax} \fi \xspaceskip\z@skip \parindent\defaultparindent % + \smallfonts \rm + % % Hang the footnote text off the number. \hang \textindent{\thisfootno}% @@ -4569,7 +5526,7 @@ width0pt\relax} \fi \else\let\next\f@t\fi \next} \def\f@@t{\bgroup\aftergroup\@foot\let\next} \def\f@t#1{#1\@foot} -\def\@foot{\strut\egroup} +\def\@foot{\strut\par\egroup} }%end \catcode `\@=11 @@ -4628,23 +5585,25 @@ width0pt\relax} \fi % @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 \closein 1 - \def\epsfannounce{\toks0 = }% do not bother showing banner + % Do not bother showing banner with post-v2.7 epsf.tex (available in + % doc/epsf.tex until it shows up on ctan). + \def\epsfannounce{\toks0 = }% \input epsf.tex \fi % +% 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://ftp.tug.org/tex/epsf.tex.} + it from ftp://tug.org/tex/epsf.tex.} % -% Only complain once about lack of epsf.tex. \def\image#1{% \ifx\epsfbox\undefined \ifwarnednoepsf \else @@ -4662,42 +5621,79 @@ width0pt\relax} \fi % #2 is (optional) width, #3 is (optional) height. % #4 is just the usual extra ignored arg for parsing this stuff. \def\imagexxx#1,#2,#3,#4\finish{% - % \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}% + \ifpdf + \centerline{\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 + \begingroup + \catcode`\^^M = 5 % in case we're inside an example + % If the image is by itself, center it. + \ifvmode + \nobreak\bigskip + % 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 + \centerline{\epsfbox{#1.eps}}% + \bigbreak + \else + % In the middle of a paragraph, no extra space. + \epsfbox{#1.eps}% + \fi + \endgroup + \fi } -% End of control word definitions. - -\message{and turning on texinfo input format.} +\message{localization,} +% and i18n. -\def\openindices{% - \newindex{cp}% - \newcodeindex{fn}% - \newcodeindex{vr}% - \newcodeindex{tp}% - \newcodeindex{ky}% - \newcodeindex{pg}% +% @documentlanguage is usually given very early, just after +% @setfilename. If done too late, it may not override everything +% properly. Single argument is the language abbreviation. +% It would be nice if we could set up a hyphenation file here. +% +\def\documentlanguage{\parsearg\dodocumentlanguage} +\def\dodocumentlanguage#1{% + \tex % read txi-??.tex file in plain TeX. + % Read the file if it exists. + \openin 1 txi-#1.tex + \ifeof1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \let\temp = \relax + \else + \def\temp{\input txi-#1.tex }% + \fi + \temp + \endgroup } +\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 some numeric style parameters, for 8.5 x 11 format. +% @documentencoding should change something in TeX eventually, most +% likely, but for now just recognize it. +\let\documentencoding = \comment -\hsize = 6in -\hoffset = .25in + +% Page size parameters. +% \newdimen\defaultparindent \defaultparindent = 15pt -\parindent = \defaultparindent -\parskip 3pt plus 2pt minus 1pt -\setleading{13.2pt} -\advance\topskip by 1.2cm \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 +\vbadness = 10000 + +% Don't be so finicky about underfull hboxes, either. +\hbadness = 2000 % Following George Bush, just get rid of widows and orphans. \widowpenalty=10000 @@ -4706,101 +5702,125 @@ width0pt\relax} \fi % 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. This makes it come to about 9pt for the 8.5x11 format. +% \hsize. We call this whenever the paper size is set. % -\ifx\emergencystretch\thisisundefined - % Allow us to assign to \emergencystretch anyway. - \def\emergencystretch{\dimen0}% -\else - \emergencystretch = \hsize - \divide\emergencystretch by 45 -\fi +\def\setemergencystretch{% + \ifx\emergencystretch\thisisundefined + % Allow us to assign to \emergencystretch anyway. + \def\emergencystretch{\dimen0}% + \else + \emergencystretch = .15\hsize + \fi +} -% Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25) -\def\smallbook{ - \global\chapheadingskip = 15pt plus 4pt minus 2pt - \global\secheadingskip = 12pt plus 3pt minus 2pt - \global\subsecheadingskip = 9pt plus 2pt minus 2pt +% Parameters in order: 1) textheight; 2) textwidth; 3) voffset; +% 4) hoffset; 5) binding offset; 6) topskip. Then whoever calls us can +% set \parskip and call \setleading for \baselineskip. +% +\def\internalpagesizes#1#2#3#4#5#6{% + \voffset = #3\relax + \topskip = #6\relax + \splittopskip = \topskip % - \global\lispnarrowing = 0.3in - \setleading{12pt} - \advance\topskip by -1cm - \global\parskip 2pt plus 1pt - \global\hsize = 5in - \global\vsize=7.5in - \global\tolerance=700 - \global\hfuzz=1pt - \global\contentsrightmargin=0pt - \global\deftypemargin=0pt - \global\defbodyindent=.5cm + \vsize = #1\relax + \advance\vsize by \topskip + \outervsize = \vsize + \advance\outervsize by 2\topandbottommargin + \pageheight = \vsize % - \global\pagewidth=\hsize - \global\pageheight=\vsize + \hsize = #2\relax + \outerhsize = \hsize + \advance\outerhsize by 0.5in + \pagewidth = \hsize % - \global\let\smalllisp=\smalllispx - \global\let\smallexample=\smalllispx - \global\def\Esmallexample{\Esmalllisp} + \normaloffset = #4\relax + \bindingoffset = #5\relax + % + \parindent = \defaultparindent + \setemergencystretch } +% @letterpaper (the default). +\def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \setleading{13.2pt}% + % + % If page is nothing but text, make it come out even. + \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}% +}} + +% Use @smallbook to reset parameters for 7x9.5 (or so) format. +\def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \setleading{12pt}% + % + \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \deftypemargin = 0pt + \defbodyindent = .5cm + % + \let\smalldisplay = \smalldisplayx + \let\smallexample = \smalllispx + \let\smallformat = \smallformatx + \let\smalllisp = \smalllispx +}} + % Use @afourpaper to print on European A4 paper. -\def\afourpaper{ -\global\tolerance=700 -\global\hfuzz=1pt -\setleading{12pt} -\global\parskip 15pt plus 1pt - -\global\vsize= 53\baselineskip -\advance\vsize by \topskip -%\global\hsize= 5.85in % A4 wide 10pt -\global\hsize= 6.5in -\global\outerhsize=\hsize -\global\advance\outerhsize by 0.5in -\global\outervsize=\vsize -\global\advance\outervsize by 0.6in - -\global\pagewidth=\hsize -\global\pageheight=\vsize -} - -\bindingoffset=0pt -\normaloffset=\hoffset -\pagewidth=\hsize -\pageheight=\vsize - -% Allow control of the text dimensions. Parameters in order: textheight; -% textwidth; voffset; hoffset; binding offset; topskip. -% All require a dimension; -% header is additional; added length extends the bottom of the page. - -\def\changepagesizes#1#2#3#4#5#6{ - \global\vsize= #1 - \global\topskip= #6 - \advance\vsize by \topskip - \global\voffset= #3 - \global\hsize= #2 - \global\outerhsize=\hsize - \global\advance\outerhsize by 0.5in - \global\outervsize=\vsize - \global\advance\outervsize by 0.6in - \global\pagewidth=\hsize - \global\pageheight=\vsize - \global\normaloffset= #4 - \global\bindingoffset= #5} +\def\afourpaper{{\globaldefs = 1 + \setleading{12pt}% + \parskip = 3pt plus 2pt minus 1pt + % + \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}% + % + \tolerance = 700 + \hfuzz = 1pt +}} % A specific text layout, 24x15cm overall, intended for A4 paper. Top margin % 29mm, hence bottom margin 28mm, nominal side margin 3cm. -\def\afourlatex - {\global\tolerance=700 - \global\hfuzz=1pt - \setleading{12pt} - \global\parskip 15pt plus 1pt - \advance\baselineskip by 1.6pt - \changepagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm} - } +\def\afourlatex{{\globaldefs = 1 + \setleading{13.6pt}% + % + \afourpaper + \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% + % + \globaldefs = 0 +}} % Use @afourwide to print on European A4 paper in wide format. -\def\afourwide{\afourpaper -\changepagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}} +\def\afourwide{% + \afourpaper + \internalpagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}% + % + \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. +% +\def\pagesizes{\parsearg\pagesizesxxx} +\def\pagesizesxxx#1{\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{13.2pt}% + % + \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}% +}} + +% 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 @@ -4811,6 +5831,7 @@ width0pt\relax} \fi \catcode`\<=\other \catcode`\>=\other \catcode`\+=\other +\catcode`\$=\other \def\normaldoublequote{"} \def\normaltilde{~} \def\normalcaret{^} @@ -4819,6 +5840,7 @@ width0pt\relax} \fi \def\normalless{<} \def\normalgreater{>} \def\normalplus{+} +\def\normaldollar{$} % This macro is used to make a character print one way in ttfont % where it can probably just be output, and another way in other fonts, @@ -4829,7 +5851,13 @@ width0pt\relax} \fi % 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\the\font=0pt #1\else #2\fi} +\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). @@ -4837,10 +5865,10 @@ width0pt\relax} \fi % use math or other variants that look better in normal text. \catcode`\"=\active -\def\activedoublequote{{\tt \char '042}} +\def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active -\def~{{\tt \char '176}} +\def~{{\tt\char126}} \chardef\hat=`\^ \catcode`\^=\active \def^{{\tt \hat}} @@ -4851,7 +5879,7 @@ width0pt\relax} \fi \def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}} \catcode`\|=\active -\def|{{\tt \char '174}} +\def|{{\tt\char124}} \chardef \less=`\< \catcode`\<=\active \def<{{\tt \less}} @@ -4860,6 +5888,8 @@ width0pt\relax} \fi \def>{{\tt \gtr}} \catcode`\+=\active \def+{{\tt \char 43}} +\catcode`\$=\active +\def${\ifusingit{{\sl\$}}\normaldollar} %\catcode 27=\active %\def^^[{$\diamondsuit$} @@ -4890,9 +5920,6 @@ width0pt\relax} \fi % \normalbackslash outputs one backslash in fixed width font. \def\normalbackslash{{\tt\rawbackslashxx}} -% Say @foo, not \foo, in error messages. -\escapechar=`\@ - % \catcode 17=0 % Define control-q \catcode`\\=\active @@ -4906,7 +5933,8 @@ width0pt\relax} \fi @let|=@normalverticalbar @let<=@normalless @let>=@normalgreater -@let+=@normalplus} +@let+=@normalplus +@let$=@normaldollar} @def@normalturnoffactive{@let"=@normaldoublequote @let\=@normalbackslash @@ -4916,7 +5944,8 @@ width0pt\relax} \fi @let|=@normalverticalbar @let<=@normalless @let>=@normalgreater -@let+=@normalplus} +@let+=@normalplus +@let$=@normaldollar} % Make _ and + \other characters, temporarily. % This is canceled by @fixbackslash. @@ -4935,16 +5964,29 @@ width0pt\relax} \fi % Also back turn 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} +@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. The @rm below -%% makes sure that the current font starts out as the newly loaded cmr10 -@catcode`@$=@other @catcode`@%=@other @catcode`@&=@other @catcode`@#=@other +% These look ok in all fonts, so just make them not special. +@catcode`@& = @other +@catcode`@# = @other +@catcode`@% = @other +@c Set initial fonts. @textfonts @rm + @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: diff --git a/doc/version.texi b/doc/version.texi index d83d668..29badf5 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,3 +1,3 @@ -@set UPDATED 29 December 1999 -@set EDITION 3.5c -@set VERSION 3.5c +@set UPDATED 28 June 2000 +@set EDITION 3.5d +@set VERSION 3.5d diff --git a/i18n/ChangeLog b/i18n/ChangeLog index 1f9ebec..cc9149f 100644 --- a/i18n/ChangeLog +++ b/i18n/ChangeLog @@ -1,3 +1,15 @@ +2000-05-31 François Pinard + + * da.po: Updated. + +2000-02-07 François Pinard + + * sl.po: Updated. + +2000-01-27 François Pinard + + * gl.po: New file. + 1999-12-14 François Pinard * Makefile.am: New file. diff --git a/i18n/Makefile.am b/i18n/Makefile.am index 6897a08..6152704 100644 --- a/i18n/Makefile.am +++ b/i18n/Makefile.am @@ -32,7 +32,8 @@ if USE_NLS files='$(MOFILES)'; \ for file in $$files; do \ base=`basename $$file`; \ - langdir=$(localedir)/`echo $$base | sed 's/\.mo$$//'`/LC_MESSAGES; \ + langdir=$(DESTDIR)$(localedir)/`echo $$base \ + | sed 's/\.mo$$//'`/LC_MESSAGES; \ $(mkinstalldirs) $$langdir; \ echo " $(INSTALL_DATA) $(srcdir)/$$file $$langdir/$(PACKAGE).mo"; \ $(INSTALL_DATA) $(srcdir)/$$file $$langdir/$(PACKAGE).mo; \ @@ -44,7 +45,8 @@ if USE_NLS files='$(MOFILES)'; \ for file in $$files; do \ base=`basename $$file`; \ - langdir=$(localedir)/`echo $$base | sed 's/\.mo$$//'`/LC_MESSAGES; \ + langdir=$(DESTDIR)$(localedir)/`echo $$base + | sed 's/\.mo$$//'`/LC_MESSAGES; \ rm -f $$langdir/$(PACKAGE).mo; \ done endif diff --git a/i18n/Makefile.in b/i18n/Makefile.in index 24dc5e4..5a63e60 100644 --- a/i18n/Makefile.in +++ b/i18n/Makefile.in @@ -65,42 +65,24 @@ host_triplet = @host@ ALL_LINGUAS = @ALL_LINGUAS@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ CC = @CC@ CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ LEX = @LEX@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ RANLIB = @RANLIB@ U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ VERSION = @VERSION@ -l = @l@ AUTOMAKE_OPTIONS = gnits @@ -239,7 +221,8 @@ install-data-local: $(MOFILES) @USE_NLS_TRUE@ files='$(MOFILES)'; \ @USE_NLS_TRUE@ for file in $$files; do \ @USE_NLS_TRUE@ base=`basename $$file`; \ -@USE_NLS_TRUE@ langdir=$(localedir)/`echo $$base | sed 's/\.mo$$//'`/LC_MESSAGES; \ +@USE_NLS_TRUE@ langdir=$(DESTDIR)$(localedir)/`echo $$base \ +@USE_NLS_TRUE@ | sed 's/\.mo$$//'`/LC_MESSAGES; \ @USE_NLS_TRUE@ $(mkinstalldirs) $$langdir; \ @USE_NLS_TRUE@ echo " $(INSTALL_DATA) $(srcdir)/$$file $$langdir/$(PACKAGE).mo"; \ @USE_NLS_TRUE@ $(INSTALL_DATA) $(srcdir)/$$file $$langdir/$(PACKAGE).mo; \ @@ -249,7 +232,8 @@ uninstall-local: @USE_NLS_TRUE@ files='$(MOFILES)'; \ @USE_NLS_TRUE@ for file in $$files; do \ @USE_NLS_TRUE@ base=`basename $$file`; \ -@USE_NLS_TRUE@ langdir=$(localedir)/`echo $$base | sed 's/\.mo$$//'`/LC_MESSAGES; \ +@USE_NLS_TRUE@ langdir=$(DESTDIR)$(localedir)/`echo $$base +@USE_NLS_TRUE@ | sed 's/\.mo$$//'`/LC_MESSAGES; \ @USE_NLS_TRUE@ rm -f $$langdir/$(PACKAGE).mo; \ @USE_NLS_TRUE@ done diff --git a/i18n/da.mo b/i18n/da.mo index 64c679a1dab4e398c5e40e2eca1cb9daf999e5f8..760a89173a1c21d96e85c6f74a7dada4630b57ac 100644 GIT binary patch delta 1130 zcmYMyT}V@57zglYZQ>Wwho*hZd7S7rJv+@!7ut%Lx+Eia@AqDGUn=3nHTaZ?n7@zxR30d!F}s-km3-lcSF= zZO8^JL{)a8!-QWo(PzY0;cdhhYKY!Lw?rgwAlg_piNr3r0x>+T;V*Qfm>6uXnP>;he#Bx676tzN z0o$M`)CfD^J}9pE928e}1&XVG4n=`QC~oKrT!dxl-UgSTm~?q9UWG-7e?WXPginsT ziE@Pn-YQEg586W&exJ|h^|g8f&63~W?(;YK{Ox?oeylWU#`ni{O;yx5U$U!3;q++a zv}rJYr23sj<6ehSm`JHfEjhwR9BtNE%HVe#VVmT>>)~G=6Ps94N+sg?9j2Mla%XF} z#oDKtd|Pcpfv%Yumg}y4Wi5=3$6^e1Z@VkGT(1XRDjU`k5#1$AuGDZQzZhj_BLDId z({*N)xMJhF?vmVpBPlmm|J`CcV2qFOIoEx@wZO|gL$+uH=fpje1(D>4 zb~?A}d1JvS^G)IPZFO?PdN3#l9WjN)O+|7JJ7vk4W`^#}pN}Br+`}KrHS7D|%CnW? zKxRnwrlKem{(t;qZ=3ZHOY#-3zB83JGZ7;r#n_n6R7Qh_mR!s6DaBWuk-|%w>z5dbKt;y}O(9=OWBfi!2y~MObf!J8swAu6nmd6fqD> zf`Z}@K@t6ce9^07gfA)yA+RER5mbLbSlEjoL4sb?_skXAtIv6!bMAA_bIzSeJWV{l zV$KFkL{1mcVIn$MO|*=d!~2M*YKa!1PaU;5f9w8MqC;^ir0b7<@#c6n=*#@E6<*i+n_tun&s)lh6+1P!uo< z^OxZk#CHq%C$J0gJZy*7Mk17?E-3QxLOk7=CGsG#fJ6YUKr~ODCL%ORy|4-HdH*rI|;0M?ZH$W$T2+^qvinsyVpbYWLC?s*DEJG<-(WByWCf&&|76O!j?x zhUqbJ5yU548e_w%&WzlW@4d;)7@uv5tXo?t zd)CE0a(h{frKMz4moke6<5}5hR_y$yT)S@Fto)+t@1BO_PAQ5)`JPvAieLAK%|{u3 z=hytIuBO$frly#o>T#w^!)!!jF-8N3|DWUoO0al!3BRiJ@CBux&jibJo, 1997. +# Niels Kristian Bech Jensen , 1997-2000. # msgid "" msgstr "" -"Project-Id-Version: recode 3.4r\n" +"Project-Id-Version: recode 3.5\n" "POT-Creation-Date: 1999-05-18 08:46-0400\n" -"PO-Revision-Date: 1998-05-21 09:08+0200\n" +"PO-Revision-Date: 2000-05-31 22:02+02:00\n" "Last-Translator: Niels Kristian Bech Jensen \n" -"Language-Team: Danish \n" +"Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #. Dump all characters. #: src/debug.c:287 -msgid "" -"UCS2 Mne Description\n" -"\n" -msgstr "" -"UCS2 Mne Beskrivelse\n" -"\n" +msgid "UCS2 Mne Description\n\n" +msgstr "UCS2 Mne Beskrivelse\n\n" #: src/main.c:140 msgid "No error" @@ -44,15 +40,15 @@ msgstr "Ugyldige inddata" #: src/main.c:155 msgid "System detected problem" -msgstr "Systemet fandt en fejl" +msgstr "Systemet fandt et problem" #: src/main.c:158 msgid "Misuse of recoding library" -msgstr "Misbrug af oversættelsesbibliotek" +msgstr "Misbrug af omkodningsbibliotek" #: src/main.c:161 msgid "Internal recoding bug" -msgstr "Intern oversættelsesfejl" +msgstr "Intern omkodningsfejl" #: src/main.c:206 msgid "" @@ -71,8 +67,7 @@ msgid "" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "Dette program er fri software; du må redistribuere det og/eller modificere\n" -"det under betingelserne givet i GNU General Public License som publiceret " -"af\n" +"det under betingelserne givet i GNU General Public License som publiceret af\n" "Free Software Foundation; enten version 2, eller (efter dit valg) en senere\n" "version.\n" "\n" @@ -91,19 +86,13 @@ msgid "Try `%s %s' for more information.\n" msgstr "Prøv \"%s %s\" for mere information.\n" #: src/main.c:235 -msgid "" -"Free `recode' converts files between various character sets and surfaces.\n" -msgstr "" -"Free \"recode\" konverterer filer mellem forskellige tegnsæt og pakninger.\n" +msgid "Free `recode' converts files between various character sets and surfaces.\n" +msgstr "Fri \"recode\" konverterer filer mellem forskellige tegnsæt og pakninger.\n" #: src/main.c:239 #, c-format -msgid "" -"\n" -"Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" -msgstr "" -"\n" -"Anvendelse: %s [TILVALG]... [ [TEGNSÆT] | FORESPØRGSEL [FIL]... ]\n" +msgid "\nUsage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" +msgstr "\nBrug: %s [TILVALG]... [ [TEGNSÆT] | FORESPØRGSEL [FIL]... ]\n" #: src/main.c:242 msgid "" @@ -121,8 +110,7 @@ msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets\n" -" -k, --known=PAIRS restrict charsets according to known PAIRS " -"list\n" +" -k, --known=PAIRS restrict charsets according to known PAIRS list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" @@ -131,8 +119,8 @@ msgid "" " --version output version information and exit\n" msgstr "" "\n" -"Oversigter:\n" -" -l, --list[=FORMAT] vis oversigt over et eller alle kendte tegnsæt\n" +"Lister:\n" +" -l, --list[=FORMAT] vis liste over et eller alle kendte tegnsæt\n" " -k, --known=PAR begræns tegnsæt til liste af kendte PAR\n" " -h, --header[=[SPR/]NAVN] skriv tabel NAVN til std-ud i SPR og afslut\n" " -F, --freeze-tables udskriv et C-modul indeholdende alle tabeller\n" @@ -154,19 +142,17 @@ msgid "" msgstr "" "\n" "Operationsmåder:\n" -" -v, --verbose vis rækkefølgen af gennemløb, og rapportér " -"fremskridt\n" +" -v, --verbose vis rækkefølgen af gennemløb, og rapportér fremskridt\n" " -q, --quiet, --silent udelad meddelelser om irreversible oversættelser\n" " -f, --force gennemtving oversættelser, selv hvis de ikke er\n" " reversible\n" " -t, --touch giv den oversatte fil system-urets tid\n" " -i, --sequence=files brug midlertidige filer mellem gennemløbene\n" -" --sequence=memory brug hukommelseslagre mellem gennemløbene\n" +" --sequence=memory brug hukommelsesbuffere mellem gennemløbene\n" #: src/main.c:273 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" -msgstr "" -" -p, --sequence=pipe brug \"pipe\"-mekanismen mellem gennemløbene\n" +msgstr " -p, --sequence=pipe brug pibe-mekanismen mellem gennemløbene\n" #: src/main.c:278 msgid " -p, --sequence=pipe same as -i (on this system)\n" @@ -186,14 +172,12 @@ msgstr "" "\n" "Fintuning:\n" " -s, --strict brug kun nøjagtige tegnsæt selvom der mistes tegn\n" -" -d, --diacritics oversæt kun diakritiske/specielle tegn til " -"HTML/LaTeX\n" -" -S, --source[=SPR] begræns oversættelsen til strenge og kommentarer " -"som\n" -" til SPR\n" -" -c, --colons brug koloner i stedet for anførselstegn som trema\n" +" -d, --diacritics oversæt kun diakritiske/specielle tegn i HTML/LaTeX\n" +" -S, --source[=SPR] begræns omodning til strenge og kommentarer som\n" +" for SPR\n" +" -c, --colons brug koloner i stedet for anførselstegn som trema (¨)\n" " -g, --graphics tilnærm IBMPC linie- og kassetegn med ASCII grafik\n" -" -x, --ignore=TEGNSÆT ignorér TEGNSÆT når oversættelsesvejen vælges\n" +" -x, --ignore=TEGNSÆT ignorér TEGNSÆT når en omkodningssti vælges\n" #: src/main.c:294 msgid "" @@ -203,54 +187,43 @@ msgid "" msgstr "" "\n" "Tilvalg -l uden FORMAT eller TEGNSÆT viser en liste over alle tegnsæt og\n" -"pakninger. FORMAT er et af ordene decimal, octal, hexadecimal eller full " -"(eller\n" -"et af bogstaverne d, o, h eller f).\n" +"pakninger. FORMAT er et af ordene 'decimal', 'octal', 'hexadecimal' eller\n" +"'full' (eller et af bogstaverne d, o, h eller f).\n" #: src/main.c:302 #, c-format -msgid "" -"Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n" -msgstr "Standard TEGNSÆT er \"%s\", hvis ikke DEFAULT_CHARSET er defineret.\n" +msgid "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n" +msgstr "Standard TEGNSÆT er \"%s\", med mindre DEFAULT_CHARSET er angivet.\n" #: src/main.c:308 msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" -msgstr "Der findes ikke et standard TEGNSÆT, definer DEFAULT_CHARSET.\n" +msgstr "Der findes ikke et standard TEGNSÆT, angiv DEFAULT_CHARSET.\n" #: src/main.c:313 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" -"both being tabular charsets, with PAIRS of the form " -"`BEF1:AFT1,BEF2:AFT2,...'\n" +"both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Med -k vises en liste over mulige før tegnsæt for det givne efter TEGNSÆT,\n" -"begge tabellariske tegnsæt, med PAR af typen " -"\"FØR1:EFTER1,FØR2:EFTER2,...\"\n" +"begge tabellariske tegnsæt, med PAR af typen \"FØR1:EFTER1,FØR2:EFTER2,...\"\n" "hvor FØR'er og EFTER'e er tegnkoder givet efter titalssystemet.\n" #: src/main.c:318 -msgid "" -"LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" -msgstr "" -"SPR er et programmeringssprog, det kan være \"c\", \"perl\" eller \"po\".\n" -" \"c\" er standard.\n" +msgid "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" +msgstr "SPR er et programmeringssprog, f.eks. \"c\", \"perl\" eller \"po\"; \"c\" er standard.\n" #: src/main.c:321 msgid "" "\n" -"REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " -"ENCODING[..ENCODING]...\n" -"ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " -"BEFORE..AFTER,\n" +"REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]...\n" +"ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" -"charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " -"/\n" +"charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" -"FORESPØRGSEL er UNDERFORESPØRGSEL[,UNDERFORESPØRGSEL]...; UNDERFORESPØRGSEL " -"er\n" +"FORESPØRGSEL er UNDERFORESPØRGSEL[,UNDERFORESPØRGSEL]...; UNDERFORESPØRGSEL er\n" "INDKODNING[..INDKODNING]...; INDKODNING er [TEGNSÆT][/[PAKNING]]...\n" "FORESPØRGSEL har ofte formen FØR..EFTER, hvor FØR og EFTER er tegnsæt.\n" "Hvis et TEGNSÆT udelades, anvendes det normale tegnsæt; hvis [/PAKNING]...\n" @@ -266,18 +239,12 @@ msgid "" msgstr "" "\n" "Hvis ingen af -i eller -p er valgt, bruges -p hvis ingen FIL, ellers -i.\n" -"Hver FIL bliver oversat oveni sig selv og overskriver originalen. Hvis " -"ingen\n" -"FIL er valgt, er programmet et filter, der oversætter fra std-ind til " -"std-ud.\n" +"Hver FIL bliver oversat oveni sig selv og overskriver originalen. Hvis ingen\n" +"FIL er valgt, er programmet et filter, der oversætter fra std-ind til std-ud.\n" #: src/main.c:335 -msgid "" -"\n" -"Report bugs to .\n" -msgstr "" -"\n" -"Rapportér fejl til .\n" +msgid "\nReport bugs to .\n" +msgstr "\nRapportér fejl til .\n" #: src/main.c:431 #, c-format @@ -311,30 +278,20 @@ msgid "Unknown format `%s'" msgstr "Ukendt format \"%s\"" #: src/main.c:622 -msgid "" -"\n" -"Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" -msgstr "" -"\n" -"Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" +msgid "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" +msgstr "\nOphavsret (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:626 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" -"Dette er fri software; se kopieringsbetingelserne i kildeteksten. Der " -"gives\n" -"INGEN garanti; end ikke for SALGBARHED eller ANVENDELIGHED TIL ET GIVET " -"FORMÅL.\n" +"Dette er fri software; se kopieringsbetingelserne i kildeteksten. Der gives\n" +"INGEN garanti; end ikke for SALGBARHED eller ANVENDELIGHED TIL NOGET FORMÅL.\n" #: src/main.c:630 -msgid "" -"\n" -"Written by Franc,ois Pinard .\n" -msgstr "" -"\n" -"Skrevet af François Pinard .\n" +msgid "\nWritten by Franc,ois Pinard .\n" +msgstr "\nSkrevet af François Pinard .\n" #: src/main.c:775 #, c-format @@ -349,7 +306,7 @@ msgstr "Fejlagtig foresp #: src/main.c:878 #, c-format msgid "Recoding %s..." -msgstr "Oversætter %s..." +msgstr "Omkoder %s..." #: src/main.c:888 msgid " done\n" @@ -398,7 +355,7 @@ msgstr "Beklager, ingen navne tilg #: src/outer.c:95 #, c-format msgid "Resurfacer set more than once for `%s'" -msgstr "Repakker indstillet flere gange for \"%s\"" +msgstr "Genpakker indstillet flere gange for \"%s\"" #: src/outer.c:102 #, c-format @@ -439,17 +396,17 @@ msgstr "Kan ikke fuldende tabellen udfra m #: src/recode.c:492 msgid "Identity recoding, not worth a table" -msgstr "Triviel oversættelse, ikke værd at bruge en tabel" +msgstr "Triviel omkodning, ikke værd at bruge en tabel" #: src/recode.c:499 msgid "Recoding is too complex for a mere table" -msgstr "Oversættelsen er for kompleks for en simpel tabel" +msgstr "Omkodningen er for kompleks for en simpel tabel" #. Print the header of the header file. #: src/recode.c:531 #, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" -msgstr "%sOversættelsestabellen er genereret automatisk af Free \"%s\" %s" +msgstr "%sOmkodningstabellen er genereret automatisk af Free \"%s\" %s" #: src/recode.c:533 #, c-format @@ -487,7 +444,7 @@ msgstr "*Uopn #: src/request.c:114 msgid "*mere copy*" -msgstr "*ren kopi*" +msgstr "*bare kopi*" #: src/request.c:244 msgid "Virtual memory exhausted!" @@ -495,11 +452,11 @@ msgstr "Virtuel hukommelse opbrugt!" #: src/request.c:263 msgid "Step initialisation failed" -msgstr "Trininitialiseringen fejlede" +msgstr "Trinopstart fejlede" #: src/request.c:270 msgid "Step initialisation failed (unprocessed options)" -msgstr "Trininitialiseringen fejlede (ubearbejdede tilvalg)" +msgstr "Trinopstart fejlede (ubearbejdede tilvalg)" #: src/request.c:566 #, c-format diff --git a/i18n/gl.mo b/i18n/gl.mo new file mode 100644 index 0000000000000000000000000000000000000000..0155db32171f6405aacd0f71fae5f207980bec85 GIT binary patch literal 13844 zcmbuFTZ|m(RmUqKEJ=rKLN0^^NWRU+c)dH_p0W4l+p_I(kKLP@p2h7AE z+U>6DRCU`ktH1*fXp!=OK!gY>hzO)4LPX&v6c7?1MMOv;4+I_{0<1iML4H`A<+7l_ z?|;6k?jGA?hot28smoWV&UfyY`TMuO;g{( zz(0Cj5WEWfd9Hu^jY06|z_V`(f;rx)RD$4ldH&cB2Eiw}|F3Tef{%0kGxr9;JlFsG z)*v_moPS#oJPv#T_$ct#fs4Su1%f(w-wy@B4+9SY-wiws1ZB_$^2s0s3eO9`cLIL{ z$R~m?0pAS#3h-UPuLJe|zW_lUy#DR}`W--h?;&6nm;yft{50?p;GY2x1OKzQ@802` zH-JCR{TG0TfG-0@=NEwQ0e%_y6Tp7}J_Wo7;)M6ZK+$s<2up%b051T41^8azH-SG2 z{5DYgdoPP2Ik+GA0pKG*PzKKe7l3`B_WP^A2Y|l?6o38(sPBKXcwT`xz5gDdzH=Hl z4}1nFzPt?lW#F#?KZ*Pv=cd+wjm>ENzXA2#w{QW<;JyMr1{D1(!1n<^3DkFgAIKJh zZvcM;_zF;bsj#`P13w6qO8plQRSCXbT)zpW)4uNooW4V1op1ZIDo>(2o{!}U+S zKM4LA_cNvgWwF;Zvtvx=Yit?r2?iv?fa*J;?pkzCFjor zh4&ADtH8em3eWo<3Ib3E9|6{ZKMR}#eg!Cfd=+>Mct1DUdhj%mEe0c?@P7&@zJCEI zJ^d=M4SW?S{7->I&tC?j!og>O()T|EvLyI+0UxTdC$66bN}oGGJ{`Oa)OUUlD1Q9~ zP!fX@M?PuoD**QbDb|MNgZ75p_&a(ERedgfUCY2b%|pF?iffRGaW z!f~%}e*zSL{|+d<`BriN-iL$Wqg)>WO3!`{2+H7#K=Jnmhk&i(TmZGS zL$sYJ&IKC$WY;>xC$?{LK|RgyybCBf&mNC)p}k5k@8x%vAL0mplHcqhJ&|m5hsC+6qeiDUeZ^Lv=zqx>G@cfu`YQRFt#t+XbE*d0Y#E*w4K z=*3|-i$`%cFVJ+;+g+U1+Z?A6*XH(X&FdVZ@~4tQ%cC zv)p>#W9r9)c;vFEoAw~YjZz~Gl3bYdTsIvIqGZHHZWxza!qgR}ZrV?ik{sdEwu+l^ zl8>UW=h7|LOUIplQn%DxZlFkg1RNm|v<9N{sJ}JmdJ$@v?wQ=7ImHa(BMSx);l6t@Nv|Yk3wbm$U3pRO+U+xI_2&A9S77}QC%lo#bhO-s z-ENwd8tqZ}ck~%4&5n@mprlcD@yx~L*3su%^_7OGxq_i##i7(z_aI8!VmGL`c(vRr z_z>;JhHFWBtd*zKf!qfEQ>%SBMzkie zG?WHu`DA~cNR;@M(vTFvcz>}dJl%;?E0F+uaX##adv5CSyonD@1Mnz4JPbAsH9Ewe z{?MP#{9j@j?VuU9LRbn``1jDUTo$zNfC)qRP(F(jG#>-kx(R}yvO0`1e-ma!US}?A zN4(dObDSR0F1tb5a%?S1x@IW2ouO>Dhe{aJ@FUx3hw0D9ga^BfMmovy2UsVLBH4*M z*ztg6;Wkbx>_}j7mf@4xi1eWJkA?@!LEI^RbV>|o{?25j_vlyTB$8AfwnQdj8wI0u zjD^k~{*L@dX|GtADB6;lv88_4jpT}iBeq=>n?K_hf=q5WPFO#P@U&>MeCiKGS0_gzf!C}1)|C7i$_bkpdG~y3DkPSzddERiL^is z0(aC?2Bv5*9PO2YaY;y=@o0!MrMO&ZPD$a6yh!+oj*w)`_vY6blSq(Loc8)$)%BBc zme$6DG#OPLo{$Z~IA1Xt>XWhVjr_bgu0Z;0U`9;GWFW<$L&+!I4UE@N2R> z!!aQ8k_lo*2bc_5Q4)b_3v-Biwrd>Op}bZ*lve_HaJvV(KUt*<_VrkTCr866T>jh@^W?TQ)o-4 zM4Su(cRX=pVxXxPe5QM@f!W^?I|?o%1Cf@D5l7S z&5NX?JyN(7x0kysA@L_4g(G;&n)%&B^R;8U!J%;N zM58Mac6&L@VtraHw6aGc^ZY734H9nlkaUbsGHiTV@))@*WJWu9E-$mD;vO07WRb(+ z1kHp@Jcj!T2}rQq5{vT`6E78ZPHFsr%&3Fzb`^2RLWnEc&M-ZEN;mbA^sZ1(C|Zeg zSvH^txv7^_xO)s^_6xz*(}kTb_ydlhcbn!vcFu*w8;X{j#Gw>I5*iw=FaMqwUz-E!QG67(4FJJg+g z2R3!~Dq4O}!{d~T&?r7oX7lt*`1}LJ1Sl*E+9Q=P*~7?`yA}&;mCDUKoNh!GYEjMhuELhxGtKse)y=l6x1Mv))YsQx^K++6%aysC2t>371*mefbo?znTbX}EWHp;SU^NSOIr zm?<>ll&|;+l0~tKE4hQX<|^t>&ACTTxHgF$>Gzrn30HL+W7WFHkJIxyixXEXYo+ey zk1Z@LR2PoV)Arijs7o!$Ww1@`{;(N^ZFHuDV~GzuKJvJ8QBJ?gjF1V=X5uSwSTso+ z%6p{`_5q{3yFWwNOeli#TQdRNIF1LUnMnrbCaH4asm<}quZYG(j&(bUbA(WMFQ43+ ziBQBJHK&{kEGWOYuF9?g22%At^;L8VS8q-;t6j-Q;KI5Aog%^+<+$HLdg_Bes z3v-+u)7h~(qQPOTwx@!{hhT2gcC&5+EkY$f&{PnS<5#U1bIEwnp+tnmoxM>MOpD!M z+|7>#3i0Aqu$HAS;E1cuUiE3;Bsf{dy5qG+Dr>9l>LOW_>dERk9LGsDWKUG*AE_=p z?&cpq`S7FF`G@D{Sy)|Pf{)nq8b743EuVTY_%PQgOlz&!KfSKdrxl< z$NefQ&>MHV5b$I-8rQbs+PK%PMfnqzmF7xgy1RwiJS}GOk_1BbhU{n*?T(IG>*7=? zr89A!Rv&--krUO0>0(h$hE{DPzBhZ)Jzk|xLB%s|;C$~b>-w(LR5=-0+(Aw2agIjO zt0tdKb5}ImQo7c0((R9P@|P%6yy+GhoOKp%*SRiIK$hk=eB1gunIkymDSb~AT85yx zd-K{l*I~6^wsN;fiMsI(+DXvSBgb_rTvQ+^!7Q-e+`uMd_J?heCZD2UGGaLy3Xzsv ztY>KAS3uZHJ2aC#eZBY^=aD)wu|qty8rYDh7J$86_Of9D{p+jH%V(^eEhMvD z>}OZcuR@l!utAYJyAhH(=5*NUgcIL)*mpV#MV@7gG-&<)QIHM7r52<^V~B!C=)yso zhujzWR|gTDU$G~3>?z(>PdiTO9w#F>I0^^X5_hdK^T=;{g0ef#_%`Wa(dCXviq55Y zzZ{IaWC!Skq&WFjUJ)^A62{ithC-59{5LApgK*W_j7_X0&&NZ$kk;7d|NYA#f2p~6 zq0wAlo#X8UV%6(j413|^LCKHnUDY|cWQKBi+KQ(4_z>9m;5h?t!t9Dn>kzgH(y7^*)>RfaIS(POrfyWMn~ z|D}Etv*P2g;BvtymD$%2UvEqs;wUD`VX_;eJ2QCjeOXUZXV5`ZG2I~xZES$-j>o>Q z-llWDYMpb7`5nGVId-+fM_Sw`yt+KRj(DKyD#H_YnG<2syM0q#cA_6V;Qct$eh=)k z7hg684sOt7M=S{qcWPO7n~YFqm>S9!jWXk2+uFFdX}A}8O@_Ib%oCzq`a14_Z`XSW zjRZ0;i36MNW^}S(C47F&XsI?>P4ir{g^B8))4x99OEgl1eKLkyG7Z^y(z)Pc)Xn zBNMW0&zN{OQCn6U@t%ZScIiivHRsAMec7ishl*3r!(BYF-_CyjCoFe7W;^@#$paet z*3y5;yYQPnF$sKx2rSBcRGQrF!_&0LK6}6rz)>rUv9J-BzN7r4nBSR;_hQP2>T>oJ ze(rd5Lz;F}5%$3YCI*@rV3yO5O~wa&xbWf<>O{^qy47cyqLlN8$>6}S$p_dSl;Qvk zL8V^CCng8Da+Sp^_4cYDl-iy*1Eqn!W#ESHwFryM02@dMmY>))F9cvykdEV<_!~i)wkEn zMN?r`XjYJuoGCX;Ovt3bhT&)h2x_`=_@L=Kj+kp1dXWZ<6nypf753J29XnZ$$WCTP z5KZ$y;6sDdakFoJCxZyCiGTW@#}ZE4vjj`wNW+PQcmTIlAr8Vj&L#>Q$6Zmzyk!3UK-*?6p#;w6 z6SR59HlILV`{on3J_rsOhy5yDguDT4TP~n9rkGO@c6Ny|#4yGaSJlZ>l1@jOtjF2_ z^rV!t+1utlNFgRM2K+pDu*pW)%}d3Yg5p7a4WeuuK1h37jfMi5JRoz4U|Cv2)bO7u z?`~LbGP#<3=8{?+t$P0z;BnNnlj?12?p+@ z1*#zd7kbVASQzy=QxE$_&SjP%Ymlka9xpRLdmB3hfx;}Ewb4w@HBPEw6;lFFxNoI- zQ{SIg`!%5@MaqrA?enGHTbo+R?t@it{@Tto2}QQMxJb=47{nN|Ym(NgKe>&(`nrlT@_eL*PwyPlrlIQ;-;*!LhBhkIP%sMuRTavG( zni6)L*P;1iCSTmbjU)<#hKRk|k-vj=HtZm69TsbYjcA($$3dP= zJ8o#&!G)=&*AtI?)m<{Gqr)}{@ET8FNHh2{ko&-5GmoiDo@MT=_fx5~ZoPUC_~JIU zISA4vJ(3jFou`#2Y9U!;^rAR4bqX}uK}j?gQOCXHYJn|isFj5wQpeMmN0~7b#W?e> z{lZ|>phBWKnDDG@>CW-$uw-9DW;BXPaV1&jrmWh>8spSZuX6zog>hjl6;eJFX^G0%n)Ub~M#c;$1Huy<;(~uRX8S{*r_gao_ zq)uuoc%M&97NOpT`RHq-n7{hN!KRgsM$5JM>zd8hg}OTrPh0J;*7r*ybftuBd~?04 zWcN1WsT?F8J~5rF)!frklRGffMmlC|8dG_@VSq!E4d+`q7tz+nYv~!DgTE7Ft7cY~ zY1~~@=wij9X{jQU6#AN!7vrJJp-iz8x~m5Y&;Nn(T;;nN;4~Vw%}rBO{}n75PjuM( zgtRl+^-PyQ9^C$nVE;5nD#A2pUvkAnpiE3|O0cF+LcDg_A&?(IoaIX)K7-^BrT6M$ z2?RAADm0T!-IPGh`SOrbPss3m@?C(UYbRZlXGUq+NbA;;!d}xmiUq!%7JQgN*#FOu z`oJkPIvb-K%r{mv{lRSc+Z3AyMfo;8TB68j4tjDQf8{|BlUANG3jR1*6>U-RdT)y- z?_a0yBOh;yTC{`d*y9KMrhDleeMFhzzzmk|GAy%~3jGI8M~ vK5b!+vtv3dMnKek_|YOKhd=)Z(DqKH literal 0 HcmV?d00001 diff --git a/i18n/gl.po b/i18n/gl.po new file mode 100644 index 0000000..7a47a0c --- /dev/null +++ b/i18n/gl.po @@ -0,0 +1,492 @@ +# Galician translation of GNU recode +# Copyright (C) 2000 Free Software Foundation, Inc. +# Jacobo Tarrío Barreiro , 2000. +# +msgid "" +msgstr "" +"Project-Id-Version: recode 3.5\n" +"POT-Creation-Date: 1999-05-18 08:46-0400\n" +"PO-Revision-Date: 2000-01-24 13:32+0100\n" +"Last-Translator: Jacobo Tarrío Barreiro \n" +"Language-Team: Galician \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" + +#. Dump all characters. +#: src/debug.c:287 +msgid "UCS2 Mne Description\n\n" +msgstr "UCS2 Mne Descripción\n\n" + +#: src/main.c:140 +msgid "No error" +msgstr "Sen erros" + +#: src/main.c:143 +msgid "Non canonical input" +msgstr "Sen saída normalizada" + +#: src/main.c:146 +msgid "Ambiguous output" +msgstr "Saída ambigua" + +#: src/main.c:149 +msgid "Untranslatable input" +msgstr "Entrada non traducible" + +#: src/main.c:152 +msgid "Invalid input" +msgstr "Entrada incorrecta" + +#: src/main.c:155 +msgid "System detected problem" +msgstr "O sistema detectou un problema" + +#: src/main.c:158 +msgid "Misuse of recoding library" +msgstr "Uso incorrecto da librería de recodificación" + +#: src/main.c:161 +msgid "Internal recoding bug" +msgstr "Erro interno na recodificación" + +#: src/main.c:206 +msgid "" +"This program is free software; you can redistribute it and/or modify\n" +"it under the terms of the GNU General Public License as published by\n" +"the Free Software Foundation; either version 2, or (at your option)\n" +"any later version.\n" +"\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License\n" +"along with this program; if not, write to the Free Software Foundation,\n" +"Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" +msgstr "" +"Este programa é software libre; pode redistribuilo e/ou modificalo\n" +"baixo os termos da Licencia Pública Xeral de GNU tal como foi publicada\n" +"pola Free Software Foundation; xa a versión 2, ou (á súa elección)\n" +"calqueira versión posterior.\n" +"\n" +"Este programa é distribuido coa esperanza de que sexa útil, pero\n" +"SEN NINGUNHA GARANTÍA; nin sequera a garantía implícita de COMERCIABILIDADE\n" +"ou APTITUDE PARA UN FIN EN PARTICULAR. Vexa a Licencia Pública Xeral de\n" +"GNU para ter máis detalles.\n" +"\n" +"Debería ter recibido unha copia da Licencia Pública Xeral de GNU con\n" +"este programa; se non é o caso, escriba á Free Software Foundation, Inc.,\n" +"59 Temple Place - Suite 330, Boston, MA 02111-1307, EE.UU.\n" + +#: src/main.c:231 +#, c-format +msgid "Try `%s %s' for more information.\n" +msgstr "Escriba `%s %s' para obter máis información.\n" + +#: src/main.c:235 +msgid "Free `recode' converts files between various character sets and surfaces.\n" +msgstr "O `recode' libre convirte ficheiros entre varios xogos de caracteres e superficies.\n" + +#: src/main.c:239 +#, c-format +msgid "\nUsage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" +msgstr "\nUso: %s [OPCIÓN]... [ [XOGO-DE-CARACTERES] | PETICIÓN [FICHEIRO]... ]\n" + +#: src/main.c:242 +msgid "" +"\n" +"If a long option shows an argument as mandatory, then it is mandatory\n" +"for the equivalent short option also. Similarly for optional arguments.\n" +msgstr "" +"\n" +"Se unha opción longa amosa un parámetro como obrigatorio, entón tamén é\n" +"obrigatorio para a opción curta equivalente. Do mesmo xeito para parámetros\n" +"opcionais.\n" + +#: src/main.c:248 +msgid "" +"\n" +"Listings:\n" +" -l, --list[=FORMAT] list one or all known charsets\n" +" -k, --known=PAIRS restrict charsets according to known PAIRS list\n" +" -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" +" -F, --freeze-tables write out a C module holding all tables\n" +" -T, --find-subsets report all charsets being subset of others\n" +" -C, --copyright display Copyright and copying conditions\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +"Listados:\n" +" -l, --list[=FORMATO] listar un ou tódolos xogos de caracteres coñecidos\n" +" -k, --known=PARES restrinxi-los xogos de acordo coa lista de PARES\n" +" coñecidos\n" +" -h, --header[=[LN/]NOME] escribi-la táboa NOME na saída estándar usando\n" +" LN, e logo sair\n" +" -F, --freeze-tables escribir un módulo en C que contén tódalas táboas\n" +" -T, --find-subsets informar dos xogos que son subconxuntos doutros\n" +" -C, --copyright amosa-lo copyright e as condicións de copia\n" +" --help amosar esta axuda e sair\n" +" --version amosar información sobre a versión e sair\n" + +#: src/main.c:261 +msgid "" +"\n" +"Operation modes:\n" +" -v, --verbose explain sequence of steps and report progress\n" +" -q, --quiet, --silent inhibit messages about irreversible recodings\n" +" -f, --force force recodings even when not reversible\n" +" -t, --touch touch the recoded files after replacement\n" +" -i, --sequence=files use intermediate files for sequencing passes\n" +" --sequence=memory use memory buffers for sequencing passes\n" +msgstr "" +"\n" +"Modos de operación:\n" +" -v, --verbose explica-la secuencia de pasos e informar dos\n" +" progresos\n" +" -q, --quite, --silent inhibi-las mensaxes sobre recodificacións\n" +" irreversibles\n" +" -f, --force forza-las recodificacións incluso cando non son\n" +" reversibles\n" +" -t, --touch toca-los ficheiros recodificados despois de\n" +" cambialos\n" +" -i, --sequence=files usar ficheiros intermedios para pasos secuenciais\n" +" --sequence=memory usa-la memoria para pasos secuenciais\n" + +#: src/main.c:273 +msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" +msgstr " -p, --sequence=pipe usar canalizacións para pasos secuenciais\n" + +#: src/main.c:278 +msgid " -p, --sequence=pipe same as -i (on this system)\n" +msgstr " -p, --sequence=pipe o mesmo que -i (neste sistema)\n" + +#: src/main.c:283 +msgid "" +"\n" +"Fine tuning:\n" +" -s, --strict use strict mappings, even loose characters\n" +" -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" +" -S, --source[=LN] limit recoding to strings and comments as for LN\n" +" -c, --colons use colons instead of double quotes for diaeresis\n" +" -g, --graphics approximate IBMPC rulers by ASCII graphics\n" +" -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" +msgstr "" +"\n" +"Axustes finos:\n" +" -s, --strict usar mapeados estrictos, incluso perder caracteres\n" +" -d, --diacritics converter só diacríticos ou similares para HTML/LaTeX\n" +" -S, --source[=LN] limita-la recodificación a cadeas e comentarios para LN\n" +" -c, --colon usar dous puntos no canto de comiñas dobres para diérese\n" +" -g, --graphics aproxima-las liñas de IBMPC con gráficos ASCII\n" +" -x, --ignore=XOGO ignora-lo XOGO ao escoller unha rota de recodificación\n" + +#: src/main.c:294 +msgid "" +"\n" +"Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" +"FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" +msgstr "" +"\n" +"A opción -l sen FORMATO ou XOGO lista os xogos e superficies dispoñibles.\n" +"O FORMATO é `decimal', `octal', `hexadecimal' ou `full' (completo), ou unha\n" +"letra entre `dofh'.\n" + +#: src/main.c:302 +#, c-format +msgid "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n" +msgstr "A menos que se estableza a variable DEFAULT_CHARSET, XOGO é `%s' se non se indica o contrario.\n" + +#: src/main.c:308 +msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" +msgstr "XOGO non ten valor por defecto, defina a variable de contorno DEFAULT_CHARSET.\n" + +#: src/main.c:313 +msgid "" +"With -k, possible before charsets are listed for the given after CHARSET,\n" +"both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...'\n" +"and BEFs and AFTs being codes are given as decimal numbers.\n" +msgstr "" +"Con -k, os posibles xogos iniciais lístanse para o XOGO final indicado,\n" +"sendo os dous xogos tabulares, con PARES da forma `INI1:FIN1,INI2:FIN2,...'\n" +"e os códigos INI e FIN dándose coma números decimais.\n" + +#: src/main.c:318 +msgid "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" +msgstr "LN é unha linguaxe, pode ser `c', `perl' ou `po'; `c' por defecto.\n" + +#: src/main.c:321 +msgid "" +"\n" +"REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]...\n" +"ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER,\n" +"with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" +"charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a /\n" +"with an empty surface name means no surfaces at all. See the manual.\n" +msgstr "" +"\n" +"PETICIÓN é SUBPETICIÓN[,SUBPETICIÓN]...; SUBPETICIÓN é\n" +"CODIFICACIÓN[..CODIFICACIÓN]...; CODIFICACIÓN é [XOGO][/[SUPERFICIE]]...;\n" +"PETICIÓN adoita parecer INICIAL..FINAL, sendo INICIAL e FINAL uns xogos de\n" +"caracteres. Se non se indica un XOGO tómase o xogo normal; se non se indica\n" +"unha [/SUPERFICIE]... tómanse as superficies implicadas en XOGO; cunha /\n" +"cun nome de superficie baleiro non se toma ningunha superficie. Lea o manual.\n" + +#: src/main.c:329 +msgid "" +"\n" +"If none of -i and -p are given, presume -p if no FILE, else -i.\n" +"Each FILE is recoded over itself, destroying the original. If no\n" +"FILE is specified, then act as a filter and recode stdin to stdout.\n" +msgstr "" +"\n" +"Se non se indica -i nin -p, suponse -p se non se indica un FICHEIRO, senón -i.\n" +"Cada FICHEIRO recodifícase sobre si mesmo, destruíndose o orixinal. Se non\n" +"se indica un FICHEIRO, traballa coma un filtro e recodifica stdin a stdout.\n" + +#: src/main.c:335 +msgid "\nReport bugs to .\n" +msgstr "\nInforme dos erros en .\n" + +#: src/main.c:431 +#, c-format +msgid "Ambiguous sequence `%s'" +msgstr "Secuencia `%s' ambigua" + +#: src/main.c:435 +#, c-format +msgid "Unknown sequence `%s'" +msgstr "Secuencia `%s' descoñecida" + +#: src/main.c:465 src/main.c:523 +#, c-format +msgid "Ambiguous language `%s'" +msgstr "Linguaxe `%s' ambigua" + +#. -1 +#: src/main.c:469 src/main.c:527 +#, c-format +msgid "Unknown language `%s'" +msgstr "Linguaxe `%s' descoñecida" + +#: src/main.c:561 +#, c-format +msgid "Ambiguous format `%s'" +msgstr "Formato `%s' ambigua" + +#: src/main.c:565 +#, c-format +msgid "Unknown format `%s'" +msgstr "Formato `%s' descoñecido" + +#: src/main.c:622 +msgid "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" +msgstr "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" + +#: src/main.c:626 +msgid "" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Isto é software libre; vexa o código fonte polas condicións de copia. NON hai\n" +"garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA UN FIN DETERMINADO.\n" + +#: src/main.c:630 +msgid "\nWritten by Franc,ois Pinard .\n" +msgstr "\nEscrito por François Pinard .\n" + +#: src/main.c:775 +#, c-format +msgid "Deprecated syntax, please prefer `%s'" +msgstr "Sintaxe a estinguir, prefírese `%s'" + +#: src/main.c:781 +#, c-format +msgid "Erroneous request `%s'" +msgstr "Petición `%s' errónea" + +#: src/main.c:878 +#, c-format +msgid "Recoding %s..." +msgstr "Recodificando %s..." + +#: src/main.c:888 +msgid " done\n" +msgstr " feito\n" + +#: src/main.c:924 +#, c-format +msgid " failed: %s in %s..%s\n" +msgstr " fallou: %s en %s..%s\n" + +#: src/main.c:931 +#, c-format +msgid "%s failed: %s in %s..%s" +msgstr "%s fallou: %s en %s..%s" + +#: src/main.c:954 +#, c-format +msgid "%s in %s..%s" +msgstr "%s en %s..%s" + +#: src/names.c:317 +#, c-format +msgid "Charset %s already exists and is not %s" +msgstr "O xogo de caracteres %s xa existe e non é %s" + +#: src/names.c:819 +#, c-format +msgid "Cannot list `%s', no names available for this charset" +msgstr "Non se pode listar `%s', non hai nomes dispoñibles para este xogo" + +#. code counter +#. expected value for code counter +#. UCS-2 translation +#. insert a while line before printing +#. Print the long table according to explode data. +#: src/names.c:974 src/names.c:1020 +#, c-format +msgid "Dec Oct Hex UCS2 Mne %s\n" +msgstr "Dec Oct Hex UCS2 Mne %s\n" + +#: src/names.c:1039 +#, c-format +msgid "Sorry, no names available for `%s'" +msgstr "Síntoo, non hai nomes dispoñibles para `%s'" + +#: src/outer.c:95 +#, c-format +msgid "Resurfacer set more than once for `%s'" +msgstr "Aplicáronse superficies máis dunha vez para `%s'" + +#: src/outer.c:102 +#, c-format +msgid "Unsurfacer set more than once for `%s'" +msgstr "Quitáronse superficies máis dunha vez para `%s'" + +#: src/recode.c:115 src/recode.c:127 +msgid "Virtual memory exhausted" +msgstr "Memoria virtual esgotada" + +#: src/recode.c:155 +#, c-format +msgid "Codes %3d and %3d both recode to %3d" +msgstr "Ámbolos dous códigos %3d e %3d recodifícanse a %3d" + +#: src/recode.c:169 +#, c-format +msgid "No character recodes to %3d" +msgstr "Non hai caracteres que se recodifiquen a %3d" + +#: src/recode.c:170 +msgid "Cannot invert given one-to-one table" +msgstr "Non se pode inverti-la táboa un-a-un dada" + +#: src/recode.c:224 src/recode.c:236 +#, c-format +msgid "Following diagnostics for `%s' to `%s'" +msgstr "Seguen os diagnósticos para `%s' a `%s'" + +#: src/recode.c:229 src/recode.c:241 +#, c-format +msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" +msgstr "O par núm. %d: <%3d, %3d> entra en conflicto con <%3d, %3d>" + +#: src/recode.c:272 +msgid "Cannot complete table from set of known pairs" +msgstr "Non podo completa-la táboa dado o conxunto de pares coñecidos" + +#: src/recode.c:492 +msgid "Identity recoding, not worth a table" +msgstr "Recodificación identidade, non merece a pena facer unha táboa" + +#: src/recode.c:499 +msgid "Recoding is too complex for a mere table" +msgstr "A recodificación é demasiado complicada para unha simple táboa" + +#. Print the header of the header file. +#: src/recode.c:531 +#, c-format +msgid "%sConversion table generated mechanically by Free `%s' %s" +msgstr "%sTáboa de conversión xerada mecánicamente polo `%s' Libre %s" + +#: src/recode.c:533 +#, c-format +msgid "%sfor sequence %s.%s" +msgstr "%spara a secuencia %s.%s" + +#: src/recode.c:724 +msgid "No table to print" +msgstr "Non hai ningunha táboa que visualizar" + +#: src/request.c:35 +msgid "reversible" +msgstr "reversible" + +#: src/request.c:37 +#, c-format +msgid "%s to %s" +msgstr "%s a %s" + +#: src/request.c:38 src/request.c:40 +msgid "byte" +msgstr "byte" + +#: src/request.c:39 src/request.c:41 +msgid "ucs2" +msgstr "ucs2" + +#: src/request.c:39 src/request.c:41 +msgid "variable" +msgstr "variable" + +#: src/request.c:112 +msgid "*Unachievable*" +msgstr "*Inalcanzable*" + +#: src/request.c:114 +msgid "*mere copy*" +msgstr "*simple copia*" + +#: src/request.c:244 +msgid "Virtual memory exhausted!" +msgstr "¡Memoria virtual esgotada!" + +#: src/request.c:263 +msgid "Step initialisation failed" +msgstr "A inicialización do paso fallou" + +#: src/request.c:270 +msgid "Step initialisation failed (unprocessed options)" +msgstr "A inicialización do paso fallou (opcións sen procesar)" + +#: src/request.c:566 +#, c-format +msgid "Request: %s\n" +msgstr "Petición: %s\n" + +#: src/request.c:702 +#, c-format +msgid "Shrunk to: %s\n" +msgstr "Encollido a: %s\n" + +#: src/request.c:806 src/request.c:912 +#, c-format +msgid "Unrecognised surface name `%s'" +msgstr "Nome de superficie `%s' non recoñecido" + +#: src/request.c:884 +#, c-format +msgid "No way to recode from `%s' to `%s'" +msgstr "Non hay xeito de recodificar de `%s' a `%s'" + +#: src/request.c:992 +msgid "Expecting `..' in request" +msgstr "Esperábase un `..' na petición" + +#: src/task.c:751 src/task.c:915 +#, c-format +msgid "Child process wait status is 0x%0.2x" +msgstr "O estado de espera do proceso fillo é 0x%0.2x" diff --git a/i18n/recode.pot b/i18n/recode.pot index 9f44077..b6b31cc 100644 --- a/i18n/recode.pot +++ b/i18n/recode.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 1999-12-29 11:11-0500\n" +"POT-Creation-Date: 2000-06-28 15:16-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -14,46 +14,39 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: ENCODING\n" -#. Dump all characters. -#: src/debug.c:286 -msgid "" -"UCS2 Mne Description\n" -"\n" -msgstr "" - -#: src/main.c:140 +#: src/main.c:142 msgid "No error" msgstr "" -#: src/main.c:143 +#: src/main.c:145 msgid "Non canonical input" msgstr "" -#: src/main.c:146 +#: src/main.c:148 msgid "Ambiguous output" msgstr "" -#: src/main.c:149 +#: src/main.c:151 msgid "Untranslatable input" msgstr "" -#: src/main.c:152 +#: src/main.c:154 msgid "Invalid input" msgstr "" -#: src/main.c:155 +#: src/main.c:157 msgid "System detected problem" msgstr "" -#: src/main.c:158 +#: src/main.c:160 msgid "Misuse of recoding library" msgstr "" -#: src/main.c:161 +#: src/main.c:163 msgid "Internal recoding bug" msgstr "" -#: src/main.c:206 +#: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" @@ -70,35 +63,35 @@ msgid "" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" -#: src/main.c:231 +#: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "" -#: src/main.c:235 +#: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" -#: src/main.c:239 +#: src/main.c:241 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" -#: src/main.c:242 +#: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" -#: src/main.c:248 +#: src/main.c:250 msgid "" "\n" "Listings:\n" -" -l, --list[=FORMAT] list one or all known charsets\n" +" -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" @@ -109,7 +102,7 @@ msgid "" " --version output version information and exit\n" msgstr "" -#: src/main.c:261 +#: src/main.c:263 msgid "" "\n" "Operation modes:\n" @@ -121,15 +114,15 @@ msgid "" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" -#: src/main.c:273 +#: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr "" -#: src/main.c:278 +#: src/main.c:280 msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr "" -#: src/main.c:283 +#: src/main.c:285 msgid "" "\n" "Fine tuning:\n" @@ -141,24 +134,24 @@ msgid "" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" -#: src/main.c:294 +#: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" -#: src/main.c:302 +#: src/main.c:304 #, c-format msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n" msgstr "" -#: src/main.c:308 +#: src/main.c:310 msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" msgstr "" -#: src/main.c:313 +#: src/main.c:315 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " @@ -166,12 +159,12 @@ msgid "" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" -#: src/main.c:318 +#: src/main.c:320 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" -#: src/main.c:321 +#: src/main.c:323 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " @@ -184,7 +177,7 @@ msgid "" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" -#: src/main.c:329 +#: src/main.c:331 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" @@ -192,182 +185,193 @@ msgid "" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" -#: src/main.c:335 +#: src/main.c:337 msgid "" "\n" "Report bugs to .\n" msgstr "" -#: src/main.c:431 +#: src/main.c:433 #, c-format -msgid "Ambiguous sequence `%s'" +msgid "Sequence `%s' is ambiguous" msgstr "" -#: src/main.c:435 +#: src/main.c:437 #, c-format -msgid "Unknown sequence `%s'" +msgid "Sequence `%s' is unknown" msgstr "" -#: src/main.c:465 src/main.c:523 +#: src/main.c:467 src/main.c:525 #, c-format -msgid "Ambiguous language `%s'" +msgid "Language `%s' is ambiguous" msgstr "" #. -1 -#: src/main.c:469 src/main.c:527 +#: src/main.c:471 src/main.c:529 #, c-format -msgid "Unknown language `%s'" +msgid "Language `%s' is unknown" msgstr "" -#: src/main.c:561 +#: src/main.c:563 #, c-format -msgid "Ambiguous format `%s'" +msgid "Format `%s' is ambiguous" msgstr "" -#: src/main.c:565 +#: src/main.c:567 #, c-format -msgid "Unknown format `%s'" +msgid "Format `%s' is unknown" +msgstr "" + +#: src/main.c:624 +msgid "Written by Franc,ois Pinard .\n" msgstr "" -#: src/main.c:622 +#: src/main.c:627 msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" -#: src/main.c:626 +#: src/main.c:631 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" -#: src/main.c:630 -msgid "" -"\n" -"Written by Franc,ois Pinard .\n" +#: src/main.c:672 +#, c-format +msgid "Symbol `%s' is unknown" +msgstr "" + +#: src/main.c:712 src/main.c:726 +#, c-format +msgid "Charset `%s' is unknown or ambiguous" +msgstr "" + +#: src/main.c:757 +msgid "Required argument is missing" msgstr "" -#: src/main.c:777 +#: src/main.c:799 #, c-format -msgid "Deprecated syntax, please prefer `%s'" +msgid "Syntax is deprecated, please prefer `%s'" msgstr "" -#: src/main.c:783 +#: src/main.c:805 #, c-format -msgid "Erroneous request `%s'" +msgid "Request `%s' is erroneous" msgstr "" -#: src/main.c:881 +#: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "" -#: src/main.c:891 +#: src/main.c:913 msgid " done\n" msgstr "" -#: src/main.c:932 +#: src/main.c:954 #, c-format msgid " failed: %s in step `%s..%s'\n" msgstr "" -#: src/main.c:939 +#: src/main.c:961 #, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "" -#: src/main.c:962 +#: src/main.c:984 #, c-format msgid "%s in step `%s..%s'" msgstr "" -#: src/names.c:316 +#: src/names.c:341 #, c-format msgid "Charset %s already exists and is not %s" msgstr "" -#: src/names.c:818 +#: src/names.c:837 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" #. code counter #. expected value for code counter -#. UCS-2 translation #. insert a while line before printing #. Print the long table according to explode data. -#: src/names.c:973 src/names.c:1019 +#: src/names.c:990 src/names.c:1036 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "" -#: src/names.c:1038 +#: src/names.c:1055 #, c-format msgid "Sorry, no names available for `%s'" msgstr "" -#: src/outer.c:96 +#: src/outer.c:124 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "" -#: src/outer.c:103 +#: src/outer.c:132 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "" -#: src/recode.c:114 src/recode.c:126 +#: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "" -#: src/recode.c:154 -#, c-format +#: src/recode.c:155 +#, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "" -#: src/recode.c:168 -#, c-format +#: src/recode.c:169 +#, c-format, ycp-format msgid "No character recodes to %3d" msgstr "" -#: src/recode.c:169 +#: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "" -#: src/recode.c:223 src/recode.c:235 +#: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "" -#: src/recode.c:228 src/recode.c:240 +#: src/recode.c:229 src/recode.c:241 #, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "" -#: src/recode.c:271 +#: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "" -#: src/recode.c:489 +#: src/recode.c:490 msgid "Identity recoding, not worth a table" msgstr "" -#: src/recode.c:496 +#: src/recode.c:497 msgid "Recoding is too complex for a mere table" msgstr "" #. Print the header of the header file. -#: src/recode.c:528 +#: src/recode.c:529 #, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "" -#: src/recode.c:530 +#: src/recode.c:531 #, c-format msgid "%sfor sequence %s.%s" msgstr "" -#: src/recode.c:721 +#: src/recode.c:737 msgid "No table to print" msgstr "" @@ -400,43 +404,49 @@ msgstr "" msgid "*mere copy*" msgstr "" -#: src/request.c:243 +#: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "" -#: src/request.c:262 +#: src/request.c:265 msgid "Step initialisation failed" msgstr "" -#: src/request.c:269 +#: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "" -#: src/request.c:565 +#: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "" -#: src/request.c:717 +#: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "" -#: src/request.c:821 src/request.c:927 +#: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "" -#: src/request.c:899 +#: src/request.c:903 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "" -#: src/request.c:1007 +#: src/request.c:1013 msgid "Expecting `..' in request" msgstr "" -#: src/task.c:766 src/task.c:939 +#: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "" + +#: src/testdump.c:293 +msgid "" +"UCS2 Mne Description\n" +"\n" +msgstr "" diff --git a/i18n/sl.mo b/i18n/sl.mo index b06e6cbac21a2ef0c7dd139e68fb5f85ebad8365..8fae35c3d04be74903d3698898dc62d5eb593153 100644 GIT binary patch literal 13392 zcmb`NTZ|mpS;vbcY_gr~0!hdfmb2Ly+net8%y@71*vq!Z?RDETJ(HQ9-K<9zQ{7!N zUES4Hy;a?9&nV&{NGK0^;Drqe0wUlciv$uv2rQ(1h`8)qUIIi2fkY4)0TLGpLL?OU z{m-fDY46%j1hicKx=x*Q>O0@%|6O|i`u*?v1&>dY>&Ljh@D9%#K>zDq{Kw}j4|(2o z=C!znDkDCv; z=XL0hGv0@ufPNk-K7SkfQRp8-e-ipP&}-0#U{3pf8Y+IKP(lqG2sdo$J)YBNq2hlH`WW;zsNVZ~P>$gJ z74##}e}zgeB@Xv>=qI5vsqa8B74N(G{lgfY&iyEK8GHFKRQ9%ou)odyuR?#0`!D{4 z=Y0$Mm_cvw`_SW__h&qR>Iu*LC&o)C<;&cE8~Rh+{~}7f2>k~1Ec8PN>sjbEsGffg zD!F|XDt^BP6~9MN+0i>rd)~XDk3!EuKLpkJHlUJ!kkc_#a{5^)CgXh(Dn0)u6w!Kr z0Bu6Q23>+a_N23)PeY~8TTuDk>rke6e*%SN?_Z#@w~u_v&3gtaJ@lZ6&ifgt?DtF1 zP3W6Yt^0V{ty_WOa-I);2Kp*g>%Ia-l-?gfOVGcAJ`DY5sPy<9sQksSx#YG8l|2Sf zMD5*zJ_7wEXchW8RPy)+RQrDms{P-|!>6E6K(*gzpnm}kp%e61JL7pA(ffUbAo=|* zRPy@|sNVN5!jk+x4!r_hf}$Gl0Lm2a*PxpBb*SX@_fXm6yI}gg*ufJ}+1nYI(D|N% z>i&7?`=BdOrdio*e|_Yy!Y0{`&i-C5#9`NKtflg+n^i(_GT67kW z$)1Fj*SPfgL9WYOSGf#V@sXXPKCi)5Rk5{L2r z`I0e}tZXWkY@CLju{r)svcTknLw_`4GV_9I5Su7Tc-HCpsoxm~X{J58+M^r#oirSW zoh;v`lf=^?9h)SM4$R!sBsG2%4g#~sx2vtS)ibMpEBK5y+Oo_fle81;TwHD5bUQ`i zFdUmS=pvOp`s2VfF0E~>m~;{$57Ry{ zwXKy#!xT%z&TZ`x?#D?QTwJ+Y+uW+RV8;!ZV&GOUgpE!Q3G1Bx@sUUVxQFfLi@{kyf#f6y-Mc zqb#W!vxU?nKSg(1;GX%>>`j@B35MbXdqRkn&}ySHVn$&0Lu{pNMhFqU45Oi@nk$Xf zI))UXhe}v2)%{M-j)_C7-~f$aH87n8(O%hf1I#cvuzH8*1UCp{KY~B|?vggt;%pRj z!o4uS6z!ogPRYVIdtro`THf3XFdodvSrM8a>l~|LHkOTBkBFqJh>@L(SJpSzYOUN1 zjnN?HEH*IV$PD7-R&0GC3&z$~23l)}FK*Ntn_JF+^*@quPA1pUbmMnANm^L6+sduc zYh*M%ZPvp`gLLQO&T8|_&1P+_E^cn&Xn3(Nv(*?(=~$cw6PK)3o4Fi<+o9d-iuT$A z91equT{m+Jx0jasX2lGXE@o_cNn|@x0Q z8Fq$t$wlGTVPly*=&lb!7$Jw^Sr}vaIJoA`Ht|-6)eqPl+_+>EGmkd0>I{}Kg7q;=^A=CVQK+11R zVPTqr$s9y>P~fB82hTy>2{?Mp4ByTLOtV5yBRmN!gZzaWcU}=Ra;l_)+*P z9wv_VIU_&If@4h=GQ2np zhJahXO@7m!?ClAB@4ba|X0=#}%&l!Rm-4%v^6~eZ)oOKl?wMxRn=9*=8_gGYs@3AFrj?2t&DqIg%FUfKJ6qeES86Nu zn{Kb-m81wRnh!E?jc9zS&dKW4YVAs^zF96=Ik_=wtajKqpDrW=3fE$j5S_>1b`i$H z;V25R2-(OaoA^;FpTEpTv)Mam3clbS!}bZ(TH#h73*4$S-WE(yqBc zb_KoXD{-OGT`n{VN6w=&9hU${*gXY2S)|Jjz?R|Zl6U`Q@;tl8kjP6Wh#%d@Wyp%+ zfUWj$hoEau4UnD4s?`%&$wLPBdZ6*yEZrd26B%DtY%XXK*F~-UfS2R?U37+d#9@cn zao_}mrgl$cC*8_9_5wzDyZ7XFEbfD;-1JHB$sxHKY2E1HNv}3+hx?OcVvzvowj0fj zMt;0ML5pu4cgR0Cu|OL)u`ul(634o_!Ja>f07$+loxWVZQrli_{d6%+=>?`1#8d1j z78qhaD}F4HC0!jw!7O_3rO6P`BdyrW(}|HErdcsNbSbn=r-UDsaZ(YCSRodZEN)3+ zWicm50FGxcCIMRW$i2{8aR~^*Bwl0R-2;WjOc@D4hhd6M#JoZ}+9iccfW6Gz@`*p$ z*dHTX<}BPku~1#Q?X4&TniFTccCl!iIG@J`tNycH?{d&FW}S@eYH%Ce-d@>SGG>iq z@R|}&NfSHP7P5nQ?2{`aAzzl72B5lAK|Mv3fi#;co{)&?#9sY2iJx*evsu+CAaj17(?bwhDT{4X=tHXvm4lgY1jGwNwi}H&O95`+QIl%fZtC2G}NmlLRZP5WV|9GN&eS z?oKLmY)X=y_O>i+qqQ-X%mb!?YeTQ4?3I7Y+A#)K(l2um7sxVOCfh>@`()_H`7r^n zMYc^i%}jH>L^FV}Gd@_h25IYf9e%C831l@}wM&iFM(Y(B)0IZ6S>M_+)0;ZPRRQZ*Ht_)iEl|mrYvz;XU{}NG4K0_CXp>$GlzQzB?f3s z;M_7;WrCTkR5vd+x6O+-Iz(oJ!aVGl)vy!9*fHok(n!`rOzne`rr)pOv1|e?iWd~w zJpB@0e~Op@hebhqy5z?PIGJ+Sd}6g!dg}>~4T=o(IF{VTkj)#ZTJvb)5Mz&Wj zab)vyqjhzCyJc$4SIo<`%}vDo%Cfa`W$so5V!udt3JoEJ(*H&+vjnH~0QpJh)(5aP z!aB)p=@qm^^*;gWd;ZiW^#QdzaE>*N4!*ZiO1^DKSogJICbx`bSMd`h^I{b!d4Rgg zCH1Gu=IL{$MPf(#y`e(FRLs^yweH!o^t>(s;%a5B)y%@u;^Jau@$3R^ukEdx%#vIN z-^A}vTBooFoh#v(;sTG0Jmzwc(XX;j$S*kCv8%ul(JXB!#tIB}0izhbJ44uxDT1=M zX9B=Dz=P4uB?IMIs+=RW1zzEbc#H+C`*E0|gdDwGa%+KSJN~{9ZJW%Mj2gqXrHl(J zFNNut+!wU81ypdm=TFEOyWagCJnp?LRIbp~7$uo2Gur_onlFyHQ33+DGB4@aWh<^A z%u^zKLTQ03AK+<1XK7YoVIq2sYkuS?AU&8}>W{_qR33|EzAfq7QkiIQ60hy5U~wUs zVcKrC+dzv@$qzi`Ol07yEyhed8MY}A5pnxq9C*jYt~cpqOP)f!WaVw7Ngp7tG`f|S zT$A8@5$n!YpDt~zw<;@SO{ym=mjRCRYRI0eEIeIVe9kO9cmAnoDhp37EHJUM8B9av zyz}!Gmnut(X7Snc3ya`ytF-E8<4P-6R+64K8)-O94$TJPAdN7b3j|&Us-t}1g?5{bI(0}uCjDIS=^GCRqC;8$(}dQRcKF8=p6TL z{_maYCdL~d#XK{#L zi5~7x!0W@CE&eyY_KeW5;NB$i`ll*ye&9@_l|JR|u{`$5?Z$Qq}{uG$uN9o2wuYi7rOmo=odB)Ek7!^9k#?lc*N zNBv+(`T|$F@5kYg7o`D5^?9NV$xQFj($0cmNYi>RMCkdss8Uyy`L*e|&fbSC4(;>M zb-K0Ve1p4LyF~V&4=ZP1Z1rU5omvbQAMlWr)@3@9`QiQ9)1bi-b+Z=U=Y1)?4-KwX!K?lL#g-7gAHE#x`V%Osrl?!z02GIn; z$#|$#e-4Gy<5w{f)j-BbQCirH+7!?$}esmW$jwoCS_a~^g7c6h#}?Sr#$g}pfKaAwD_ z7`oRWG;!CGFVO~gds7_aNRIrzNwfn^N69JVFdRFx=N-n$8x%>Vn@;w_o;F)?o?iUi z_jb{BlW7w517J{=?d&g+Mlq8+VQK-Ajr6%sa~zAtbx>a9&n6Z*vRjz{Ul<-9pboV^ z^s$zve?-|sP>p{g3hmFM>t;RtJoUO|~@PrQs zGaVNB=y8ACD#6YQO%GQMNs`DaLmUK;NQQA3#o=IrRvW@r;E5_mvbL@m7z+V)>+lww zYtG*&MlEDGtH$kP)BqZYSQ{s#DnO>eQL323OM288!LaIftO?#DzXv3j^W<#ToFZ=v z#^IfTf4XeSwwumik`3KZsXW(L=fNG~9`YynX@zC6tVTPJMoAQF6XBHfm2?e!@G83Q zy8^r$wX3cAOZDs2UOZKBNzBIjlC?HTvr+1RCnVlk_&U*E=DZicnf3@jJAQH4Rwtae- zr$2A_vjWKE!F~E10Xo4H!0%euCsS1Vn>#*E<^hVSvf?04xQT-azk=V1Z5Ion&h_f= z{m7$QE~XXVp&Kqi5x0t_>aM9le?)k-U3*1+-_VLl)l(gs@`-Ghm$4G-$ngm_^Im;3 z=<=KBzR)_MSAV!q_|g$ZVfLhVd79|Y7F0Q^>ef!Pv3_tE;zjenXUxtT!65RxaUWNcF;J$K^OOXc_K~$y3@!{7 zalGD`zE`f(m-73;MCv;72js2*4CVc!40YW*(AukALEw&|M>s;{b>=NqK#@}@TY?SOSv)tNlqIudS${&pJlDpzl9V#gt?T69C0pc<8|(Kl ztliqb@^|k>ZYr)H|59*dF;sI{P-GQg5YdJt*w&JExwW^gK?=)+6}P&9Yt0^VL;?=? z&a)Z_Q62n4zZ0TGo1mi197uhBmU-ZFb1K$vS4xHvy(>^pd#&INbyBAV(0eVbObeIr zZ&PXX42bl}|H!o{9jVq-SAZ2RF>;AL#xtfJfaMB`aFB7J%&JKB1!g*oJwHX6lt;-J z+O&Y=LejEtlVY3em+H;>izHwEFdI+(a>*95_AZ#xLv3x=Z#37pS`A_&X~z2H+O>6S zmm8auQJb?z+Z*efBo!ED>-YuOfIZ)AB*STmPUvSjKN4p{RK!00BtQ&-`!GI(@Jkkv zL)?g=kqRS8hC0bYHhD`=_F2AvUwaon3J;Z+kg|ji_(fo;YUiQpQ_2owdSv}OxHVvo zOi3ImQ{VxQ=_mYsMrrPVc-I{7FfQ59-55ax@R-&VbN+5Nbp<+UmUBB=0BQffBclU>W2}85lyngA8 z`K3pSPP)e#713rt3M~FUP->j8fyH#chj0xIH5$e=j_L7PjEj;tzyu{Rg@sL)O9(NR zJ<}#YhWGnf#{C`YgZuoY2ln|ll5D^qx$zFX9ZcC3ZgdgYSU%|fWD9Rr59h9a|2kop zMt@Va%iS4AJ~WqbxRJM|7`7!;m?iKd`_40ox1|te0eBAPMH()6f~}@NgK`!=C`gqr zAA=e$ZBuBAWZwh$ST?|V6o?UlU17Hd4}{~B1PVJ zqvK^GjO~sDbZe&6y~Bhcq{Jf~L-Sw?C$5uYI$=cb(T!J2TlqBbYyN>PYVuanTgw== zf*P#vtBT^Cu2w6R%UiA5W^3{MN@MlfqPtnLH%t6BATV&%Qex~pnq9Hc)R?Y?t1)f! qDljF*O;S3L+A>FOUU0`(B?%CFER`i~G8(UF79`fTyg3U6VTkabudKP12TB4@DHj9@P4E5D#vek?xwE-EKCE zs2?W6LznT2!&P_+)?f<-K7%=|{~YNh)RA2kcpl;t zt-^j22}cNZ9SqfNq#?SAP(L3;s4l3=)h%%O?kxc!*TERYEYV+~eRK#BMW6}Yp%Tj{ zSxx?q&&h9NEZXE7EiTqLyPs+5QY3E6PGUp;OzQG)YC7f{wFYOt!(7i4zT6&P+Nn-_ z49i%0QZA=s!yXT~*ED5PJ25a{EXxILIl5SwTPT#PtXw)*smiC?SNSfUmRs48D>h#@ zgxTgc%e$t_^$0P?^^Bllap6ShQsA^~F4zOdvkjl+QBZGBIIL~Bj>qd3?{3Sf++F!0 z=g2oRMfo|;Qn!p6N1?)`>mK(5!?O%qx`i2eVfJ}g*LS|m&WE53l`@KK>FqTg|73Ni rZuo*TQ*@KAnHDcb=qhgu6#8Ewy*-09`NIJHGJ54XHBU4wGjQl1-@B1$ diff --git a/i18n/sl.po b/i18n/sl.po index dbf73b4..010027a 100644 --- a/i18n/sl.po +++ b/i18n/sl.po @@ -1,14 +1,14 @@ -# Conversion of files between different charsets and usages. +# -*- mode: po; coding: iso-latin-2; -*- Slovenian msg. catalog for GNU recode. # Copyright (C) 1996 Free Software Foundation, Inc. # Primoz Peterlin , 1996. # -# $Header: recode-3.4.2.sl.po,v 1.7 96/05/30 09:42:27 peterlin Exp $ +# $Id: recode-3.5.sl.po,v 1.2 1999/12/21 16:04:38 peterlin Exp peterlin $ # msgid "" msgstr "" -"Project-Id-Version: recode 3.4.2\n" +"Project-Id-Version: recode 3.5\n" "POT-Creation-Date: 1999-05-18 08:46-0400\n" -"PO-Revision-Date: 1996-05-28 21:38\n" +"PO-Revision-Date: 1999-12-21 17:01 MET\n" "Last-Translator: Primoz Peterlin \n" "Language-Team: Slovenian \n" "MIME-Version: 1.0\n" @@ -17,43 +17,40 @@ msgstr "" #. Dump all characters. #: src/debug.c:287 -msgid "" -"UCS2 Mne Description\n" -"\n" -msgstr "" +msgid "UCS2 Mne Description\n\n" +msgstr "UCS2 Mne Opis\n\n" #: src/main.c:140 msgid "No error" -msgstr "" +msgstr "Brez napak" #: src/main.c:143 msgid "Non canonical input" -msgstr "" +msgstr "Nekanonièen vhod" #: src/main.c:146 -#, fuzzy msgid "Ambiguous output" -msgstr "Dvoumen format ,%s'" +msgstr "Dvoumen izhod" #: src/main.c:149 msgid "Untranslatable input" -msgstr "" +msgstr "Neprevedljiv vhod" #: src/main.c:152 msgid "Invalid input" -msgstr "" +msgstr "Neveljaven vhod" #: src/main.c:155 msgid "System detected problem" -msgstr "" +msgstr "Te¾ave v sistemu" #: src/main.c:158 msgid "Misuse of recoding library" -msgstr "" +msgstr "Zloraba pretvorne knji¾nice" #: src/main.c:161 msgid "Internal recoding bug" -msgstr "" +msgstr "Notranja napaki pri pretvorbi" # POZOR!!! # Tole bi nujno moral dobiti v roke pravnik... @@ -74,37 +71,30 @@ msgid "" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "Ta program je prosta programska oprema; lahko ga redistribuirate in/ali\n" -"spreminjate po pogojih, doloèenih v ,,GNU General Public License'', izdani\n" -"pri Free Software Foundation; 2. izdaja (ali novej¹a, èe razpolagate z " -"njo).\n" +"spreminjate po pogojih, doloèenih v ,,GNU General Public License``, izdani\n" +"pri Free Software Foundation; 2. izdaja (ali novej¹a, èe razpolagate z njo).\n" "\n" -"Ta program se distribuira v upanju, da je uporaben, vendar BREZ " -"KAKR©NEGAKOLI\n" +"Ta program se distribuira v upanju, da je uporaben, vendar BREZ KAKR©NEGAKOLI\n" "JAMSTVA; vkljuèno z impliciranim jamstvom prodajnosti ali uporabnosti za\n" -"izbrani namen. Za podrobnosti si oglejte ,,GNU General Public License''.\n" +"izbrani namen. Za podrobnosti si oglejte ,,GNU General Public License``.\n" "\n" -"Izvod ,,GNU General Public License'' bi moral biti prilo¾en temu programu;\n" +"Izvod ,,GNU General Public License`` bi moral biti prilo¾en temu programu;\n" "èe ni, pi¹ite Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" "Boston, MA 02111-1307, USA.\n" #: src/main.c:231 #, c-format msgid "Try `%s %s' for more information.\n" -msgstr "Poskusite ,%s %s' za dodatne informacije.\n" +msgstr "Poskusite ,%s %s` za dodatne informacije.\n" #: src/main.c:235 -msgid "" -"Free `recode' converts files between various character sets and surfaces.\n" -msgstr "" +msgid "Free `recode' converts files between various character sets and surfaces.\n" +msgstr "Prosti ,recode` pretvarja datoteke med razliènimi kodnimi nabori in preèrkovanji.\n" #: src/main.c:239 -#, fuzzy, c-format -msgid "" -"\n" -"Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" -msgstr "" -"\n" -"Uporaba: %s [IZBIRA]... [NABOR]\n" +#, c-format +msgid "\nUsage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" +msgstr "\nUporaba: %s [IZBIRA]... [ [NABOR] | ZAHTEVA [DATOTEKA]... ]\n" #: src/main.c:242 msgid "" @@ -112,14 +102,16 @@ msgid "" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" +"\n" +"Èe je pri dolgi obliki izbire argument naveden kot obvezen, velja\n" +"obveza tudi za kratko obliko. Podobno tudi za neobvezne argumente.\n" #: src/main.c:248 msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets\n" -" -k, --known=PAIRS restrict charsets according to known PAIRS " -"list\n" +" -k, --known=PAIRS restrict charsets according to known PAIRS list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" @@ -127,6 +119,16 @@ msgid "" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" +"\n" +"Seznami:\n" +" -l, --list[=OBLIKA] izpi¹i en ali vse kodirane nabore znakov\n" +" -k, --known=PARI izpi¹i nabore, ki ustrezajo podanim PAROM pretvorb\n" +" -h, --header[=[JEZIK/]IME] izpi¹i pretvorno tabelo z danim IMENOM v prog. JEZIKU\n" +" -F, --freeze-tables izpi¹i modul v C z vsemi pretvornimi tabelami\n" +" -T, --find-subsets poroèaj o vseh naborih, ki so podmno¾ica drugih\n" +" -C, --copyright izpi¹i dovoljenje za uporabo in raz¹irjanje\n" +" --help ta navodila\n" +" --version razlièica programa\n" #: src/main.c:261 msgid "" @@ -139,15 +141,23 @@ msgid "" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" +"\n" +"Naèini dela:\n" +" -v, --verbose med potekom razlagaj korake in komentiraj napredek\n" +" -q, --quiet, --silent brez opozoril o neobrnljivih pretvorbah\n" +" -f, --force pretvorbo izvedi, èetudi ni obrnljiva\n" +" -t, --touch pretvorjena datoteka naj nosi datum pretvorbe,\n" +" ne nastanka\n" +" -i, --sequence=files uporabi vmesne datoteke za zaporedne prehode\n" +" --sequence=memory med prehodi hrani besedilo v pomnilniku\n" #: src/main.c:273 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" -msgstr " -p, --sequence=pipe uporabi mehanizem ,pipe'\n" +msgstr " -p, --sequence=pipe uporabi cevovode za nizanje prehodov\n" #: src/main.c:278 -#, fuzzy msgid " -p, --sequence=pipe same as -i (on this system)\n" -msgstr " -p, --sequence=pipe isto kot -o (na tem sistemu)\n" +msgstr " -p, --sequence=pipe isto kot -i (na tem sistemu)\n" #: src/main.c:283 msgid "" @@ -160,6 +170,14 @@ msgid "" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" +"\n" +"Natanènej¹e nastavljanje:\n" +" -s, --strict uporabi strogo pretvorbo, celo na raèun izgube znakov\n" +" -d, --diacritics pretvori samo pregla¹ene in podobne znake za HTML/LaTeX\n" +" -S, --source[=JEZIK] omeji pretvorbe na nize in komentarje, kot v JEZIKU\n" +" -c, --colons nadomesti dierezo z dvopièjem, ne z dvojnim narekovajem\n" +" -g, --graphics semigrafiène znake s PC pribl. nadomestimo z znaki ASCII\n" +" -x, --ignore=NABOR pri pretvorbi se izogni navedenemu vmesnemu NABORU\n" #: src/main.c:294 msgid "" @@ -167,42 +185,51 @@ msgid "" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" +"\n" +"Izbira -l brez podane OBLIKE ali NABORA izpi¹e seznam vseh znanih kodnih naborov\n" +"in preèrkovalnih shem. OBLIKA je lahko ,decimal` (deseti¹ka), ,octal` (osmi¹ka),\n" +",hexadecimal` (¹estnajsti¹ka) ali ,full` (polna), ali ena od èrk ,dohf`.\n" #: src/main.c:302 #, c-format -msgid "" -"Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n" -msgstr "" +msgid "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n" +msgstr "Èe ni doloèena spremenljivka DEFAULT_CHARSET, je privzeti NABOR ,%s`.\n" #: src/main.c:308 msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" -msgstr "" +msgstr "NABOR nima privzete vrednosti; doloèite spremenljivko okolja DEFAULT_CHARSET.\n" #: src/main.c:313 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" -"both being tabular charsets, with PAIRS of the form " -"`BEF1:AFT1,BEF2:AFT2,...'\n" +"both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" +"Pri izbiri -k se izpi¹ejo vsi mo¾ni startni nabori za podani ciljni nabor.\n" +"Startni in ciljni nabor sta kodirana nabora znakov. PARI naj imajo obliko\n" +",,START1:CILJ1,START2:CILJ2...``, kjer so STARTn in CILJn deseti¹ke kode \n" +"znakov v startnem in ciljnem kodnem naboru.\n" #: src/main.c:318 -msgid "" -"LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" -msgstr "" +msgid "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" +msgstr "JEZIK je lahko ,c`, ,perl` ali ,po`; privzeto je ,c`.\n" #: src/main.c:321 msgid "" "\n" -"REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " -"ENCODING[..ENCODING]...\n" -"ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " -"BEFORE..AFTER,\n" +"REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]...\n" +"ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" -"charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " -"/\n" +"charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" +"\n" +"ZAHTEVEK ima obliko PODZAHTEVEK[,PODZAHTEVEK]...; PODZAHTEVEK ima obliko\n" +"KODIRANJE[,KODIRANJE]...; KODIRANJE ima obliko [NABOR][/[SHEMA]]. ZAHTEVEK\n" +"ima pogosto obliko PREJ..POTEM, kjer sta PREJ in POTEM kodirana nabora znakov.\n" +"Izpu¹èeni NABOR pomeni privzetega; izpu¹èena [/SHEMA] pomeni privzeto\n" +"preèrkovalno shemo za dani NABOR. Po¹evnica / brez sheme pomeni brez preèrkovalne\n" +"sheme. Podrobnosti so v priroèniku.\n" #: src/main.c:329 msgid "" @@ -211,76 +238,77 @@ msgid "" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" +"\n" +"Èe nista podana niti -i niti -p, se uporabi -p, kadar ni podana DATOTEKA, \n" +"sicer pa -i. Pretvorba vsake DATOTEKE se zapi¹e prek izvorne razlièice. Èe\n" +"DATOTEKA ni podana, recode deluje kot filter med standardnim vhodom in izhodom.\n" #: src/main.c:335 -msgid "" -"\n" -"Report bugs to .\n" -msgstr "" +msgid "\nReport bugs to .\n" +msgstr "\nSporoèila o napakah javite na .\n" #: src/main.c:431 #, c-format msgid "Ambiguous sequence `%s'" -msgstr "Dvoumno zaporedje ,%s'" +msgstr "Dvoumno zaporedje ,%s`" #: src/main.c:435 #, c-format msgid "Unknown sequence `%s'" -msgstr "Neznana sekvenca ,%s'" +msgstr "Neznano zaporedje ,%s`" #: src/main.c:465 src/main.c:523 -#, fuzzy, c-format +#, c-format msgid "Ambiguous language `%s'" -msgstr "Dvoumen nabor znakov ,%s'" +msgstr "Dvoumen jezik ,%s`" #. -1 #: src/main.c:469 src/main.c:527 -#, fuzzy, c-format +#, c-format msgid "Unknown language `%s'" -msgstr "Neznani nabor ,%s'" +msgstr "Neznan jezik ,%s`" #: src/main.c:561 #, c-format msgid "Ambiguous format `%s'" -msgstr "Dvoumen format ,%s'" +msgstr "Dvoumen format ,%s`" #: src/main.c:565 #, c-format msgid "Unknown format `%s'" -msgstr "Neznani format ,%s'" +msgstr "Neznan format ,%s`" #: src/main.c:622 -msgid "" -"\n" -"Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" -msgstr "" +msgid "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" +msgstr "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:626 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" +"To je prost program; pogoji, pod katerimi ga lahko uporabljate, razmno¾ujete\n" +"in raz¹irjate so navedeni v izvorni kodi. Za program ni NOBENEGA jamstva,\n" +"niti jamstev USTREZNOSTI ZA PRODAJO ali PRIMERNOSTI ZA UPORABO.\n" #: src/main.c:630 -msgid "" -"\n" -"Written by Franc,ois Pinard .\n" -msgstr "" +msgid "\nWritten by Franc,ois Pinard .\n" +msgstr "\nAvtor Franc,ois Pinard .\n" #: src/main.c:775 #, c-format msgid "Deprecated syntax, please prefer `%s'" -msgstr "" +msgstr "Neodobravana skladnja: prosimo, uporabljajte ,%s`" #: src/main.c:781 #, c-format msgid "Erroneous request `%s'" -msgstr "" +msgstr "Napaèen zahtevek ,%s`" #: src/main.c:878 #, c-format msgid "Recoding %s..." -msgstr "Pretvarjam %s..." +msgstr "Pretvarjamo %s..." #: src/main.c:888 msgid " done\n" @@ -289,17 +317,17 @@ msgstr " opravljeno\n" #: src/main.c:924 #, c-format msgid " failed: %s in %s..%s\n" -msgstr "" +msgstr " neuspe¹no: %s v %s..%s\n" #: src/main.c:931 #, c-format msgid "%s failed: %s in %s..%s" -msgstr "" +msgstr "%s neuspe¹no: %s v %s..%s" #: src/main.c:954 -#, fuzzy, c-format +#, c-format msgid "%s in %s..%s" -msgstr "Neznana sekvenca ,%s'" +msgstr "%s v %s..%s" #: src/names.c:317 #, c-format @@ -307,9 +335,9 @@ msgid "Charset %s already exists and is not %s" msgstr "Nabor %s ¾e obstaja in ni %s" #: src/names.c:819 -#, fuzzy, c-format +#, c-format msgid "Cannot list `%s', no names available for this charset" -msgstr "Izpis ,%s' ni mogoè, ISO 10604 ne doloèa imen za ta nabor" +msgstr "Izpis ,%s' ni mogoè, imen za ta nabor ni na voljo" #. code counter #. expected value for code counter @@ -317,28 +345,28 @@ msgstr "Izpis ,%s' ni mogo #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:974 src/names.c:1020 -#, fuzzy, c-format +#, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" -msgstr "dec oct hex ch %s\n" +msgstr "des osm Hex UCS2 Mne %s\n" #: src/names.c:1039 -#, fuzzy, c-format +#, c-format msgid "Sorry, no names available for `%s'" -msgstr "ISO 10646 ne doloèa imena za ,%s'" +msgstr "Imena za ,%s` niso na voljo" #: src/outer.c:95 #, c-format msgid "Resurfacer set more than once for `%s'" -msgstr "" +msgstr "Veè kot ena preèrkovalna shema uvedena za ,%s`" #: src/outer.c:102 #, c-format msgid "Unsurfacer set more than once for `%s'" -msgstr "" +msgstr "Veè kot ena preèrkovalna shema preklicana za ,%s`" #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" -msgstr "" +msgstr "Virtualni pomnilnik porabljen" #: src/recode.c:155 #, c-format @@ -360,16 +388,15 @@ msgid "Following diagnostics for `%s' to `%s'" msgstr "Sledi diagnostika za pretvorbo iz ,%s' v ,%s'" #: src/recode.c:229 src/recode.c:241 -#, fuzzy, c-format +#, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" -msgstr "Par ¹t. %d: { %3d, %3d } je v nesoglasju z { %3d, %3d }" +msgstr "Par ¹t. %d: <%3d, %3d> je v nesoglasju z <%3d, %3d>" #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "Iz mno¾ice znanih parov ni mogoèe dokonèati tabele" #: src/recode.c:492 -#, fuzzy msgid "Identity recoding, not worth a table" msgstr "Pretvorba je trivialna, nevredna tabele" @@ -379,14 +406,14 @@ msgstr "Pretvorba je prezapletena za tabelo" #. Print the header of the header file. #: src/recode.c:531 -#, fuzzy, c-format +#, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" -msgstr " Avtomatièno generirano z GNU %s %s.\n" +msgstr "%sPretvorna tabela mehanièno generirana s prostim ,%s` %s" #: src/recode.c:533 -#, fuzzy, c-format +#, c-format msgid "%sfor sequence %s.%s" -msgstr "Neznana sekvenca ,%s'" +msgstr "%sza zaporedje %s.%s" #: src/recode.c:724 msgid "No table to print" @@ -397,91 +424,71 @@ msgid "reversible" msgstr "obrnljivo" #: src/request.c:37 -#, fuzzy, c-format +#, c-format msgid "%s to %s" -msgstr "Neznana sekvenca ,%s'" +msgstr "%s v %s" #: src/request.c:38 src/request.c:40 msgid "byte" -msgstr "" +msgstr "bajt" #: src/request.c:39 src/request.c:41 msgid "ucs2" -msgstr "" +msgstr "UCS2" #: src/request.c:39 src/request.c:41 -#, fuzzy msgid "variable" -msgstr "obrnljivo" +msgstr "spremenljivo" #: src/request.c:112 msgid "*Unachievable*" -msgstr "" +msgstr "*Nedosegljivo*" #: src/request.c:114 msgid "*mere copy*" -msgstr "" +msgstr "*zgolj prepis*" #: src/request.c:244 msgid "Virtual memory exhausted!" -msgstr "" +msgstr "Virtualni pomnilnik porabljen!" #: src/request.c:263 msgid "Step initialisation failed" -msgstr "" +msgstr "Inicializacija koraka neuspe¹na" #: src/request.c:270 msgid "Step initialisation failed (unprocessed options)" -msgstr "" +msgstr "Inicializacija koraka neuspe¹na (nepredelane izbire)" #: src/request.c:566 #, c-format msgid "Request: %s\n" -msgstr "" +msgstr "Zahtevek: %s\n" #: src/request.c:702 #, c-format msgid "Shrunk to: %s\n" -msgstr "" +msgstr "Skrèeno v: %s\n" #: src/request.c:806 src/request.c:912 #, c-format msgid "Unrecognised surface name `%s'" -msgstr "" +msgstr "Neprepoznano ime preèrkovalne sheme ,%s`" #: src/request.c:884 -#, fuzzy, c-format +#, c-format msgid "No way to recode from `%s' to `%s'" -msgstr "Pretvorba iz %s v %s ni izvedljiva" +msgstr "Pretvorba iz ,%s` v ,%s` ni izvedljiva" #: src/request.c:992 msgid "Expecting `..' in request" -msgstr "" +msgstr "V zahtevku prièakujemo ,..`" #: src/task.c:751 src/task.c:915 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Èakalni status procesa potomca je 0x%0.2x" -#~ msgid "Hash stats: %d names using %d buckets out of %d\n" -#~ msgstr "" -#~ "Statistika za razpr¹itveno tabelo: %d imen porabilo %d od %d ko¹ev\n" - -#~ msgid "Currently, -s is ignored when -g is selected" -#~ msgstr "Za zdaj je izbira -s ignorirana, kadar je izbrano -g" - -#~ msgid "one to one" -#~ msgstr "eden v enega" - -#~ msgid "one to many" -#~ msgstr "eden v veè" - -#~ msgid "many to one" -#~ msgstr "veè v enega" - -#~ msgid "many to many" -#~ msgstr "veè v veè" - #~ msgid " Each input char transforms into an output string,\n" #~ msgstr " Vsak vhodni znak se preslika v niz znakov,\n" @@ -518,6 +525,12 @@ msgstr " #~ msgid "Cannot auto check the ignored charset" #~ msgstr "Izpu¹èenega nabora ni mogoèe avtomatièno preveriti" +#~ msgid "Currently, -s is ignored when -g is selected" +#~ msgstr "Za zdaj je izbira -s ignorirana, kadar je izbrano -g" + +#~ msgid "Hash stats: %d names using %d buckets out of %d\n" +#~ msgstr "Statistika za razpr¹itveno tabelo: %d imen porabilo %d od %d ko¹ev\n" + #~ msgid "Internal error - strategy undecided" #~ msgstr "Interna napaka - neodloèen o strategiji" @@ -551,8 +564,7 @@ msgstr " #~ msgid " -o, --sequence=popen same as -i (on this system)\n" #~ msgstr " -o, --sequence=popen isto kot -I (na tem sistemu)\n" -#~ msgid "" -#~ " -o, --sequence=popen use popen machinery for sequencing passes\n" +#~ msgid " -o, --sequence=popen use popen machinery for sequencing passes\n" #~ msgstr " -o, --sequence=popen uporabi mehanizem ,popen'\n" #~ msgid "" @@ -567,22 +579,19 @@ msgstr " #~ "FILE is specified, then act as a filter and recode stdin to stdout.\n" #~ msgstr "" #~ " -q, --quiet, --silent brez sporoèil o neobrnljivih pretvorbah\n" -#~ " -s, --strict striktna pretvorba, tudi na ¹kodo izgubljenih " -#~ "znakov\n" -#~ " -t, --touch konèna datoteka naj nosi datum pretvorbe, ne " -#~ "nastanka\n" +#~ " -s, --strict striktna pretvorba, tudi na ¹kodo izgubljenih znakov\n" +#~ " -t, --touch konèna datoteka naj nosi datum pretvorbe, ne nastanka\n" #~ " -v, --verbose z razlago poteka pretvorbe\n" #~ " -x, --ignore=NABOR izpusti NABOR pri izbiri poti pretvorbe\n" #~ "\n" -#~ "Èe ni podan -i, -o, ali -p, se privzame -p, kadar ni podana DATOTEKA, sicer " -#~ "-i.\n" +#~ "Èe ni podan -i, -o, ali -p, se privzame -p, kadar ni podana DATOTEKA, sicer -i.\n" #~ "Vsaka DATOTEKA se pretvori èez samo sebe in unièi izvirnik. Èe DATOTEKA\n" #~ "ni podana, deluje kot filter in pretvarja podatke z vhoda na izhod.\n" #~ msgid "BEFORE and AFTER both default to `%s' when needed.\n" #~ msgstr "Èe nabor PREJ ali POTEM ni podan, se nadomesti z ,%s'\n" -# POZOR +#~ # POZOR #~ msgid "" #~ "Mandatory or optional arguments to long options are mandatory or optional\n" #~ "for short options too.\n" @@ -597,12 +606,10 @@ msgstr " #~ "FORMAT is a word among decimal, octal, hexadecimal or full (which may be\n" #~ "abbreviated to one of `dohf'), it defaults to just the canonical name.\n" #~ "With -k, possible before charsets are listed for the given after CHARSET,\n" -#~ "both being RFC1345 charsets, with PAIRS of the form " -#~ "`BEF1:AFT1,BEF2:AFT2,...\n" +#~ "both being RFC1345 charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...\n" #~ "and BEFs and AFTs being codes. All codes are given as decimal numbers.\n" #~ msgstr "" -#~ "Argumenti, ki so obvezni za dolge oblike izbir so obvezni tudi za kratke " -#~ "oblike,\n" +#~ "Argumenti, ki so obvezni za dolge oblike izbir so obvezni tudi za kratke oblike,\n" #~ "in enako velja za neobvezne argumente.\n" #~ "\n" #~ " -C, --copyright obvestilo avtorskih pravicah\n" @@ -612,18 +619,14 @@ msgstr " #~ " --help ta navodila\n" #~ " --version verzija programa\n" #~ "\n" -#~ "FORMAT izpisa je eden od naslednjih: decimal, octal, hexadecimal ali full " -#~ "(mo¾na\n" -#~ "je okraj¹ava na prvo èrko: dohf), privzeta izbira je samo kanonièno ime " -#~ "nabora.\n" +#~ "FORMAT izpisa je eden od naslednjih: decimal, octal, hexadecimal ali full (mo¾na\n" +#~ "je okraj¹ava na prvo èrko: dohf), privzeta izbira je samo kanonièno ime nabora.\n" #~ "With -k, possible before charsets are listed for the given after CHARSET,\n" -#~ "both being RFC1345 charsets, with PAIRS of the form " -#~ "`BEF1:AFT1,BEF2:AFT2,...\n" +#~ "both being RFC1345 charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...\n" #~ "and BEFs and AFTs being codes. All codes are given as decimal numbers.\n" #~ msgid "" -#~ "Option -l with no FORMAT nor CHARSET list all charsets, also see the " -#~ "Texinfo\n" +#~ "Option -l with no FORMAT nor CHARSET list all charsets, also see the Texinfo\n" #~ "documentation. My preferred charsets are (each user has preferences):\n" #~ "\n" #~ " ascii-bs ASCII (7-bit), using backspace to apply diacritics\n" @@ -632,10 +635,8 @@ msgstr " #~ " latin1 ISO Latin-1 8-bit extension of ASCII\n" #~ " texte Easy French convention for transmitting email messages\n" #~ msgstr "" -#~ "Izbira -l brez podanih FORMAT ali NABOR dá seznam vseh naborov, oglejte si " -#~ "¹e\n" -#~ "dokumentacijo v Texinfo. Moji priljubljeni nabori (vsak uporabnik ima " -#~ "svoje):\n" +#~ "Izbira -l brez podanih FORMAT ali NABOR dá seznam vseh naborov, oglejte si ¹e\n" +#~ "dokumentacijo v Texinfo. Moji priljubljeni nabori (vsak uporabnik ima svoje):\n" #~ "\n" #~ " ascii-bs 7-bitni ASCII, z uporabo Backspace za tisk diakritiènih znakov\n" #~ " ibmpc 8-bitni nabor IBM-PC, zakljuèek vrstice CR LF\n" @@ -662,12 +663,20 @@ msgstr " #~ " -h, --header[=NAME] write C code with table NAME on stdout, then exit\n" #~ " -i, --sequence=files use intermediate files for sequencing passes\n" -#~ msgid "" -#~ "\n" -#~ "Usage: %s [OPTION]... [BEFORE]:[AFTER] [FILE]...\n" -#~ msgstr "" -#~ "\n" -#~ "Uporaba: %s [IZBIRA]... [PREJ]:[POTEM] [DATOTEKA]...\n" +#~ msgid "\nUsage: %s [OPTION]... [BEFORE]:[AFTER] [FILE]...\n" +#~ msgstr "\nUporaba: %s [IZBIRA]... [PREJ]:[POTEM] [DATOTEKA]...\n" + +#~ msgid "many to many" +#~ msgstr "veè v veè" + +#~ msgid "many to one" +#~ msgstr "veè v enega" + +#~ msgid "one to many" +#~ msgstr "eden v veè" + +#~ msgid "one to one" +#~ msgstr "eden v enega" #~ msgid "steps: %d" #~ msgstr "korakov: %d" diff --git a/install-sh b/install-sh index e843669..b41a245 100755 --- a/install-sh +++ b/install-sh @@ -118,8 +118,9 @@ if [ x"$dir_arg" != x ]; then if [ -d $dst ]; then instcmd=: + chmodcmd="" else - instcmd=mkdir + instcmd=$mkdirprog fi else @@ -162,8 +163,8 @@ dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then -defaultIFS=' -' +defaultIFS=' + ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" diff --git a/lib/ChangeLog b/lib/ChangeLog index 975509c..a615986 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,7 +1,7 @@ 1999-12-28 François Pinard * Makefile.am (INCLUDES): Do not use ../intl. - + 1999-12-14 François Pinard * Makefile.am: Adapt to the gettext scheme used in wdiff. @@ -17,7 +17,8 @@ * alloca.c, malloc.c, realloc.c: New files, from elsewhere. * Makefile.am (EXTRA_DIST): Distribute them. (libreco_a_LIBADD): Uncomment. - Reported by Alan J. Flavell, Alexandre Oliva and Peter Turcan. + Reported by Alan J. Flavell, Alexandre Oliva, Olivier Lecarme and + Peter Turcan. 1998-12-13 François Pinard diff --git a/lib/Makefile.in b/lib/Makefile.in index a14b835..2463b55 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -83,44 +83,25 @@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ CC = @CC@ CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ LEX = @LEX@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ MOFILES = @MOFILES@ -MSGFMT = @MSGFMT@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ RANLIB = @RANLIB@ U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ VERSION = @VERSION@ -l = @l@ AUTOMAKE_OPTIONS = gnits @@ -156,7 +137,7 @@ LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ HEADERS = $(noinst_HEADERS) DIST_COMMON = ChangeLog Makefile.am Makefile.in alloca.c gettext.c \ -malloc.c realloc.c strtol.c strtoul.c +strtol.c strtoul.c DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) diff --git a/lib/alloca.c b/lib/alloca.c index 10e5d65..b102eb1 100644 --- a/lib/alloca.c +++ b/lib/alloca.c @@ -161,8 +161,7 @@ static header *last_alloca_header = NULL; /* -> last alloca header. */ implementations of C, for example under Gould's UTX/32. */ pointer -alloca (size) - unsigned size; +alloca (unsigned size) { auto char probe; /* Probes stack depth: */ register char *depth = ADDRESS_FUNCTION (probe); diff --git a/lib/error.c b/lib/error.c index 83998bb..53b650c 100644 --- a/lib/error.c +++ b/lib/error.c @@ -1,5 +1,5 @@ /* Error handler for noninteractive utilities - Copyright (C) 1990,91,92,93,94,95,96,97,98 Free Software Foundation, Inc. + Copyright (C) 1990,91,92,93,94,95,96,97,98, 99 Free Software Foundation, Inc. This file is part of the GNU C Library. Its master source is NOT part of the C library, however. The master source lives in /gd/gnu/lib. @@ -152,7 +152,10 @@ error (status, errnum, message, va_alist) { #if defined HAVE_STRERROR_R || defined _LIBC char errbuf[1024]; - fprintf (stderr, ": %s", __strerror_r (errnum, errbuf, sizeof errbuf)); + /* Don't use __strerror_r's return value because on some systems + (at least DEC UNIX 4.0[A-D]) strerror_r returns `int'. */ + __strerror_r (errnum, errbuf, sizeof errbuf); + fprintf (stderr, ": %s", errbuf); #else fprintf (stderr, ": %s", strerror (errnum)); #endif @@ -227,7 +230,10 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist) { #if defined HAVE_STRERROR_R || defined _LIBC char errbuf[1024]; - fprintf (stderr, ": %s", __strerror_r (errnum, errbuf, sizeof errbuf)); + /* Don't use __strerror_r's return value because on some systems + (at least DEC UNIX 4.0[A-D]) strerror_r returns `int'. */ + __strerror_r (errnum, errbuf, sizeof errbuf); + fprintf (stderr, ": %s", errbuf); #else fprintf (stderr, ": %s", strerror (errnum)); #endif diff --git a/lib/getopt.c b/lib/getopt.c index 19f3f05..d176d3e 100644 --- a/lib/getopt.c +++ b/lib/getopt.c @@ -1,47 +1,40 @@ /* Getopt for GNU. - NOTE: getopt is now part of the C library, so if you don't know what - "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu - before changing it! + NOTE: The canonical source of this file is maintained with the GNU + C Library. Bugs can be reported to bug-glibc@gnu.org. - Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 + Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc. - the C library, however. The master source lives in /gd/gnu/lib. + This program is free software; you can 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. -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 distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -This program is free software; you can 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -USA. */ + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This tells Alpha OSF/1 not to define a getopt prototype in . Ditto for AIX 3.2 and . */ #ifndef _NO_PROTO -#define _NO_PROTO +# define _NO_PROTO #endif #ifdef HAVE_CONFIG_H -#include -#endif - -#if !defined (__STDC__) || !__STDC__ +# include +#else +# if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ -#ifndef const -#define const -#endif +# ifndef const +# define const +# endif +# endif #endif #include @@ -55,11 +48,11 @@ USA. */ it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 -#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 -#include -#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION -#define ELIDE_CODE -#endif +#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 +# include +# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +# define ELIDE_CODE +# endif #endif #ifndef ELIDE_CODE @@ -70,32 +63,26 @@ USA. */ #ifdef __GNU_LIBRARY__ /* Don't include stdlib.h for non-GNU C libraries because some of them contain conflicting prototypes for getopt. */ -#include -#include +# include +# include #endif /* GNU C library. */ #ifdef VMS -#include -#if HAVE_STRING_H - 0 -#include -#endif -#endif - -#if defined (WIN32) && !defined (__CYGWIN32__) -/* It's not Unix, really. See? Capital letters. */ -#include -#define getpid() GetCurrentProcessId() +# include +# if HAVE_STRING_H - 0 +# include +# endif #endif #ifndef _ /* This is for other GNU distributions with internationalized messages. When compiling libc, the _ macro is predefined. */ -#ifdef HAVE_LIBINTL_H -# include -# define _(msgid) gettext (msgid) -#else -# define _(msgid) (msgid) -#endif +# ifdef HAVE_LIBINTL_H +# include +# define _(msgid) gettext (msgid) +# else +# define _(msgid) (msgid) +# endif #endif /* This version of `getopt' appears to the caller like standard Unix `getopt' @@ -120,7 +107,7 @@ USA. */ Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ -char *optarg = NULL; +char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller @@ -141,7 +128,7 @@ int optind = 1; causes problems with re-calling getopt as programs generally don't know that. */ -int __getopt_initialized = 0; +int __getopt_initialized; /* The next char to be scanned in the option-element in which the last option character we returned was found. @@ -205,14 +192,22 @@ static char *posixly_correct; because there are many ways it can cause trouble. On some systems, it contains special magic macros that don't work in GCC. */ -#include -#define my_index strchr +# include +# define my_index strchr #else +# if HAVE_STRING_H +# include +# else +# include +# endif + /* Avoid depending on library functions or files whose names are inconsistent. */ -char *getenv (); +#ifndef getenv +extern char *getenv (); +#endif static char * my_index (str, chr) @@ -233,11 +228,11 @@ my_index (str, chr) #ifdef __GNUC__ /* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. That was relevant to code that was here before. */ -#if !defined (__STDC__) || !__STDC__ +# if (!defined __STDC__ || !__STDC__) && !defined strlen /* gcc with -traditional declares the built-in strlen to return int, and has done so at least since version 2.4.5. -- rms. */ extern int strlen (const char *); -#endif /* not __STDC__ */ +# endif /* not __STDC__ */ #endif /* __GNUC__ */ #endif /* not __GNU_LIBRARY__ */ @@ -264,8 +259,6 @@ static int nonoption_flags_len; static int original_argc; static char *const *original_argv; -extern pid_t __libc_pid; - /* Make sure the environment variable bash 2.0 puts in the environment is valid for the getopt call we must make sure that the ARGV passed to getopt is that one passed to the process. */ @@ -278,7 +271,9 @@ store_args_and_env (int argc, char *const *argv) original_argc = argc; original_argv = argv; } +# ifdef text_set_element text_set_element (__libc_subinit, store_args_and_env); +# endif /* text_set_element */ # define SWAP_FLAGS(ch1, ch2) \ if (nonoption_flags_len > 0) \ @@ -300,7 +295,7 @@ text_set_element (__libc_subinit, store_args_and_env); `first_nonopt' and `last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. */ -#if defined (__STDC__) && __STDC__ +#if defined __STDC__ && __STDC__ static void exchange (char **); #endif @@ -331,9 +326,9 @@ exchange (argv) nonoption_flags_len = nonoption_flags_max_len = 0; else { - memcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len); - memset (&new_str[nonoption_flags_max_len], '\0', - top + 1 - nonoption_flags_max_len); + memset (__mempcpy (new_str, __getopt_nonoption_flags, + nonoption_flags_max_len), + '\0', top + 1 - nonoption_flags_max_len); nonoption_flags_max_len = top + 1; __getopt_nonoption_flags = new_str; } @@ -386,7 +381,7 @@ exchange (argv) /* Initialize the internal data when the first call is made. */ -#if defined (__STDC__) && __STDC__ +#if defined __STDC__ && __STDC__ static const char *_getopt_initialize (int, char *const *, const char *); #endif static const char * @@ -442,11 +437,8 @@ _getopt_initialize (argc, argv, optstring) if (__getopt_nonoption_flags == NULL) nonoption_flags_max_len = -1; else - { - memcpy (__getopt_nonoption_flags, orig_str, len); - memset (&__getopt_nonoption_flags[len], '\0', - nonoption_flags_max_len - len); - } + memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), + '\0', nonoption_flags_max_len - len); } } nonoption_flags_len = nonoption_flags_max_len; @@ -538,11 +530,11 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) from the shell indicating it is not an option. The later information is only used when the used in the GNU libc. */ #ifdef _LIBC -#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ - || (optind < nonoption_flags_len \ - && __getopt_nonoption_flags[optind] == '1')) +# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ + || (optind < nonoption_flags_len \ + && __getopt_nonoption_flags[optind] == '1')) #else -#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') +# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') #endif if (nextchar == NULL || *nextchar == '\0') @@ -701,16 +693,18 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) else { if (opterr) - if (argv[optind - 1][1] == '-') - /* --option */ - fprintf (stderr, - _("%s: option `--%s' doesn't allow an argument\n"), - argv[0], pfound->name); - else - /* +option or -option */ - fprintf (stderr, - _("%s: option `%c%s' doesn't allow an argument\n"), - argv[0], argv[optind - 1][0], pfound->name); + { + if (argv[optind - 1][1] == '-') + /* --option */ + fprintf (stderr, + _("%s: option `--%s' doesn't allow an argument\n"), + argv[0], pfound->name); + else + /* +option or -option */ + fprintf (stderr, + _("%s: option `%c%s' doesn't allow an argument\n"), + argv[0], argv[optind - 1][0], pfound->name); + } nextchar += strlen (nextchar); diff --git a/lib/getopt.h b/lib/getopt.h index c454924..ac6728f 100644 --- a/lib/getopt.h +++ b/lib/getopt.h @@ -1,28 +1,27 @@ /* Declarations for getopt. - Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc. - - the C library, however. The master source lives in /gd/gnu/lib. - -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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -USA. */ + Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. + NOTE: The canonical source of this file is maintained with the GNU C Library. + Bugs can be reported to bug-glibc@gnu.org. + This program is free software; you can 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifndef _GETOPT_H -#define _GETOPT_H 1 + +#ifndef __need_getopt +# define _GETOPT_H 1 +#endif #ifdef __cplusplus extern "C" { @@ -59,6 +58,7 @@ extern int opterr; extern int optopt; +#ifndef __need_getopt /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of `struct option' terminated by an element containing a name which is @@ -82,11 +82,11 @@ extern int optopt; struct option { -#if defined (__STDC__) && __STDC__ +# if defined __STDC__ && __STDC__ const char *name; -#else +# else char *name; -#endif +# endif /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; @@ -96,40 +96,74 @@ struct option /* Names for the values of the `has_arg' field of `struct option'. */ -#define no_argument 0 -#define required_argument 1 -#define optional_argument 2 +# define no_argument 0 +# define required_argument 1 +# define optional_argument 2 +#endif /* need getopt */ + -#if defined (__STDC__) && __STDC__ -#ifdef __GNU_LIBRARY__ +/* Get definitions and prototypes for functions to process the + arguments in ARGV (ARGC of them, minus the program name) for + options given in OPTS. + + Return the option character from OPTS just read. Return -1 when + there are no more options. For unrecognized options, or options + missing arguments, `optopt' is set to the option letter, and '?' is + returned. + + The OPTS string is a list of characters which are recognized option + letters, optionally followed by colons, specifying that that letter + takes an argument, to be placed in `optarg'. + + If a letter in OPTS is followed by two colons, its argument is + optional. This behavior is specific to the GNU `getopt'. + + The argument `--' causes premature termination of argument + scanning, explicitly telling `getopt' that there are no more + options. + + If OPTS begins with `--', then non-option arguments are treated as + arguments to the option '\0'. This behavior is specific to the GNU + `getopt'. */ + +#if defined __STDC__ && __STDC__ +# ifdef __GNU_LIBRARY__ /* Many other libraries have conflicting prototypes for getopt, with differences in the consts, in stdlib.h. To avoid compilation errors, only prototype getopt for the GNU C library. */ -extern int getopt (int argc, char *const *argv, const char *shortopts); -#else /* not __GNU_LIBRARY__ */ +extern int getopt (int __argc, char *const *__argv, const char *__shortopts); +# else /* not __GNU_LIBRARY__ */ extern int getopt (); -#endif /* __GNU_LIBRARY__ */ -extern int getopt_long (int argc, char *const *argv, const char *shortopts, - const struct option *longopts, int *longind); -extern int getopt_long_only (int argc, char *const *argv, - const char *shortopts, - const struct option *longopts, int *longind); +# endif /* __GNU_LIBRARY__ */ + +# ifndef __need_getopt +extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts, + const struct option *__longopts, int *__longind); +extern int getopt_long_only (int __argc, char *const *__argv, + const char *__shortopts, + const struct option *__longopts, int *__longind); /* Internal only. Users should not call this directly. */ -extern int _getopt_internal (int argc, char *const *argv, - const char *shortopts, - const struct option *longopts, int *longind, - int long_only); +extern int _getopt_internal (int __argc, char *const *__argv, + const char *__shortopts, + const struct option *__longopts, int *__longind, + int __long_only); +# endif #else /* not __STDC__ */ extern int getopt (); +# ifndef __need_getopt extern int getopt_long (); extern int getopt_long_only (); extern int _getopt_internal (); +# endif #endif /* __STDC__ */ #ifdef __cplusplus } #endif -#endif /* _GETOPT_H */ +/* Make sure we later can get all the definitions and declarations. */ +#undef __need_getopt + +#endif /* getopt.h */ diff --git a/lib/getopt1.c b/lib/getopt1.c index b51be7f..9c82565 100644 --- a/lib/getopt1.c +++ b/lib/getopt1.c @@ -1,39 +1,36 @@ /* getopt_long and getopt_long_only entry points for GNU getopt. - Copyright (C) 1987,88,89,90,91,92,93,94,96,97 Free Software Foundation, Inc. - - the C library, however. The master source lives in /gd/gnu/lib. - -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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -USA. */ + Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98 + Free Software Foundation, Inc. + NOTE: The canonical source of this file is maintained with the GNU C Library. + Bugs can be reported to bug-glibc@gnu.org. + + This program is free software; you can 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include -#endif - -#include "getopt.h" - -#if !defined (__STDC__) || !__STDC__ +#else +#if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ #ifndef const #define const #endif #endif +#endif + +#include "getopt.h" #include @@ -46,7 +43,7 @@ USA. */ it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 -#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 +#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 #include #if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION #define ELIDE_CODE diff --git a/lib/malloc.c b/lib/malloc.c index b859e58..5e7674b 100644 --- a/lib/malloc.c +++ b/lib/malloc.c @@ -1,5 +1,5 @@ /* Work around bug on some systems where malloc (0) fails. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1998 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,8 +30,7 @@ char *malloc (); If N is zero, allocate a 1-byte block. */ char * -rpl_malloc (n) - size_t n; +rpl_malloc (size_t n) { if (n == 0) n = 1; diff --git a/lib/pathmax.h b/lib/pathmax.h index 74f5792..19d4304 100644 --- a/lib/pathmax.h +++ b/lib/pathmax.h @@ -1,5 +1,5 @@ /* Define PATH_MAX somehow. Requires sys/types.h. - Copyright (C) 1992 Free Software Foundation, Inc. + Copyright (C) 1992, 1999 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,38 +16,39 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _PATHMAX_H -#define _PATHMAX_H +# define _PATHMAX_H -#ifdef HAVE_UNISTD_H -#include -#endif +# ifdef HAVE_UNISTD_H +# include +# endif /* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define PATH_MAX but might cause redefinition warnings when sys/param.h is later included (as on MORE/BSD 4.3). */ -#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__)) -#include -#endif +# if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__)) +# include +# endif -#ifndef _POSIX_PATH_MAX -#define _POSIX_PATH_MAX 255 -#endif +# ifndef _POSIX_PATH_MAX +# define _POSIX_PATH_MAX 255 +# endif -#if !defined(PATH_MAX) && defined(_PC_PATH_MAX) -#define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) -#endif +# if !defined(PATH_MAX) && defined(_PC_PATH_MAX) +# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 \ + : pathconf ("/", _PC_PATH_MAX)) +# endif /* Don't include sys/param.h if it already has been. */ -#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN) -#include -#endif +# if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN) +# include +# endif -#if !defined(PATH_MAX) && defined(MAXPATHLEN) -#define PATH_MAX MAXPATHLEN -#endif +# if !defined(PATH_MAX) && defined(MAXPATHLEN) +# define PATH_MAX MAXPATHLEN +# endif -#ifndef PATH_MAX -#define PATH_MAX _POSIX_PATH_MAX -#endif +# ifndef PATH_MAX +# define PATH_MAX _POSIX_PATH_MAX +# endif #endif /* _PATHMAX_H */ diff --git a/lib/strtol.c b/lib/strtol.c index 6d5f4ac..0c9c276 100644 --- a/lib/strtol.c +++ b/lib/strtol.c @@ -1,7 +1,7 @@ -/* strtol - Convert string representation of a number into an integer value. - Copyright (C) 1991, 92, 94, 95, 96, 97 Free Software Foundation, Inc. +/* Convert string representation of a number into an integer value. + Copyright (C) 1991, 92, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc. 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. + Library. Bugs can be reported to bug-glibc@gnu.org. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the @@ -54,7 +54,7 @@ extern int errno; # include "../locale/localeinfo.h" #endif -/* Nonzero if we are defining `strtoul' or `strtouq', operating on +/* Nonzero if we are defining `strtoul' or `strtoull', operating on unsigned integers. */ #ifndef UNSIGNED # define UNSIGNED 0 @@ -64,72 +64,154 @@ extern int errno; #endif /* Determine the name. */ -#if UNSIGNED -# ifdef USE_WIDE_CHAR -# ifdef QUAD -# define strtol wcstouq +#ifdef USE_IN_EXTENDED_LOCALE_MODEL +# if UNSIGNED +# ifdef USE_WIDE_CHAR +# ifdef QUAD +# define strtol __wcstoull_l +# else +# define strtol __wcstoul_l +# endif # else -# define strtol wcstoul +# ifdef QUAD +# define strtol __strtoull_l +# else +# define strtol __strtoul_l +# endif # endif # else -# ifdef QUAD -# define strtol strtouq +# ifdef USE_WIDE_CHAR +# ifdef QUAD +# define strtol __wcstoll_l +# else +# define strtol __wcstol_l +# endif # else -# define strtol strtoul +# ifdef QUAD +# define strtol __strtoll_l +# else +# define strtol __strtol_l +# endif # endif # endif #else -# ifdef USE_WIDE_CHAR -# ifdef QUAD -# define strtol wcstoq +# if UNSIGNED +# ifdef USE_WIDE_CHAR +# ifdef QUAD +# define strtol wcstoull +# else +# define strtol wcstoul +# endif # else -# define strtol wcstol +# ifdef QUAD +# define strtol strtoull +# else +# define strtol strtoul +# endif # endif # else -# ifdef QUAD -# define strtol strtoq +# ifdef USE_WIDE_CHAR +# ifdef QUAD +# define strtol wcstoll +# else +# define strtol wcstol +# endif +# else +# ifdef QUAD +# define strtol strtoll +# endif # endif # endif #endif -/* If QUAD is defined, we are defining `strtoq' or `strtouq', +/* If QUAD is defined, we are defining `strtoll' or `strtoull', operating on `long long int's. */ #ifdef QUAD # define LONG long long -# undef LONG_MIN -# define LONG_MIN LONG_LONG_MIN -# undef LONG_MAX -# define LONG_MAX LONG_LONG_MAX -# undef ULONG_MAX -# define ULONG_MAX ULONG_LONG_MAX +# define STRTOL_LONG_MIN LONG_LONG_MIN +# define STRTOL_LONG_MAX LONG_LONG_MAX +# define STRTOL_ULONG_MAX ULONG_LONG_MAX + +/* The extra casts work around common compiler bugs, + e.g. Cray C 5.0.3.0 when t == time_t. */ +# ifndef TYPE_SIGNED +# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) +# endif +# ifndef TYPE_MINIMUM +# define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ + ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) \ + : (t) 0)) +# endif +# ifndef TYPE_MAXIMUM +# define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t))) +# endif + +# ifndef ULONG_LONG_MAX +# define ULONG_LONG_MAX TYPE_MAXIMUM (unsigned long long) +# endif +# ifndef LONG_LONG_MAX +# define LONG_LONG_MAX TYPE_MAXIMUM (long long int) +# endif +# ifndef LONG_LONG_MIN +# define LONG_LONG_MIN TYPE_MINIMUM (long long int) +# endif + # if __GNUC__ == 2 && __GNUC_MINOR__ < 7 /* Work around gcc bug with using this constant. */ static const unsigned long long int maxquad = ULONG_LONG_MAX; -# undef ULONG_MAX -# define ULONG_MAX maxquad +# undef STRTOL_ULONG_MAX +# define STRTOL_ULONG_MAX maxquad # endif #else # define LONG long -#ifndef ULONG_MAX -# define ULONG_MAX ((unsigned long) ~(unsigned long) 0) +# ifndef ULONG_MAX +# define ULONG_MAX ((unsigned long) ~(unsigned long) 0) +# endif +# ifndef LONG_MAX +# define LONG_MAX ((long int) (ULONG_MAX >> 1)) +# endif +# define STRTOL_LONG_MIN LONG_MIN +# define STRTOL_LONG_MAX LONG_MAX +# define STRTOL_ULONG_MAX ULONG_MAX #endif -#ifndef LONG_MAX -# define LONG_MAX ((long int) (ULONG_MAX >> 1)) + + +/* We use this code also for the extended locale handling where the + function gets as an additional argument the locale which has to be + used. To access the values we have to redefine the _NL_CURRENT + macro. */ +#ifdef USE_IN_EXTENDED_LOCALE_MODEL +# undef _NL_CURRENT +# define _NL_CURRENT(category, item) \ + (current->values[_NL_ITEM_INDEX (item)].string) +# define LOCALE_PARAM , loc +# define LOCALE_PARAM_DECL __locale_t loc; +#else +# define LOCALE_PARAM +# define LOCALE_PARAM_DECL #endif + +#if defined _LIBC || defined HAVE_WCHAR_H +# include #endif #ifdef USE_WIDE_CHAR -# include # include # define L_(Ch) L##Ch # define UCHAR_TYPE wint_t # define STRING_TYPE wchar_t -# define ISSPACE(Ch) iswspace (Ch) -# define ISALPHA(Ch) iswalpha (Ch) -# define TOUPPER(Ch) towupper (Ch) +# ifdef USE_IN_EXTENDED_LOCALE_MODEL +# define ISSPACE(Ch) __iswspace_l ((Ch), loc) +# define ISALPHA(Ch) __iswalpha_l ((Ch), loc) +# define TOUPPER(Ch) __towupper_l ((Ch), loc) +# else +# define ISSPACE(Ch) iswspace (Ch) +# define ISALPHA(Ch) iswalpha (Ch) +# define TOUPPER(Ch) towupper (Ch) +# endif #else -# if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) +# if defined STDC_HEADERS || (!defined isascii && !defined HAVE_ISASCII) # define IN_CTYPE_DOMAIN(c) 1 # else # define IN_CTYPE_DOMAIN(c) isascii(c) @@ -137,12 +219,20 @@ extern int errno; # define L_(Ch) Ch # define UCHAR_TYPE unsigned char # define STRING_TYPE char -# define ISSPACE(Ch) (IN_CTYPE_DOMAIN (Ch) && isspace (Ch)) -# define ISALPHA(Ch) (IN_CTYPE_DOMAIN (Ch) && isalpha (Ch)) -# define TOUPPER(Ch) (IN_CTYPE_DOMAIN (Ch) ? toupper (Ch) : (Ch)) +# ifdef USE_IN_EXTENDED_LOCALE_MODEL +# define ISSPACE(Ch) __isspace_l ((Ch), loc) +# define ISALPHA(Ch) __isalpha_l ((Ch), loc) +# define TOUPPER(Ch) __toupper_l ((Ch), loc) +# else +# define ISSPACE(Ch) (IN_CTYPE_DOMAIN (Ch) && isspace (Ch)) +# define ISALPHA(Ch) (IN_CTYPE_DOMAIN (Ch) && isalpha (Ch)) +# define TOUPPER(Ch) (IN_CTYPE_DOMAIN (Ch) ? toupper (Ch) : (Ch)) +# endif #endif -#ifdef __STDC__ +/* For compilers which are ansi but don't define __STDC__, like SGI + Irix-4.0.5 cc, also check whether PROTOTYPES is defined. */ +#if defined (__STDC__) || defined (PROTOTYPES) # define INTERNAL(X) INTERNAL1(X) # define INTERNAL1(X) __##X##_internal # define WEAKNAME(X) WEAKNAME1(X) @@ -156,6 +246,7 @@ extern int errno; #endif + /* Convert NPTR to an `unsigned long int' or `long int' in base BASE. If BASE is 0 the base is determined by the presence of a leading zero, indicating octal or a leading "0x" or "0X", indicating hexadecimal. @@ -164,11 +255,12 @@ extern int errno; one converted is stored in *ENDPTR. */ INT -INTERNAL (strtol) (nptr, endptr, base, group) +INTERNAL (strtol) (nptr, endptr, base, group LOCALE_PARAM) const STRING_TYPE *nptr; STRING_TYPE **endptr; int base; int group; + LOCALE_PARAM_DECL { int negative; register unsigned LONG int cutoff; @@ -180,8 +272,11 @@ INTERNAL (strtol) (nptr, endptr, base, group) int overflow; #ifdef USE_NUMBER_GROUPING +# ifdef USE_IN_EXTENDED_LOCALE_MODEL + struct locale_data *current = loc->__locales[LC_NUMERIC]; +# endif /* The thousands character of the current locale. */ - wchar_t thousands; + wchar_t thousands = L'\0'; /* The numeric grouping specification of the current locale, in the format described in . */ const char *grouping; @@ -194,9 +289,11 @@ INTERNAL (strtol) (nptr, endptr, base, group) else { /* Figure out the thousands separator character. */ - if (mbtowc (&thousands, _NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP), - strlen (_NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP))) <= 0) - thousands = (wchar_t) *_NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP); +# if defined _LIBC || defined _HAVE_BTOWC + thousands = __btowc (*_NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP)); + if (thousands == WEOF) + thousands = L'\0'; +# endif if (thousands == L'\0') grouping = NULL; } @@ -233,23 +330,19 @@ INTERNAL (strtol) (nptr, endptr, base, group) else negative = 0; - if (base == 16 && s[0] == L_('0') && TOUPPER (s[1]) == L_('X')) - s += 2; - - /* If BASE is zero, figure it out ourselves. */ - if (base == 0) - if (*s == L_('0')) - { - if (TOUPPER (s[1]) == L_('X')) - { - s += 2; - base = 16; - } - else - base = 8; - } - else - base = 10; + /* Recognize number prefix and if BASE is zero, figure it out ourselves. */ + if (*s == L_('0')) + { + if ((base == 0 || base == 16) && TOUPPER (s[1]) == L_('X')) + { + s += 2; + base = 16; + } + else if (base == 0) + base = 8; + } + else if (base == 0) + base = 10; /* Save the pointer so we can check later if anything happened. */ save = s; @@ -273,8 +366,8 @@ INTERNAL (strtol) (nptr, endptr, base, group) #endif end = NULL; - cutoff = ULONG_MAX / (unsigned LONG int) base; - cutlim = ULONG_MAX % (unsigned LONG int) base; + cutoff = STRTOL_ULONG_MAX / (unsigned LONG int) base; + cutlim = STRTOL_ULONG_MAX % (unsigned LONG int) base; overflow = 0; i = 0; @@ -314,25 +407,23 @@ INTERNAL (strtol) (nptr, endptr, base, group) `unsigned LONG int', but outside the range of `LONG int'. */ if (overflow == 0 && i > (negative - ? -((unsigned LONG int) (LONG_MIN + 1)) + 1 - : (unsigned LONG int) LONG_MAX)) + ? -((unsigned LONG int) (STRTOL_LONG_MIN + 1)) + 1 + : (unsigned LONG int) STRTOL_LONG_MAX)) overflow = 1; -#else - overflow |= negative; #endif if (overflow) { __set_errno (ERANGE); #if UNSIGNED - return ULONG_MAX; + return STRTOL_ULONG_MAX; #else - return negative ? LONG_MIN : LONG_MAX; + return negative ? STRTOL_LONG_MIN : STRTOL_LONG_MAX; #endif } /* Return the result of the appropriate sign. */ - return (negative ? -i : i); + return negative ? -i : i; noconv: /* We must handle a special case here: the base is 0 or 16 and the @@ -340,12 +431,14 @@ noconv: hexadecimal digits. This is no error case. We return 0 and ENDPTR points to the `x`. */ if (endptr != NULL) - if (save - nptr >= 2 && TOUPPER (save[-1]) == L_('X') - && save[-2] == L_('0')) - *endptr = (STRING_TYPE *) &save[-1]; - else - /* There was no number to convert. */ - *endptr = (STRING_TYPE *) nptr; + { + if (save - nptr >= 2 && TOUPPER (save[-1]) == L_('X') + && save[-2] == L_('0')) + *endptr = (STRING_TYPE *) &save[-1]; + else + /* There was no number to convert. */ + *endptr = (STRING_TYPE *) nptr; + } return 0L; } @@ -369,10 +462,11 @@ INT #ifdef weak_function weak_function #endif -strtol (nptr, endptr, base) +strtol (nptr, endptr, base LOCALE_PARAM) const STRING_TYPE *nptr; STRING_TYPE **endptr; int base; + LOCALE_PARAM_DECL { - return INTERNAL (strtol) (nptr, endptr, base, 0); + return INTERNAL (strtol) (nptr, endptr, base, 0 LOCALE_PARAM); } diff --git a/lib/strtoul.c b/lib/strtoul.c index 715ba30..298ae9e 100644 --- a/lib/strtoul.c +++ b/lib/strtoul.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1999 Free Software Foundation, Inc. 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. @@ -17,6 +17,6 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#define UNSIGNED 1 +#define UNSIGNED 1 #include diff --git a/lib/xalloc.h b/lib/xalloc.h index 3f8d779..8668e19 100644 --- a/lib/xalloc.h +++ b/lib/xalloc.h @@ -1,21 +1,87 @@ -#ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () +/* xalloc.h -- malloc with out-of-memory checking + Copyright (C) 1990-1998, 1999 Free Software Foundation, Inc. + + This program is free software; you can 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef XALLOC_H_ +# define XALLOC_H_ + +# ifndef PARAMS +# if defined PROTOTYPES || (defined __STDC__ && __STDC__) +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +# endif + +# ifndef __attribute__ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__ +# define __attribute__(x) +# endif +# endif + +# ifndef ATTRIBUTE_NORETURN +# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__)) # endif -#endif /* Exit value when the requested amount of memory is not available. - The caller may set it to some other value. */ + It is initialized to EXIT_FAILURE, but the caller may set it to + some other value. */ extern int xalloc_exit_failure; -/* FIXME: describe */ +/* If this pointer is non-zero, run the specified function upon each + allocation failure. It is initialized to zero. */ +extern void (*xalloc_fail_func) PARAMS ((void)); + +/* If XALLOC_FAIL_FUNC is undefined or a function that returns, this + message must be non-NULL. It is translated via gettext. + The default value is "Memory exhausted". */ extern char *const xalloc_msg_memory_exhausted; -/* FIXME: describe */ -extern void (*xalloc_fail_func) (); +/* This function is always triggered when memory is exhausted. It is + in charge of honoring the three previous items. This is the + function to call when one wants the program to die because of a + memory allocation failure. */ +extern void xalloc_die PARAMS ((void)) ATTRIBUTE_NORETURN; void *xmalloc PARAMS ((size_t n)); void *xcalloc PARAMS ((size_t n, size_t s)); void *xrealloc PARAMS ((void *p, size_t n)); +char *xstrdup PARAMS ((const char *str)); + +# define XMALLOC(Type, N_items) ((Type *) xmalloc (sizeof (Type) * (N_items))) +# define XCALLOC(Type, N_items) ((Type *) xcalloc (sizeof (Type), (N_items))) +# define XREALLOC(Ptr, Type, N_items) \ + ((Type *) xrealloc ((void *) (Ptr), sizeof (Type) * (N_items))) + +/* Declare and alloc memory for VAR of type TYPE. */ +# define NEW(Type, Var) Type *(Var) = XMALLOC (Type, 1) + +/* Free VAR only if non NULL. */ +# define XFREE(Var) \ + do { \ + if (Var) \ + free (Var); \ + } while (0) + +/* Return a pointer to a malloc'ed copy of the array SRC of NUM elements. */ +# define CCLONE(Src, Num) \ + (memcpy (xmalloc (sizeof (*Src) * (Num)), (Src), sizeof (*Src) * (Num))) + +/* Return a malloc'ed copy of SRC. */ +# define CLONE(Src) CCLONE (Src, 1) + + +#endif /* !XALLOC_H_ */ diff --git a/lib/xmalloc.c b/lib/xmalloc.c index 204469f..8206a94 100644 --- a/lib/xmalloc.c +++ b/lib/xmalloc.c @@ -1,5 +1,5 @@ /* xmalloc.c -- malloc with out of memory checking - Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc. + Copyright (C) 1990-1997, 98, 99 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -46,13 +46,6 @@ void free (); # define EXIT_FAILURE 1 #endif -/* Prototypes for functions defined here. */ -#if defined (__STDC__) && __STDC__ -void *xmalloc (size_t n); -void *xcalloc (size_t n, size_t s); -void *xrealloc (void *p, size_t n); -#endif - #ifndef HAVE_DONE_WORKING_MALLOC_CHECK you must run the autoconf test for a properly working malloc -- see malloc.m4 #endif @@ -65,37 +58,35 @@ you must run the autoconf test for a properly working realloc -- see realloc.m4 The caller may set it to some other value. */ int xalloc_exit_failure = EXIT_FAILURE; -/* FIXME: describe */ -char *const xalloc_msg_memory_exhausted = N_("Memory exhausted"); +/* If non NULL, call this function when memory is exhausted. */ +void (*xalloc_fail_func) PARAMS ((void)) = 0; -/* FIXME: describe */ -void (*xalloc_fail_func) () = 0; - -#if __STDC__ && (HAVE_VPRINTF || HAVE_DOPRNT) -void error (int, int, const char *, ...); -#else -void error (); -#endif +/* If XALLOC_FAIL_FUNC is NULL, or does return, display this message + before exiting when memory is exhausted. Goes through gettext. */ +char *const xalloc_msg_memory_exhausted = N_("Memory exhausted"); -static void -xalloc_fail () +void +xalloc_die (void) { if (xalloc_fail_func) (*xalloc_fail_func) (); - error (xalloc_exit_failure, 0, xalloc_msg_memory_exhausted); + error (xalloc_exit_failure, 0, "%s", _(xalloc_msg_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 terminate, call exit. */ + exit (EXIT_FAILURE); } /* Allocate N bytes of memory dynamically, with error checking. */ void * -xmalloc (n) - size_t n; +xmalloc (size_t n) { void *p; p = malloc (n); if (p == 0) - xalloc_fail (); + xalloc_die (); return p; } @@ -104,30 +95,23 @@ xmalloc (n) If P is NULL, run xmalloc. */ void * -xrealloc (p, n) - void *p; - size_t n; +xrealloc (void *p, size_t n) { p = realloc (p, n); if (p == 0) - xalloc_fail (); + xalloc_die (); return p; } -#ifdef NOT_USED - /* Allocate memory for N elements of S bytes, with error checking. */ void * -xcalloc (n, s) - size_t n, s; +xcalloc (size_t n, size_t s) { void *p; p = calloc (n, s); if (p == 0) - xalloc_fail (); + xalloc_die (); return p; } - -#endif /* NOT_USED */ diff --git a/lib/xstring.h b/lib/xstring.h index 44b918e..c6f79e0 100644 --- a/lib/xstring.h +++ b/lib/xstring.h @@ -1,16 +1,16 @@ /* xstring.h - string declarations wrapper wrapper - Copyright (C) 1986, 1995, 1996, 1998 Free Software Foundation, Inc. + Copyright (C) 1986, 1995, 1996 Free Software Foundation, Inc. This program is free software; you can 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -36,9 +36,9 @@ char *memchr (); #define strnequ(s1, s2, n) (strncmp ((s1), (s2), (n)) == 0) #if !HAVE_STRNDUP -extern char *strndup PARAMS((char const *, size_t n)); +extern char *strndup __P((char const *, size_t n)); #endif -extern char *basename PARAMS((char const *)); -extern char *dirname PARAMS((char const *)); +extern char *basename __P((char const *)); +extern char *dirname __P((char const *)); #endif /* not _xstring_h_ */ diff --git a/libiconv/ChangeLog b/libiconv/ChangeLog index 83dcc35..c0db791 100644 --- a/libiconv/ChangeLog +++ b/libiconv/ChangeLog @@ -1,5 +1,17 @@ +2000-06-28 François Pinard + + * Makefile.am (noinst_HEADERS): Distribute iconv.h. + +2000-04-23 Bruno Haible + + * Updated to libiconv 1.3. + * iconv.h: New file, nearly copied from libiconv's iconv.h.in. + +2000-03-14 Bruno Haible + + * Updated to libiconv 0.3, 1.0, 1.1, then 1.2. + 1999-12-28 François Pinard * Makefile.am: New file. * encoding.def, all .h files: From Bruno Haible's libiconv 0.2. - diff --git a/libiconv/Makefile.am b/libiconv/Makefile.am index 0d830f9..bab0c27 100644 --- a/libiconv/Makefile.am +++ b/libiconv/Makefile.am @@ -1,5 +1,5 @@ # Makefile for `libiconv' part of `recode'. -# Copyright © 1999 Free Software Foundation, Inc. +# Copyright © 1999, 2000 Free Software Foundation, Inc. # François Pinard # This program is free software; you can redistribute it and/or modify @@ -19,23 +19,25 @@ AUTOMAKE_OPTIONS = gnits -noinst_HEADERS = aliases.h armscii_8.h ascii.h big5.h ces_big5.h \ -ces_gbk.h cns11643.h cns11643_1.h cns11643_2.h cns11643_3.h \ -cns11643_inv.h cp1133.h cp1250.h cp1251.h cp1252.h cp1253.h cp1254.h \ +noinst_HEADERS = iconv.h aliases.h armscii_8.h ascii.h big5.h ces_big5.h \ +ces_gbk.h cjk_variants.h cns11643.h cns11643_1.h cns11643_2.h cns11643_3.h \ +cns11643_inv.h converters.h cp1133.h cp1250.h cp1251.h cp1252.h cp1253.h cp1254.h \ cp1255.h cp1256.h cp1257.h cp1258.h cp850.h cp866.h cp874.h cp932.h \ -cp932ext.h cp936ext.h cp950.h cp950ext.h euc_cn.h euc_jp.h euc_kr.h \ -euc_tw.h gb12345.h gb12345ext.h gb2312.h gbk.h gbkext1.h gbkext2.h \ +cp932ext.h cp936ext.h cp949.h cp950.h cp950ext.h euc_cn.h euc_jp.h euc_kr.h \ +euc_tw.h flags.h gb12345.h gb12345ext.h gb2312.h gbk.h gbkext1.h gbkext2.h \ gbkext_inv.h georgian_academy.h georgian_ps.h hp_roman8.h hz.h \ iso2022_cn.h iso2022_cnext.h iso2022_jp.h iso2022_jp1.h iso2022_jp2.h \ -iso2022_kr.h iso8859_1.h iso8859_10.h iso8859_13.h iso8859_14.h \ -iso8859_15.h iso8859_2.h iso8859_3.h iso8859_4.h iso8859_5.h \ -iso8859_6.h iso8859_7.h iso8859_8.h iso8859_9.h java.h jisx0201.h \ -jisx0208.h jisx0212.h johab.h johab_decomp.h johab_hangul.h koi8_r.h \ +iso2022_kr.h iso646_cn.h iso646_jp.h iso8859_1.h iso8859_10.h iso8859_13.h iso8859_14.h \ +iso8859_15.h iso8859_16.h iso8859_2.h iso8859_3.h iso8859_4.h iso8859_5.h \ +iso8859_6.h iso8859_7.h iso8859_8.h iso8859_9.h isoir165.h isoir165ext.h java.h jisx0201.h \ +jisx0208.h jisx0212.h johab.h johab_hangul.h koi8_r.h \ koi8_ru.h koi8_u.h ksc5601.h mac_arabic.h mac_centraleurope.h \ mac_croatian.h mac_cyrillic.h mac_greek.h mac_hebrew.h mac_iceland.h \ mac_roman.h mac_romania.h mac_thai.h mac_turkish.h mac_ukraine.h \ -mulelao.h nextstep.h sjis.h tcvn.h tis620.h ucs2.h ucs2internal.h \ -ucs2swapped.h ucs4.h ucs4internal.h ucs4swapped.h utf16.h utf7.h \ +mulelao.h nextstep.h sjis.h tcvn.h tis620.h translit.h \ +ucs2.h ucs2be.h ucs2le.h ucs2internal.h ucs2swapped.h \ +ucs4.h ucs4be.h ucs4le.h ucs4internal.h ucs4swapped.h \ +uhc_1.h uhc_2.h utf16.h utf16be.h utf16le.h utf7.h \ utf8.h viscii.h EXTRA_DIST = encodings.def diff --git a/libiconv/Makefile.in b/libiconv/Makefile.in index afc7f24..390fda4 100644 --- a/libiconv/Makefile.in +++ b/libiconv/Makefile.in @@ -11,7 +11,7 @@ # PARTICULAR PURPOSE. # Makefile for `libiconv' part of `recode'. -# Copyright © 1999 Free Software Foundation, Inc. +# Copyright © 1999, 2000 Free Software Foundation, Inc. # François Pinard # This program is free software; you can redistribute it and/or modify @@ -83,48 +83,29 @@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ CC = @CC@ CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ LEX = @LEX@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ MOFILES = @MOFILES@ -MSGFMT = @MSGFMT@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ RANLIB = @RANLIB@ U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ VERSION = @VERSION@ -l = @l@ AUTOMAKE_OPTIONS = gnits -noinst_HEADERS = aliases.h armscii_8.h ascii.h big5.h ces_big5.h ces_gbk.h cns11643.h cns11643_1.h cns11643_2.h cns11643_3.h cns11643_inv.h cp1133.h cp1250.h cp1251.h cp1252.h cp1253.h cp1254.h cp1255.h cp1256.h cp1257.h cp1258.h cp850.h cp866.h cp874.h cp932.h cp932ext.h cp936ext.h cp950.h cp950ext.h euc_cn.h euc_jp.h euc_kr.h euc_tw.h gb12345.h gb12345ext.h gb2312.h gbk.h gbkext1.h gbkext2.h gbkext_inv.h georgian_academy.h georgian_ps.h hp_roman8.h hz.h iso2022_cn.h iso2022_cnext.h iso2022_jp.h iso2022_jp1.h iso2022_jp2.h iso2022_kr.h iso8859_1.h iso8859_10.h iso8859_13.h iso8859_14.h iso8859_15.h iso8859_2.h iso8859_3.h iso8859_4.h iso8859_5.h iso8859_6.h iso8859_7.h iso8859_8.h iso8859_9.h java.h jisx0201.h jisx0208.h jisx0212.h johab.h johab_decomp.h johab_hangul.h koi8_r.h koi8_ru.h koi8_u.h ksc5601.h mac_arabic.h mac_centraleurope.h mac_croatian.h mac_cyrillic.h mac_greek.h mac_hebrew.h mac_iceland.h mac_roman.h mac_romania.h mac_thai.h mac_turkish.h mac_ukraine.h mulelao.h nextstep.h sjis.h tcvn.h tis620.h ucs2.h ucs2internal.h ucs2swapped.h ucs4.h ucs4internal.h ucs4swapped.h utf16.h utf7.h utf8.h viscii.h +noinst_HEADERS = iconv.h aliases.h armscii_8.h ascii.h big5.h ces_big5.h ces_gbk.h cjk_variants.h cns11643.h cns11643_1.h cns11643_2.h cns11643_3.h cns11643_inv.h converters.h cp1133.h cp1250.h cp1251.h cp1252.h cp1253.h cp1254.h cp1255.h cp1256.h cp1257.h cp1258.h cp850.h cp866.h cp874.h cp932.h cp932ext.h cp936ext.h cp949.h cp950.h cp950ext.h euc_cn.h euc_jp.h euc_kr.h euc_tw.h flags.h gb12345.h gb12345ext.h gb2312.h gbk.h gbkext1.h gbkext2.h gbkext_inv.h georgian_academy.h georgian_ps.h hp_roman8.h hz.h iso2022_cn.h iso2022_cnext.h iso2022_jp.h iso2022_jp1.h iso2022_jp2.h iso2022_kr.h iso646_cn.h iso646_jp.h iso8859_1.h iso8859_10.h iso8859_13.h iso8859_14.h iso8859_15.h iso8859_16.h iso8859_2.h iso8859_3.h iso8859_4.h iso8859_5.h iso8859_6.h iso8859_7.h iso8859_8.h iso8859_9.h isoir165.h isoir165ext.h java.h jisx0201.h jisx0208.h jisx0212.h johab.h johab_hangul.h koi8_r.h koi8_ru.h koi8_u.h ksc5601.h mac_arabic.h mac_centraleurope.h mac_croatian.h mac_cyrillic.h mac_greek.h mac_hebrew.h mac_iceland.h mac_roman.h mac_romania.h mac_thai.h mac_turkish.h mac_ukraine.h mulelao.h nextstep.h sjis.h tcvn.h tis620.h translit.h ucs2.h ucs2be.h ucs2le.h ucs2internal.h ucs2swapped.h ucs4.h ucs4be.h ucs4le.h ucs4internal.h ucs4swapped.h uhc_1.h uhc_2.h utf16.h utf16be.h utf16le.h utf7.h utf8.h viscii.h EXTRA_DIST = encodings.def diff --git a/libiconv/aliases.h b/libiconv/aliases.h index 929ad18..9260627 100644 --- a/libiconv/aliases.h +++ b/libiconv/aliases.h @@ -1,13 +1,13 @@ /* ANSI-C code produced by gperf version 2.7 */ -/* Command-line: gperf -t -L ANSI-C -H aliases_hash -N aliases_lookup -7 -C -k 1,3-7,9-11,$ ../../src/aliases.gperf */ +/* Command-line: gperf -t -L ANSI-C -H aliases_hash -N aliases_lookup -7 -C -k 1,3-11,$ -i 1 src/aliases.gperf */ struct alias { const char* name; unsigned int encoding_index; }; -#define TOTAL_KEYWORDS 263 +#define TOTAL_KEYWORDS 293 #define MIN_WORD_LENGTH 2 #define MAX_WORD_LENGTH 45 -#define MIN_HASH_VALUE 4 -#define MAX_HASH_VALUE 2132 -/* maximum key range = 2129, duplicates = 0 */ +#define MIN_HASH_VALUE 8 +#define MAX_HASH_VALUE 2145 +/* maximum key range = 2138, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -17,19 +17,19 @@ aliases_hash (register const char *str, register unsigned int len) { static const unsigned short asso_values[] = { - 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, - 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, - 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, - 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, - 2133, 2133, 2133, 2133, 2133, 0, 0, 2133, 400, 195, - 40, 243, 290, 220, 70, 115, 0, 255, 120, 2133, - 2133, 2133, 2133, 2133, 2133, 0, 80, 338, 85, 0, - 25, 5, 115, 0, 0, 45, 235, 90, 0, 0, - 15, 2133, 15, 0, 40, 180, 10, 0, 35, 0, - 0, 2133, 2133, 2133, 2133, 10, 2133, 2133, 2133, 2133, - 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, - 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, - 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133 + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 2146, 1, 56, 2146, 41, 56, + 26, 246, 426, 106, 86, 231, 1, 491, 16, 2146, + 2146, 2146, 2146, 2146, 2146, 21, 231, 241, 39, 1, + 91, 106, 76, 1, 111, 21, 418, 16, 6, 1, + 6, 2146, 14, 1, 1, 346, 146, 1, 346, 16, + 1, 2146, 2146, 2146, 2146, 492, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146 }; register int hval = len; @@ -43,6 +43,7 @@ aliases_hash (register const char *str, register unsigned int len) case 9: hval += asso_values[(unsigned char) str[8]]; case 8: + hval += asso_values[(unsigned char) str[7]]; case 7: hval += asso_values[(unsigned char) str[6]]; case 6: @@ -69,551 +70,590 @@ aliases_lookup (register const char *str, register unsigned int len) { static const struct alias wordlist[] = { - {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"SJIS", ei_sjis}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"JAVA", ei_java}, - {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"R8", ei_hp_roman8}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"MS-EE", ei_cp1250}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"GEORGIAN-PS", ei_georgian_ps}, - {""}, {""}, - {"TCVN", ei_tcvn}, - {""}, - {"GREEK8", ei_iso8859_7}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"KOREAN", ei_ksc5601}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"SHIFT-JIS", ei_sjis}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"KOI8-R", ei_koi8_r}, - {""}, {""}, - {"SHIFT_JIS", ei_sjis}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO-IR-6", ei_ascii}, - {""}, - {"MS-EE", ei_cp1250}, {""}, {"MS-ANSI", ei_cp1252}, - {"GBK", ei_ces_gbk}, - {""}, - {"GREEK", ei_iso8859_7}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {""}, {""}, {""}, + {"KOI8-R", ei_koi8_r}, + {""}, {""}, {""}, {""}, {""}, {""}, {"ROMAN8", ei_hp_roman8}, - {""}, {""}, {""}, {""}, {""}, - {"HZ", ei_hz}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"BIGFIVE", ei_ces_big5}, - {"BIG-FIVE", ei_ces_big5}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"NEXTSTEP", ei_nextstep}, - {""}, {""}, {""}, {""}, - {"866", ei_cp866}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"MS_KANJI", ei_sjis}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"MS-GREEK", ei_cp1253}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"KOREAN", ei_ksc5601}, + {""}, {""}, {""}, + {"HZ", ei_hz}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"850", ei_cp850}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"US", ei_ascii}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"ISO-IR-126", ei_iso8859_7}, - {""}, {""}, {""}, {""}, - {"UTF-8", ei_utf8}, {""}, {""}, {""}, {""}, {""}, - {"HEBREW", ei_iso8859_8}, + {"JP", ei_iso646_jp}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO-IR-58", ei_gb2312}, + {"GREEK8", ei_iso8859_7}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"HP-ROMAN8", ei_hp_roman8}, - {"ISO-8859-8", ei_iso8859_8}, {""}, {""}, {""}, {""}, - {"ISO-IR-166", ei_tis620}, + {"GBK", ei_ces_gbk}, + {""}, {""}, {""}, + {"GREEK", ei_iso8859_7}, + {""}, {""}, {""}, {""}, {""}, + {"ECMA-118", ei_iso8859_7}, {""}, - {"L8", ei_iso8859_14}, - {""}, {""}, - {"ISO_8859-8", ei_iso8859_8}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"TCVN", ei_tcvn}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"866", ei_cp866}, {""}, {""}, {""}, {""}, {""}, {""}, - {"UCS-2", ei_ucs2}, + {"ISO-2022-KR", ei_iso2022_kr}, + {""}, {""}, {""}, {""}, {""}, + {"MS-GREEK", ei_cp1253}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO-IR-6", ei_ascii}, {""}, {""}, - {"ISO-IR-138", ei_iso8859_8}, + {"TIS620", ei_tis620}, + {""}, + {"TIS-620", ei_tis620}, {""}, {""}, {""}, - {"MS-ARAB", ei_cp1256}, + {"ISO-IR-100", ei_iso8859_1}, + {""}, {""}, {""}, + {"IBM850", ei_cp850}, + {""}, {""}, {""}, {""}, {""}, + {"SHIFT-JIS", ei_sjis}, {""}, {""}, {""}, {""}, - {"L2", ei_iso8859_2}, + {"ISO-IR-110", ei_iso8859_4}, + {""}, {""}, {""}, {""}, {""}, + {"JIS0208", ei_jisx0208}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO-IR-101", ei_iso8859_2}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"TIS620-0", ei_tis620}, {""}, {""}, - {"JOHAB", ei_johab}, - {"LATIN8", ei_iso8859_14}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"ISO-IR-127", ei_iso8859_6}, + {"CN", ei_iso646_cn}, + {"EUCTW", ei_euc_tw}, + {"WINDOWS-1258", ei_cp1258}, + {"EUC-TW", ei_euc_tw}, + {"ISO-IR-226", ei_iso8859_16}, + {""}, {""}, {""}, + {"ISO-2022-JP", ei_iso2022_jp}, + {""}, + {"CHINESE", ei_gb2312}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ASCII", ei_ascii}, + {""}, {""}, {""}, {""}, + {"GEORGIAN-PS", ei_georgian_ps}, + {"WINDOWS-1252", ei_cp1252}, + {""}, {""}, + {"ISO-2022-JP-2", ei_iso2022_jp2}, + {""}, {""}, {"IBM866", ei_cp866}, - {"L6", ei_iso8859_10}, - {"UCS-2-BE", ei_ucs2be}, + {"ISO-IR-126", ei_iso8859_7}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"WINDOWS-1250", ei_cp1250}, {""}, - {"ISO-8859-2", ei_iso8859_2}, - {""}, {""}, {""}, {""}, - {"ISO-IR-148", ei_iso8859_9}, - {""}, {""}, {""}, {""}, - {"ISO_8859-2", ei_iso8859_2}, + {"ARMSCII-8", ei_armscii_8}, + {""}, {""}, + {"EUCKR", ei_euc_kr}, {""}, - {"MS-HEBR", ei_cp1255}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"EUC-KR", ei_euc_kr}, + {""}, + {"CSKOI8R", ei_koi8_r}, + {""}, {""}, + {"JAVA", ei_java}, + {""}, {""}, + {"WINDOWS-1251", ei_cp1251}, + {""}, {""}, + {"ISO-2022-JP-1", ei_iso2022_jp1}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ASCII", ei_ascii}, - {""}, {""}, {""}, {""}, - {"UCS-2-SWAPPED", ei_ucs2swapped}, + {"ASMO-708", ei_iso8859_6}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"MACROMAN", ei_mac_roman}, + {"HEBREW", ei_iso8859_8}, + {""}, {""}, + {"ISO-IR-138", ei_iso8859_8}, + {""}, {""}, + {"WINDOWS-1256", ei_cp1256}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO-IR-166", ei_tis620}, + {""}, {""}, {""}, {""}, {""}, + {"US", ei_ascii}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"WINDOWS-1255", ei_cp1255}, {""}, {""}, {""}, - {"L7", ei_iso8859_13}, - {"ELOT_928", ei_iso8859_7}, - {"VISCII", ei_viscii}, - {"X0212", ei_jisx0212}, - {""}, {""}, {""}, {""}, - {"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", ei_euc_jp}, - {"LATIN2", ei_iso8859_2}, + {"MS-HEBR", ei_cp1255}, {""}, {""}, {""}, - {"ISO_8859-8:1988", ei_iso8859_8}, - {""}, {""}, {""}, {""}, - {"ISO-8859-6", ei_iso8859_6}, - {""}, {""}, + {"MACTHAI", ei_mac_thai}, + {""}, {""}, {""}, + {"MACROMANIA", ei_mac_romania}, + {""}, {"EUCJP", ei_euc_jp}, + {""}, {"EUC-JP", ei_euc_jp}, - {""}, {""}, {""}, {""}, - {"GEORGIAN-ACADEMY", ei_georgian_academy}, - {"ISO_8859-6", ei_iso8859_6}, + {""}, {""}, {""}, + {"NEXTSTEP", ei_nextstep}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO-IR-165", ei_isoir165}, {""}, {""}, - {"EUCTW", ei_euc_tw}, - {"EUC-TW", ei_euc_tw}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO-2022-CN-EXT", ei_iso2022_cn_ext}, + {"ISO-2022-CN", ei_iso2022_cn}, + {""}, {""}, {""}, {""}, {""}, + {"CSHPROMAN8", ei_hp_roman8}, + {""}, {""}, {""}, + {"VISCII", ei_viscii}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"UCS-2", ei_ucs2}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"KOI8-U", ei_koi8_u}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"EUCKR", ei_euc_kr}, - {"EUC-KR", ei_euc_kr}, - {"CSKOI8R", ei_koi8_r}, - {"LATIN6", ei_iso8859_10}, + {""}, {""}, {""}, {""}, {""}, + {"X0208", ei_jisx0208}, + {"L8", ei_iso8859_14}, + {""}, + {"CSISO2022KR", ei_iso2022_kr}, + {""}, {""}, {""}, {"MS-TURK", ei_cp1254}, + {"MACINTOSH", ei_mac_roman}, + {"MACGREEK", ei_mac_greek}, {""}, {""}, {""}, {""}, - {"KOI8-RU", ei_koi8_ru}, + {"LATIN8", ei_iso8859_14}, + {"CP850", ei_cp850}, + {""}, + {"CP1258", ei_cp1258}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"UTF-8", ei_utf8}, + {"L2", ei_iso8859_2}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"UCS-2-SWAPPED", ei_ucs2swapped}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"L1", ei_iso8859_1}, {""}, {""}, {""}, {""}, - {"ARMSCII-8", ei_armscii_8}, + {"WINDOWS-1257", ei_cp1257}, + {""}, {""}, + {"LATIN2", ei_iso8859_2}, + {"X0212", ei_jisx0212}, {""}, - {"ISO646-US", ei_ascii}, - {"UTF-7", ei_utf7}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"L5", ei_iso8859_9}, + {"CP1252", ei_cp1252}, + {""}, {""}, {""}, + {"ISO-IR-87", ei_jisx0208}, + {"GB2312", ei_euc_cn}, + {""}, {""}, {""}, + {"WINDOWS-1253", ei_cp1253}, + {"CSISO2022JP", ei_iso2022_jp}, {""}, {""}, - {"ISO-8859-7", ei_iso8859_7}, + {"EUCCN", ei_euc_cn}, + {"MAC", ei_mac_roman}, + {"EUC-CN", ei_euc_cn}, {""}, {""}, - {"UCS-2-LE", ei_ucs2le}, + {"CP866", ei_cp866}, + {"L6", ei_iso8859_10}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO_8859-7", ei_iso8859_7}, + {"ISO-IR-148", ei_iso8859_9}, + {"CSASCII", ei_ascii}, + {""}, {""}, + {"CP1250", ei_cp1250}, + {"CSISO2022JP2", ei_iso2022_jp2}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"L5", ei_iso8859_9}, {""}, {""}, {""}, - {"TCVN-5712", ei_tcvn}, - {"ISO-IR-157", ei_iso8859_10}, + {"X0201", ei_jisx0201}, {""}, {""}, {""}, {""}, - {"L3", ei_iso8859_3}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ECMA-118", ei_iso8859_7}, - {""}, {""}, {""}, {""}, {""}, - {"JIS_X0208", ei_jisx0208}, + {"CSSHIFTJIS", ei_sjis}, {""}, {""}, {""}, {""}, {""}, {""}, - {"MACGREEK", ei_mac_greek}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"LATIN7", ei_iso8859_13}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO_8859-2:1987", ei_iso8859_2}, - {"ISO-2022-JP", ei_iso2022_jp}, + {"MS-ARAB", ei_cp1256}, + {""}, + {"LATIN1", ei_iso8859_1}, + {""}, {""}, + {"CP1251", ei_cp1251}, + {""}, {""}, + {"GEORGIAN-ACADEMY", ei_georgian_academy}, {""}, {""}, - {"UCS-2-INTERNAL", ei_ucs2internal}, - {"HZ-GB-2312", ei_hz}, - {"US-ASCII", ei_ascii}, - {"L4", ei_iso8859_4}, - {"CSSHIFTJIS", ei_sjis}, {"BIG5", ei_ces_big5}, + {""}, {"BIG-5", ei_ces_big5}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"MACROMAN", ei_mac_roman}, - {""}, - {"MACROMANIA", ei_mac_romania}, - {""}, - {"WINBALTRIM", ei_cp1257}, - {"UTF-16", ei_utf16}, - {""}, - {"ISO-2022-JP-2", ei_iso2022_jp2}, - {""}, - {"ISO_8859-6:1987", ei_iso8859_6}, - {""}, - {"WINDOWS-1258", ei_cp1258}, - {"CP866", ei_cp866}, - {""}, {""}, {""}, {""}, - {"UCS-4-BE", ei_ucs4be}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO-2022-KR", ei_iso2022_kr}, - {""}, {""}, - {"GB2312", ei_euc_cn}, - {""}, {""}, {""}, {""}, - {"JIS_X0212", ei_jisx0212}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CSHPROMAN8", ei_hp_roman8}, + {"ISO-IR-127", ei_iso8859_6}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"MACCROATIAN", ei_mac_croatian}, + {""}, {""}, {""}, + {"BIGFIVE", ei_ces_big5}, {""}, - {"ISO_8859-5:1988", ei_iso8859_5}, - {""}, {""}, {""}, {""}, - {"MACTHAI", ei_mac_thai}, + {"BIG-FIVE", ei_ces_big5}, {""}, - {"WINDOWS-1252", ei_cp1252}, - {""}, {""}, - {"ISO_8859-7:1987", ei_iso8859_7}, + {"ISO-IR-203", ei_iso8859_15}, {""}, {""}, - {"UCS-4-SWAPPED", ei_ucs4swapped}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO_8859-3:1988", ei_iso8859_3}, + {"MACHEBREW", ei_mac_hebrew}, {""}, {""}, {""}, {""}, - {"ASMO-708", ei_iso8859_6}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO-8859-1", ei_iso8859_1}, - {""}, - {"WINDOWS-1256", ei_cp1256}, - {"UNICODEBIG", ei_ucs2be}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO_8859-1", ei_iso8859_1}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CSISOLATINGREEK", ei_iso8859_7}, - {"IBM367", ei_ascii}, + {"ISO-IR-57", ei_iso646_cn}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"MACHEBREW", ei_mac_hebrew}, + {"LATIN6", ei_iso8859_10}, {""}, {""}, - {"ISO-IR-179", ei_iso8859_13}, - {""}, {""}, {""}, {""}, - {"ISO_8859-4:1988", ei_iso8859_4}, - {"CSIBM866", ei_cp866}, + {"CP1256", ei_cp1256}, + {"TCVN-5712", ei_tcvn}, + {""}, {""}, {""}, {""}, {""}, + {"UCS-2BE", ei_ucs2be}, + {"ISO-8859-8", ei_iso8859_8}, + {""}, {""}, {""}, {""}, {""}, + {"US-ASCII", ei_ascii}, + {""}, {""}, {""}, {""}, {""}, + {"CSISO2022CN", ei_iso2022_cn}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO_8859-15:1998", ei_iso8859_15}, - {""}, {""}, - {"CSISOLATIN2", ei_iso8859_2}, + {"CSVISCII", ei_viscii}, {""}, {""}, - {"WINDOWS-1257", ei_cp1257}, + {"LATIN5", ei_iso8859_9}, {""}, {""}, - {"ISO-8859-5", ei_iso8859_5}, - {"LATIN1", ei_iso8859_1}, + {"CP1255", ei_cp1255}, {""}, {""}, {""}, - {"ISO_8859-1:1987", ei_iso8859_1}, - {"ISO_646.IRV:1991", ei_ascii}, - {""}, - {"MACUKRAINE", ei_mac_ukraine}, + {"L7", ei_iso8859_13}, {""}, - {"ISO_8859-5", ei_iso8859_5}, - {"EUCCN", ei_euc_cn}, - {"EUC-CN", ei_euc_cn}, - {"CSASCII", ei_ascii}, + {"ISO-IR-157", ei_iso8859_10}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"CSVISCII", ei_viscii}, - {""}, - {"UNICODELITTLE", ei_ucs2le}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO-2022-JP-1", ei_iso2022_jp1}, - {"CSISOLATINHEBREW", ei_iso8859_8}, {""}, {""}, - {"MACINTOSH", ei_mac_roman}, + {"ISO-8859-2", ei_iso8859_2}, + {"L3", ei_iso8859_3}, {""}, {""}, {""}, {""}, {""}, - {"UCS-4-LE", ei_ucs4le}, + {"UTF-16", ei_utf16}, {""}, {""}, - {"ISO-8859-3", ei_iso8859_3}, - {""}, {""}, {""}, {""}, - {"LATIN5", ei_iso8859_9}, + {"JOHAB", ei_johab}, + {"WINDOWS-1254", ei_cp1254}, + {"MS_KANJI", ei_sjis}, + {"MACUKRAINE", ei_mac_ukraine}, + {""}, {""}, {""}, + {"VISCII1.1-1", ei_viscii}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"CSMACINTOSH", ei_mac_roman}, {""}, {""}, - {"CSISOLATIN6", ei_iso8859_10}, - {""}, - {"ISO_8859-3", ei_iso8859_3}, + {"TCVN5712-1", ei_tcvn}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO_8859-14:1998", ei_iso8859_14}, + {"SHIFT_JIS", ei_sjis}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO-8859-9", ei_iso8859_9}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"WINDOWS-1251", ei_cp1251}, - {""}, {""}, - {"ISO_8859-9", ei_iso8859_9}, - {""}, {""}, {""}, {""}, - {"ISO-IR-159", ei_jisx0212}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"ARABIC", ei_iso8859_6}, + {"CN-GB-ISOIR165", ei_isoir165}, + {""}, {""}, {""}, + {"KOI8-U", ei_koi8_u}, {""}, {""}, - {"UCS-4", ei_ucs4}, + {"ISO-8859-1", ei_iso8859_1}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO646-JP", ei_iso646_jp}, {""}, - {"LATIN3", ei_iso8859_3}, + {"WINBALTRIM", ei_cp1257}, + {""}, + {"KOI8-RU", ei_koi8_ru}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"CP1361", ei_johab}, {""}, {""}, {""}, {""}, - {"WINDOWS-1255", ei_cp1255}, + {"ISO-8859-10", ei_iso8859_10}, {""}, - {"UCS-4-INTERNAL", ei_ucs4internal}, - {""}, {""}, {""}, - {"ECMA-114", ei_iso8859_6}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ANSI_X3.4-1968", ei_ascii}, + {"CSISOLATIN2", ei_iso8859_2}, + {""}, + {"CSIBM866", ei_cp866}, + {""}, {""}, {""}, {""}, {""}, + {"ARABIC", ei_iso8859_6}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"WINDOWS-874", ei_cp874}, - {"MACCROATIAN", ei_mac_croatian}, + {"CSISOLATINHEBREW", ei_iso8859_8}, + {"ISO-8859-6", ei_iso8859_6}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"WINDOWS-1253", ei_cp1253}, - {""}, {""}, {""}, - {"CP1258", ei_cp1258}, + {"CSBIG5", ei_ces_big5}, {""}, - {"IBM819", ei_iso8859_1}, + {"CN-BIG5", ei_ces_big5}, {""}, - {"850", ei_cp850}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO-8859-4", ei_iso8859_4}, - {""}, {""}, {""}, {""}, - {"ISO-IR-101", ei_iso8859_2}, - {""}, {""}, {""}, {""}, - {"ISO_8859-4", ei_iso8859_4}, + {"UCS-2LE", ei_ucs2le}, + {""}, + {"MACTURKISH", ei_mac_turkish}, + {""}, + {"HZ-GB-2312", ei_hz}, {""}, {""}, {""}, {""}, - {"ISO-IR-149", ei_ksc5601}, + {"UNICODE-1-1", ei_ucs2be}, {""}, {""}, {""}, - {"ISO-2022-CN", ei_iso2022_cn}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"CSISOLATIN1", ei_iso8859_1}, + {"CN-GB", ei_euc_cn}, + {""}, + {"IBM367", ei_ascii}, {""}, {""}, {""}, - {"WINDOWS-1254", ei_cp1254}, + {"UTF-16BE", ei_utf16be}, + {""}, {""}, {""}, + {"ISO-8859-5", ei_iso8859_5}, {""}, {""}, {""}, {""}, - {"JIS0208", ei_jisx0208}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"CSISO2022JP", ei_iso2022_jp}, + {"UCS-2-INTERNAL", ei_ucs2internal}, + {"UHC", ei_cp949}, {""}, - {"LATIN4", ei_iso8859_4}, - {""}, {""}, {""}, - {"CSUNICODE", ei_ucs2}, - {"ISO-8859-15", ei_iso8859_15}, - {""}, {""}, - {"CSBIG5", ei_ces_big5}, - {"X0201", ei_jisx0201}, + {"CSISOLATINGREEK", ei_iso8859_7}, + {""}, {""}, {""}, {""}, {""}, + {"CSEUCTW", ei_euc_tw}, {""}, {""}, - {"ISO-2022-CN-EXT", ei_iso2022_cn_ext}, + {"ISO-8859-16", ei_iso8859_16}, + {""}, {""}, {""}, + {"L4", ei_iso8859_4}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"UCS-4-SWAPPED", ei_ucs4swapped}, + {"ISO646-CN", ei_iso646_cn}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO_8859-9:1989", ei_iso8859_9}, - {"ISO_8859-15", ei_iso8859_15}, + {"CSISOLATIN6", ei_iso8859_10}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO-8859-15", ei_iso8859_15}, {""}, {""}, - {"CP1252", ei_cp1252}, - {""}, - {"ISO_8859-10:1992", ei_iso8859_10}, + {"CSEUCKR", ei_euc_kr}, + {"CSUNICODE", ei_ucs2}, {""}, {""}, - {"JIS_X0201", ei_jisx0201}, - {"CSISO2022JP2", ei_iso2022_jp2}, - {"CP367", ei_ascii}, - {""}, {""}, {""}, {""}, - {"JIS_X0208.1983-1", ei_jisx0208}, - {""}, {""}, {""}, - {"ISO-IR-144", ei_iso8859_5}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CSEUCTW", ei_euc_tw}, - {"CSISO2022KR", ei_iso2022_kr}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO-8859-13", ei_iso8859_13}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"MS-CYRL", ei_cp1251}, - {"CP932", ei_cp932}, - {"ISO_8859-13", ei_iso8859_13}, + {"TIS620.2533-0", ei_tis620}, {""}, {""}, {""}, {""}, - {"CSISOLATINARABIC", ei_iso8859_6}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO-IR-109", ei_iso8859_3}, - {""}, - {"JIS_X0208-1983", ei_jisx0208}, - {"CSEUCKR", ei_euc_kr}, - {"CP1256", ei_cp1256}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"MACTURKISH", ei_mac_turkish}, - {"CSGB2312", ei_euc_cn}, + {"LATIN7", ei_iso8859_13}, {""}, {""}, - {"WINDOWS-1250", ei_cp1250}, - {""}, {""}, {""}, - {"TIS620", ei_tis620}, - {"TIS-620", ei_tis620}, - {"TIS620-0", ei_tis620}, - {"MULELAO-1", ei_mulelao}, + {"CP1257", ei_cp1257}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"TIS620.2533-1", ei_tis620}, + {"UTF-7", ei_utf7}, + {"TCVN5712-1:1993", ei_tcvn}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"CSISOLATIN5", ei_iso8859_9}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"LATIN3", ei_iso8859_3}, + {"CP950", ei_cp950}, {""}, - {"ISO-10646-UCS-2", ei_ucs2}, - {""}, - {"CSHALFWIDTHKATAKANA", ei_jisx0201}, + {"CP1253", ei_cp1253}, {""}, - {"CSISOLATIN1", ei_iso8859_1}, - {""}, {""}, {""}, {""}, {""}, - {"TCVN5712-1", ei_tcvn}, - {"CP936", ei_ces_gbk}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"TIS620.2529-1", ei_tis620}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO-8859-14", ei_iso8859_14}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO_8859-14", ei_iso8859_14}, - {""}, {""}, {""}, - {"ISO-IR-110", ei_iso8859_4}, - {""}, {""}, {""}, - {"CSISOLATIN5", ei_iso8859_9}, - {""}, {""}, {""}, {""}, - {"CP1257", ei_cp1257}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CP874", ei_cp874}, + {"ISO-IR-14", ei_iso646_jp}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CP819", ei_iso8859_1}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"CSISO87JISX0208", ei_jisx0208}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO646-US", ei_ascii}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"CSGB2312", ei_euc_cn}, + {""}, {""}, + {"CSISOLATINARABIC", ei_iso8859_6}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"MACCENTRALEUROPE", ei_mac_centraleurope}, + {"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", ei_euc_jp}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CSISOLATIN3", ei_iso8859_3}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"UNICODE-1-1-UTF-7", ei_utf7}, + {""}, {""}, {""}, {""}, {""}, + {"MULELAO-1", ei_mulelao}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"CSHALFWIDTHKATAKANA", ei_jisx0201}, + {""}, {""}, + {"UTF-16LE", ei_utf16le}, + {""}, {""}, + {"ECMA-114", ei_iso8859_6}, + {""}, {""}, + {"UCS-4BE", ei_ucs4be}, {""}, + {"CSISO58GB231280", ei_gb2312}, + {""}, {""}, {""}, {""}, {""}, + {"ELOT_928", ei_iso8859_7}, {"CSEUCPKDFMTJAPANESE", ei_euc_jp}, - {""}, {""}, {""}, - {"JIS_X0208-1990", ei_jisx0208}, - {""}, - {"JIS_X0208.1983-0", ei_jisx0208}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"MACICELAND", ei_mac_iceland}, {""}, - {"IBM850", ei_cp850}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"UNICODE-1-1-UTF-7", ei_utf7}, + {"CP932", ei_cp932}, + {"MACARABIC", ei_mac_arabic}, + {""}, {""}, {""}, + {"CP367", ei_ascii}, + {""}, {""}, {""}, {""}, {""}, + {"GB_2312-80", ei_gb2312}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"JIS_X0212-1990", ei_jisx0212}, + {"CSUNICODE11", ei_ucs2be}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"IBM819", ei_iso8859_1}, {""}, - {"JIS_X0212.1990-0", ei_jisx0212}, - {""}, {""}, - {"VISCII1.1-1", ei_viscii}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"UNICODELITTLE", ei_ucs2le}, {""}, {""}, {""}, {""}, - {"TCVN5712-1:1993", ei_tcvn}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"CSISOLATIN4", ei_iso8859_4}, - {""}, {""}, - {"CSISO2022CN", ei_iso2022_cn}, + {"JIS_X0208", ei_jisx0208}, {""}, - {"CYRILLIC", ei_iso8859_5}, - {""}, {""}, {""}, {"CSISO159JISX02121990", ei_jisx0212}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"MACICELAND", ei_mac_iceland}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CP1251", ei_cp1251}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"MACARABIC", ei_mac_arabic}, {""}, {""}, {""}, - {"KS_C_5601-1987", ei_ksc5601}, + {"ISO-8859-7", ei_iso8859_7}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO-10646-UCS-4", ei_ucs4}, - {""}, {""}, {""}, {""}, - {"ISO-IR-100", ei_iso8859_1}, - {"ISO-8859-10", ei_iso8859_10}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ISO_8859-10", ei_iso8859_10}, - {""}, {""}, - {"CP1255", ei_cp1255}, + {"UNICODEBIG", ei_ucs2be}, {""}, {""}, - {"CP1361", ei_johab}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO-10646-UCS-2", ei_ucs2}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"CSISOLATINCYRILLIC", ei_iso8859_5}, + {""}, + {"CP1133", ei_cp1133}, + {"CSISO14JISC6220RO", ei_iso646_jp}, + {"JIS_C6220-1969-RO", ei_iso646_jp}, {""}, {""}, {""}, {""}, {""}, - {"TIS620.2529-1", ei_tis620}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, - {"CP1253", ei_cp1253}, + {"ISO-8859-3", ei_iso8859_3}, + {"ISO_8859-8", ei_iso8859_8}, {"KSC_5601", ei_ksc5601}, + {"ISO-IR-109", ei_iso8859_3}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"IBM-CP1133", ei_cp1133}, + {""}, + {"ISO_8859-8:1988", ei_iso8859_8}, + {""}, {""}, {""}, + {"MS-CYRL", ei_cp1251}, + {""}, {""}, + {"JIS_X0212", ei_jisx0212}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"WINDOWS-874", ei_cp874}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"CP936", ei_ces_gbk}, + {"ISO_8859-2", ei_iso8859_2}, + {""}, {""}, {""}, {""}, {""}, + {"ISO-8859-13", ei_iso8859_13}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"JIS_X0208-1990", ei_jisx0208}, + {""}, + {"ISO-IR-159", ei_jisx0212}, + {""}, {""}, {""}, {""}, {""}, + {"JIS_X0201", ei_jisx0201}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"KS_C_5601-1989", ei_ksc5601}, + {"CSISOLATINCYRILLIC", ei_iso8859_5}, + {""}, {""}, + {"CSISOLATIN3", ei_iso8859_3}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"UCS-4LE", ei_ucs4le}, + {""}, {""}, {""}, + {"UCS-4", ei_ucs4}, + {""}, {""}, {""}, {""}, {""}, + {"JIS_X0212-1990", ei_jisx0212}, + {""}, {""}, {""}, {""}, + {"ISO_8859-1", ei_iso8859_1}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"UCS-4-INTERNAL", ei_ucs4internal}, {""}, - {"CP850", ei_cp850}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, + {"ISO_8859-5:1988", ei_iso8859_5}, + {"ISO_8859-10:1992", ei_iso8859_10}, {"CSUNICODE11UTF7", ei_utf7}, - {"IBM-CP1133", ei_cp1133}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"GB_1988-80", ei_iso646_cn}, {""}, - {"CP1254", ei_cp1254}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO_8859-10", ei_iso8859_10}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CP949", ei_ksc5601}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"JIS_X0212.1990-0", ei_jisx0212}, {"JISX0201-1976", ei_jisx0201}, + {""}, {""}, {""}, + {"ISO_8859-15:1998", ei_iso8859_15}, + {""}, {""}, + {"ISO_8859-6", ei_iso8859_6}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"LATIN4", ei_iso8859_4}, + {"CP819", ei_iso8859_1}, + {""}, + {"CP1254", ei_cp1254}, + {""}, {""}, {""}, {""}, {""}, + {"ISO_8859-16:2000", ei_iso8859_16}, + {""}, {""}, {""}, {""}, + {"ISO-IR-179", ei_iso8859_13}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO_8859-5", ei_iso8859_5}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"CP874", ei_cp874}, + {""}, {""}, + {"ISO_8859-16", ei_iso8859_16}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"CSUCS4", ei_ucs4}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CP1133", ei_cp1133}, - {"TIS620.2533-1", ei_tis620}, + {"ISO-IR-144", ei_iso8859_5}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO_8859-3:1988", ei_iso8859_3}, + {"ISO_8859-15", ei_iso8859_15}, + {""}, {""}, + {"JIS_X0208-1983", ei_jisx0208}, + {""}, {""}, {""}, {""}, + {"ISO_646.IRV:1991", ei_ascii}, + {"ISO_8859-2:1987", ei_iso8859_2}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"ISO_8859-1:1987", ei_iso8859_1}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"ISO_8859-6:1987", ei_iso8859_6}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"ISO-8859-4", ei_iso8859_4}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, + {"CSISO57GB1988", ei_iso646_cn}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO-10646-UCS-4", ei_ucs4}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO-IR-149", ei_ksc5601}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"ISO-8859-14", ei_iso8859_14}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CP1250", ei_cp1250}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"ISO_8859-4:1988", ei_iso8859_4}, + {""}, + {"CSISOLATIN4", ei_iso8859_4}, + {""}, {""}, {""}, + {"ISO-IR-199", ei_iso8859_14}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO_8859-7", ei_iso8859_7}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CP950", ei_cp950}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"CYRILLIC", ei_iso8859_5}, + {"CSKSC56011987", ei_ksc5601}, + {""}, {""}, + {"ISO_8859-7:1987", ei_iso8859_7}, + {""}, {""}, {""}, {""}, {""}, + {"ISO_8859-14:1998", ei_iso8859_14}, + {""}, + {"ISO-8859-9", ei_iso8859_9}, + {"ISO_8859-3", ei_iso8859_3}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, - {"TIS620.2533-0", ei_tis620}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"ISO_8859-13", ei_iso8859_13}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ANSI_X3.4-1968", ei_ascii}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, - {"MACCYRILLIC", ei_mac_cyrillic}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"CSUCS4", ei_ucs4}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"JISX0201.1976-0", ei_jisx0201}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"CSKSC56011987", ei_ksc5601}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -621,7 +661,13 @@ aliases_lookup (register const char *str, register unsigned int len) {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, + {"KS_C_5601-1987", ei_ksc5601}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"CSPC850MULTILINGUAL", ei_cp850}, + {""}, {""}, {""}, {""}, + {"MACCYRILLIC", ei_mac_cyrillic}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -632,30 +678,36 @@ aliases_lookup (register const char *str, register unsigned int len) {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO_8859-4", ei_iso8859_4}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, + {"ISO_8859-14", ei_iso8859_14}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, - {"CSPC850MULTILINGUAL", ei_cp850}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO_8859-9", ei_iso8859_9}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"KS_C_5601-1989", ei_ksc5601}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"ISO_8859-9:1989", ei_iso8859_9}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, - {"KSC5601.1987-0", ei_ksc5601} + {""}, + {"CP949", ei_cp949} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) diff --git a/libiconv/cjk_variants.h b/libiconv/cjk_variants.h new file mode 100644 index 0000000..405a6fc --- /dev/null +++ b/libiconv/cjk_variants.h @@ -0,0 +1,4222 @@ + +/* + * CJK variants table + */ + +static const unsigned short cjk_variants[12038] = { + 0x9e44, 0x1e2a, 0x200b, 0xcb87, 0xaf0c, 0x9e0a, 0x9e0b, 0xd42c, + 0x23c1, 0xaf0e, 0x9e04, 0x9e05, 0xa176, 0xd207, 0x2303, 0xa304, + 0x1e12, 0x619c, 0xeb57, 0x9e11, 0x2c02, 0xac08, 0x1e17, 0xa34b, + 0x1e16, 0xa34b, 0x1e20, 0xa775, 0xb96d, 0x23e2, 0x3a37, 0x3b09, + 0xd5c2, 0xb771, 0x4cf8, 0xcd72, 0x1e22, 0xa3be, 0x1e18, 0xa775, + 0x1e24, 0xa169, 0x1e1f, 0xa3be, 0xe149, 0x1e21, 0xa169, 0x23b3, + 0xa6b4, 0x20a1, 0x2e76, 0xcadd, 0xa5aa, 0x00f6, 0x200b, 0xcb87, + 0x3792, 0x3860, 0xb90f, 0xc23f, 0x5c4a, 0x5c50, 0x673b, 0x674a, + 0x68a8, 0xe8ce, 0x9e33, 0x9e32, 0xd1e8, 0x40ba, 0xc232, 0x2a6f, + 0xee97, 0x3319, 0x34e7, 0xd209, 0xa3ca, 0x2208, 0xd2c5, 0x2efc, + 0xdffa, 0x0006, 0x9e94, 0x1e46, 0xe579, 0x1e45, 0xe579, 0x2c1b, + 0x2e7a, 0x2e85, 0x6ebc, 0xeebd, 0xcfa9, 0xc0cf, 0x397d, 0xba02, + 0x1f17, 0x3500, 0x473e, 0xd846, 0xa5ac, 0x564e, 0xd65d, 0x1e58, + 0xb909, 0x1e57, 0xb909, 0x6690, 0x66a0, 0xe6b1, 0xcfd2, 0x60f7, + 0x6109, 0x610a, 0xe115, 0xb6f8, 0x2158, 0xa9cb, 0xdcb7, 0x1e82, + 0xe1e0, 0x1e7e, 0x1e81, 0xbf27, 0x1e79, 0x1e81, 0x2e72, 0xbf27, + 0x6f9c, 0xef9f, 0x1e79, 0x1e7e, 0xbf27, 0x1e71, 0xe1e0, 0x36b8, + 0xc7ad, 0xdc6b, 0xc22d, 0x1e8b, 0xa3d3, 0x1e8a, 0xa3d3, 0xaf0d, + 0x1e8f, 0x1e90, 0xb5bc, 0x1e8e, 0x1e90, 0x35bc, 0xd667, 0x1e8e, + 0x9e8f, 0x1f1d, 0xe6f2, 0x9e44, 0xa6db, 0x2c81, 0x2d57, 0x3b72, + 0xbb73, 0x9e99, 0x9e98, 0x1e9c, 0x9e9e, 0x1e9a, 0x9e9e, 0x3589, + 0x358a, 0x6f4a, 0xef50, 0x1e9a, 0x9e9c, 0xc10f, 0x1ebe, 0xa166, + 0x4522, 0xc523, 0x4546, 0x4552, 0x455d, 0xc55e, 0x9eaf, 0x9eb0, + 0x9eab, 0x9eac, 0xa91c, 0xd9aa, 0xd93b, 0xa6b2, 0x9ebb, 0x9eba, + 0x1ea1, 0xa166, 0xa104, 0xafce, 0x20cd, 0x22a8, 0xa2d5, 0x1ed8, + 0xa0c5, 0xa0d5, 0xdb8e, 0xa0df, 0x21ab, 0x21b0, 0xbc37, 0x2f93, + 0xaf9e, 0x9f5b, 0x1f1e, 0xa098, 0x1f96, 0x2d18, 0xad19, 0x1efa, + 0xa009, 0x9ec5, 0x20ca, 0xa0f2, 0xa40c, 0x9eed, 0xaf74, 0x214f, + 0x6577, 0x6578, 0xe57f, 0xa100, 0xa011, 0x9ede, 0x2047, 0xa3cd, + 0x1fa1, 0xa0f9, 0x1ed3, 0xa009, 0x9fc7, 0x2f6c, 0xb58c, 0x9f4e, + 0x2023, 0x2f77, 0x2fac, 0x4706, 0xeae3, 0x20a0, 0xc26b, 0xae11, + 0x1e51, 0x473e, 0xd846, 0xa12a, 0xa925, 0xb703, 0xa0b4, 0xa005, + 0x1e91, 0x1f20, 0xa0b3, 0x1ed0, 0x2098, 0xce56, 0xa049, 0x1f1d, + 0xa0b3, 0x9fe5, 0x9fd4, 0xa0b7, 0xa000, 0xa02b, 0xa096, 0x207d, + 0xa0de, 0x1f47, 0xcada, 0xa2aa, 0x1f32, 0x1f60, 0xa11e, 0x1f31, + 0x1f60, 0xa11e, 0x9f90, 0xd0c4, 0x9f40, 0x9f3c, 0xb014, 0x9f2b, + 0xae03, 0x9efe, 0x4b28, 0x5eb0, 0x5ec6, 0x6ab5, 0xead4, 0xa360, + 0x6918, 0xe980, 0x1ecf, 0x2f7f, 0xeaf4, 0xa05a, 0x9fab, 0x1f31, + 0x1f32, 0x211e, 0xa9b3, 0xa0ad, 0xa0c9, 0xaf8a, 0x3cd5, 0xc04b, + 0x2002, 0xae76, 0xaf88, 0xa058, 0x29b7, 0xa9ea, 0xb765, 0x6625, + 0x6634, 0x6670, 0xe682, 0xb549, 0x9f35, 0x9ed1, 0x5350, 0xd5a6, + 0x9fe0, 0x1ef7, 0xa0f9, 0x9fb6, 0xa0e5, 0x2075, 0xe049, 0xa074, + 0xa0d1, 0xa108, 0xa115, 0x9f5e, 0xa102, 0x2118, 0xac3d, 0xc7e6, + 0x9fa3, 0xac40, 0xc537, 0x9fe3, 0xccfb, 0x9efc, 0xa101, 0xdf14, + 0xc23c, 0x1f23, 0xb093, 0xa16a, 0xcae2, 0x9fa0, 0xda2b, 0x9fee, + 0x9fc1, 0x9f21, 0xa114, 0xa13c, 0xa006, 0xa137, 0xa008, 0x2039, + 0xa109, 0x1fe2, 0xd129, 0xa036, 0x209a, 0xb548, 0x2079, 0x2099, + 0x20c3, 0xa907, 0x4ca5, 0xeb3b, 0x30de, 0xbb23, 0x9f25, 0x1f75, + 0xae76, 0x207a, 0x24b1, 0xa592, 0x9f1c, 0x9fe9, 0x9feb, 0x1ed3, + 0x9efa, 0xa06c, 0x00f6, 0x1e2a, 0xcb87, 0xd146, 0xa010, 0xa00f, + 0x9eec, 0xae78, 0xa0b9, 0x2fa3, 0xd5c9, 0x1eff, 0xc706, 0xa03c, + 0x22b5, 0xa2cc, 0x9f26, 0xa25a, 0x9ff1, 0x1fed, 0xa109, 0xa0b5, + 0xa024, 0xa0be, 0xd2f1, 0xdcf0, 0x9eee, 0x9f1f, 0x5d0b, 0x5d17, + 0xdd5d, 0x9f83, 0xa0c0, 0x9f5c, 0xafa4, 0xe03c, 0x200a, 0xa0af, + 0x9fa7, 0x1fa6, 0xe049, 0xa078, 0xa077, 0x1ffb, 0x2099, 0x20c3, + 0xa907, 0x2003, 0x24b1, 0xa592, 0xa0c2, 0x1f2a, 0xa0de, 0xa0e8, + 0xa11f, 0x4f75, 0x69e1, 0xea82, 0xafac, 0xb770, 0x9f27, 0x1ed0, + 0x1f1e, 0xce56, 0x1ffb, 0x2079, 0x20c3, 0xa907, 0x1ff2, 0xb548, + 0xafad, 0x1f10, 0xc26b, 0x1e26, 0x2e76, 0xcadd, 0xabb6, 0xa10e, + 0xa13b, 0xa110, 0xa132, 0xa13a, 0x9f63, 0xa06c, 0x1f1d, 0x9f20, + 0x9f1b, 0xa03a, 0x9f24, 0xa01e, 0xa03e, 0xa059, 0xa07b, 0x1ffb, + 0x2079, 0x2099, 0xa907, 0xafb1, 0x9ec5, 0x9f65, 0x9ed9, 0x1ec2, + 0x22a8, 0xa2d5, 0x9fa8, 0x9ec6, 0xb55e, 0xc67b, 0x1f2a, 0xa07d, + 0x9ec9, 0xa0ed, 0x9fa5, 0xa07e, 0xa0f4, 0x3076, 0x30aa, 0xb0e1, + 0xa0e3, 0xe6c7, 0x9ed9, 0xa0e9, 0x1ef7, 0x9fa1, 0x9eea, 0x9fca, + 0x9fac, 0x9ebf, 0x9fa9, 0x1fed, 0xa039, 0xa0a4, 0xa0a7, 0x9fe6, + 0x9faa, 0x1fad, 0xac3d, 0x1f31, 0x1f32, 0x9f60, 0xa07f, 0xa139, + 0x9f18, 0xa0a8, 0x9fea, 0xa127, 0xa0a9, 0xa0a5, 0x9fe8, 0x2150, + 0xa152, 0xcc2a, 0xa1f6, 0x406e, 0xc097, 0x214c, 0xa151, 0x224b, + 0x22ca, 0xac05, 0x214a, 0xa151, 0xa154, 0x1ee7, 0x6577, 0x6578, + 0xe57f, 0x213f, 0xa152, 0x214a, 0xa14c, 0x213f, 0xa150, 0xa14e, + 0xa157, 0xa156, 0x1e68, 0xa9cb, 0xeee8, 0xa160, 0xa15c, 0xb5f7, + 0x1ea1, 0x9ebe, 0xa185, 0x1e21, 0x9e24, 0x9fde, 0xd62d, 0x2929, + 0x6754, 0xe75d, 0x24b2, 0x4b11, 0x65a2, 0x65d7, 0xe5dc, 0xd208, + 0x9e0c, 0x530a, 0xd332, 0x4faa, 0xe90a, 0x4363, 0xc378, 0xa180, + 0xa17e, 0xa6c5, 0xa18b, 0xae3d, 0xa189, 0xa167, 0x2706, 0x270e, + 0xa713, 0xaca1, 0xa184, 0x218c, 0xcb27, 0xa182, 0x218a, 0xcb27, + 0x226e, 0xa3e7, 0xa6e7, 0xa192, 0xd0c4, 0xa190, 0xab82, 0x21a9, + 0xabeb, 0xdecd, 0xdfb2, 0x2b90, 0xab9c, 0xa85a, 0xb700, 0xabc3, + 0x2bbc, 0xabc7, 0xabcc, 0x2199, 0xabeb, 0x2e42, 0xcf83, 0x1ecc, + 0x21b0, 0xbc37, 0x3638, 0xef15, 0xe9ae, 0x1ecc, 0x21ab, 0xbc37, + 0xa1b4, 0x3c96, 0xd85d, 0xbc7a, 0xa1b1, 0xbcc1, 0xbcef, 0xa1cd, + 0xbd0c, 0x21c8, 0xbde8, 0xbd7c, 0xbd82, 0x3053, 0x30bd, 0xbdd2, + 0xbdb8, 0x21d6, 0xbe96, 0xa1c0, 0xbdbc, 0xa1bb, 0xbe1b, 0xbe4a, + 0xc69a, 0xb817, 0x21c6, 0xbe96, 0x21dc, 0xbf9f, 0x21db, 0xbf9f, + 0x4108, 0x4155, 0x4188, 0xc199, 0x2e7e, 0xb73a, 0x21e2, 0xa1e3, + 0x21e1, 0xa1e3, 0x21e1, 0xa1e2, 0xecf3, 0xac45, 0x2904, 0xd655, + 0x21ec, 0x21ee, 0x68a8, 0x68cc, 0xe8ce, 0xece7, 0x21e8, 0x21ee, + 0x68a8, 0x68cc, 0xe8ce, 0x21f4, 0x317f, 0xb191, 0x21e8, 0x21ec, + 0x68a8, 0x68cc, 0xe8ce, 0xa1f1, 0xa1ef, 0x2c32, 0x2c34, 0x2c36, + 0x2c37, 0xeb50, 0xbac8, 0x21ed, 0x317f, 0xb191, 0xa147, 0x2757, + 0x284a, 0xa8a4, 0x2c80, 0xef63, 0x3483, 0xb4ca, 0xa1fe, 0xa1fd, + 0xe47f, 0x2202, 0xe1d6, 0x2200, 0xe1d6, 0xa204, 0xa203, 0x221b, + 0xa275, 0x1e42, 0xd2c5, 0xb81e, 0xd2bb, 0x2283, 0x2290, 0xc53b, + 0xa6ed, 0xb289, 0xa289, 0xa247, 0xa25b, 0x2205, 0x2231, 0x224f, + 0x2259, 0xa275, 0xa22a, 0xa22b, 0x2227, 0x223c, 0xa2ab, 0x2226, + 0x223c, 0xa2ab, 0x624b, 0x6464, 0xe4c7, 0xa220, 0x2225, 0xaf46, + 0x2257, 0x2277, 0x63df, 0xe4f2, 0xa244, 0xe8b3, 0x221b, 0x224f, + 0x2259, 0xa275, 0xa241, 0xd8fd, 0xa24e, 0xa23e, 0x2226, 0x2227, + 0xa2ab, 0xa28a, 0xa23a, 0xa28c, 0xa274, 0xa234, 0x2264, 0xa291, + 0xeb00, 0xa22d, 0xa219, 0x214b, 0x22ca, 0xac05, 0xbe82, 0xbb6c, + 0xa239, 0x221b, 0x2231, 0x2259, 0xa275, 0x226e, 0xa3e7, 0x2263, + 0x2271, 0x228d, 0x228e, 0x2292, 0x2294, 0x61f0, 0xe1fc, 0x222c, + 0x2277, 0x63df, 0xe4f2, 0x221b, 0x2231, 0x224f, 0xa275, 0xa033, + 0xa21a, 0xa265, 0x2251, 0x2271, 0x228d, 0x228e, 0x2292, 0x2294, + 0x61f0, 0xe1fc, 0x2242, 0xa291, 0xa25d, 0x65b9, 0xe609, 0xa287, + 0xa270, 0x218e, 0x2250, 0xa3e7, 0xa269, 0x2251, 0x2263, 0x228d, + 0x228e, 0x2292, 0x2294, 0x61f0, 0xe1fc, 0xb72d, 0xa240, 0x2205, + 0x221b, 0x2231, 0x224f, 0xa259, 0x222c, 0x2257, 0x63df, 0xe4f2, + 0xb22e, 0xa2e6, 0x2212, 0x2290, 0xc53b, 0xcb9a, 0xa267, 0xa218, + 0xa23d, 0xa23f, 0x2251, 0x2263, 0x2271, 0x228e, 0x2292, 0x2294, + 0x61f0, 0xe1fc, 0x2251, 0x2263, 0x2271, 0x228d, 0x2292, 0x2294, + 0x61f0, 0xe1fc, 0x2212, 0x2283, 0xc53b, 0x2242, 0xa264, 0x2251, + 0x2263, 0x2271, 0x228d, 0x228e, 0x2294, 0x61f0, 0xe1fc, 0x2251, + 0x2263, 0x2271, 0x228d, 0x228e, 0x2292, 0x61f0, 0xe1fc, 0x5cad, + 0xdcea, 0x22e7, 0xa2f8, 0xdfa6, 0x4cfc, 0xccff, 0xa2d9, 0xa2f1, + 0x1ec2, 0x20cd, 0xa2d5, 0x9f2e, 0x2226, 0x2227, 0xa23c, 0xa2f5, + 0xa2c1, 0x22b4, 0x22de, 0xb1a5, 0x22b3, 0x22de, 0xb1a5, 0x2026, + 0xa2cc, 0xb548, 0xa2e2, 0xa2b2, 0xb54f, 0x22d1, 0xb555, 0xa2c8, + 0xa2c7, 0x214b, 0x224b, 0xac05, 0x22db, 0x22f2, 0xa2f3, 0x2026, + 0xa2b5, 0x22c5, 0x2f95, 0x2fa0, 0xb555, 0x1ec2, 0x20cd, 0xa2a8, + 0x22d7, 0xb702, 0x22d6, 0xb702, 0xa2a1, 0xa2e9, 0x22cb, 0x22f2, + 0xa2f3, 0xd0dc, 0x22b3, 0x22b4, 0xb1a5, 0xb22e, 0xa2bf, 0xb1c3, + 0xa27f, 0x229d, 0xa2f8, 0xa2da, 0xa2a2, 0x22cb, 0x22db, 0xa2f3, + 0x22cb, 0x22db, 0xa2f2, 0xa2b1, 0x229d, 0xa2e7, 0xa300, 0xa2fb, + 0x1e10, 0xa304, 0x1e10, 0xa303, 0xeead, 0x2fe9, 0x3031, 0xb0a4, + 0xb3ac, 0x5133, 0xd166, 0xa338, 0x37e9, 0xb7fe, 0x2e00, 0xdfca, + 0xa320, 0xa31e, 0xa329, 0xa32d, 0xcbcb, 0x5535, 0xd5cf, 0xa321, + 0xa326, 0xa331, 0x3c47, 0xbed9, 0xa32e, 0x2333, 0x2941, 0xa969, + 0x2332, 0x2941, 0xa969, 0xa31a, 0xa340, 0x3bc9, 0xe1ab, 0xa33a, + 0xe7c6, 0xa352, 0x3607, 0x36fb, 0x6629, 0xe65e, 0xd294, 0x1e16, + 0x9e17, 0xa350, 0x2d0b, 0x53ef, 0xd550, 0x2354, 0x23f6, 0xb5ea, + 0xa34d, 0xa346, 0x384c, 0xb9d5, 0x234f, 0x23f6, 0xb5ea, 0x2358, + 0xa5ae, 0x28f2, 0xdce3, 0x2355, 0xa5ae, 0xb13d, 0xc387, 0x53d4, + 0xd514, 0x9f54, 0xc6e7, 0x2365, 0x2877, 0x3ef7, 0x3f9b, 0x4002, + 0x597f, 0xee75, 0x2364, 0xd97f, 0xd1e5, 0x585b, 0xd85e, 0xadf5, + 0x2918, 0xb23c, 0xae01, 0x237d, 0xc68d, 0xa37b, 0x2dfb, 0xb372, + 0xcf37, 0x3064, 0xdcc9, 0xa374, 0x2373, 0xc68d, 0x2388, 0x23b0, + 0xaee0, 0xb239, 0x2ef0, 0xaef3, 0x23a4, 0x23af, 0x36a6, 0x36c6, + 0x3b74, 0xbb77, 0xc8d4, 0xa382, 0xa3b2, 0x2727, 0xa8d3, 0xa3ad, + 0xa399, 0xc825, 0xef8e, 0xad16, 0x23a0, 0xaec1, 0x28e5, 0x2edb, + 0x613d, 0xe1d0, 0xa38d, 0xa795, 0xaef3, 0xa3a1, 0x2395, 0xaec1, + 0xa39f, 0xaec2, 0xa3b4, 0x2386, 0xb6c6, 0xaec8, 0xaeda, 0x2ecf, + 0xaed0, 0xa38c, 0xaedd, 0x2386, 0x36a6, 0x36c6, 0x3b74, 0xbb77, + 0x2382, 0xaee0, 0xa389, 0x1e25, 0xa6b4, 0xa3a3, 0xbe90, 0xc9c1, + 0xd0b1, 0x60bb, 0x6130, 0xe6a3, 0xa3bb, 0xa3ba, 0x1e1f, 0x9e22, + 0x470c, 0xce23, 0x1e09, 0xaf0e, 0x23c3, 0x23c4, 0xa3c5, 0x23c2, + 0x23c4, 0xa3c5, 0x23c2, 0x23c3, 0xa3c5, 0x23c2, 0x23c3, 0xa3c4, + 0xe749, 0xe746, 0xa3f9, 0xb268, 0x9e41, 0xe6d9, 0x1eee, 0x23db, + 0xc08d, 0xb536, 0xa92c, 0xc2ae, 0x467a, 0x467c, 0x6aea, 0xeaee, + 0x1e8a, 0x9e8b, 0xcdb4, 0x2909, 0xdb8a, 0x354d, 0xb558, 0x23cd, + 0xc08d, 0xac09, 0x4573, 0x4582, 0x4589, 0xc58a, 0x28e1, 0xc77f, + 0x1e1b, 0x3a37, 0x3b09, 0xd5c2, 0x218e, 0x2250, 0xa26e, 0x49d6, + 0x5879, 0xe6bb, 0xa44c, 0x276e, 0x37b1, 0x3aaf, 0x51fa, 0xe8b1, + 0x234f, 0x2354, 0x35ea, 0xd449, 0xd65f, 0x23c8, 0x2606, 0xbb4e, + 0xa630, 0x24a9, 0xa4f6, 0x4c72, 0xefa5, 0x25ab, 0xa644, 0xe5a4, + 0xaf14, 0x1edd, 0xd855, 0xaf8c, 0x26ae, 0xb6cf, 0xa687, 0xa442, + 0xa5ce, 0xb061, 0xa451, 0x252b, 0x2656, 0xda21, 0xa678, 0x5074, + 0xd07d, 0x2518, 0x2553, 0x2554, 0x255f, 0x5aec, 0xe5d9, 0x2434, + 0xa449, 0x2433, 0xa449, 0xa450, 0xd117, 0xa44d, 0xa44a, 0xa415, + 0x3282, 0xc2c2, 0x2433, 0xa434, 0xa43f, 0xa3eb, 0xa43d, 0xa436, + 0xa41e, 0xa638, 0xa6c8, 0xa614, 0xa6a6, 0xa504, 0x24e1, 0x5c9f, + 0xdd20, 0x24bc, 0xa58e, 0xa4fa, 0xa5c6, 0xa5da, 0xda46, 0xe031, + 0xa5dc, 0x2492, 0xda4b, 0xda4d, 0x2611, 0x5656, 0xdb3c, 0xa4e3, + 0x248c, 0x30d2, 0xefa2, 0x248a, 0x30d2, 0xefa2, 0xda60, 0x246a, + 0xda4b, 0xa6a8, 0xa680, 0xa4a4, 0xa65d, 0xa49c, 0x2400, 0xa4f6, + 0xef69, 0x2580, 0xd849, 0x2003, 0x207a, 0xa592, 0x2173, 0xcb11, + 0x618e, 0xee79, 0x2459, 0xa58e, 0xa6a5, 0x65a7, 0xeb28, 0xe7ff, + 0x2516, 0x255e, 0x45d6, 0xc602, 0xa660, 0xa635, 0xa5f6, 0xa666, + 0x2629, 0xdb41, 0xa672, 0xa68c, 0xa665, 0xa5b2, 0x2458, 0x5c9f, + 0xdd20, 0xa485, 0xda36, 0x2560, 0x2586, 0x269e, 0x27d1, 0xb08a, + 0x2400, 0xa4a9, 0xa45a, 0x5a98, 0xdbf1, 0xa457, 0xd123, 0xd39e, + 0xa57a, 0xa523, 0x24d1, 0x255e, 0x45d6, 0xc602, 0x242f, 0x2553, + 0x2554, 0x255f, 0x5aec, 0xe5d9, 0xa61c, 0xa5ca, 0xa62e, 0xa5e9, + 0xa515, 0xa59a, 0xa59e, 0xa41f, 0xdaaf, 0xaff5, 0xa60a, 0xdb2a, + 0xe5ee, 0x242f, 0x2518, 0x2554, 0x255f, 0x5aec, 0xe5d9, 0x242f, + 0x2518, 0x2553, 0x255f, 0x5aec, 0xe5d9, 0xa649, 0xa649, 0x24d1, + 0x2516, 0x45d6, 0xc602, 0x242f, 0x2518, 0x2553, 0x2554, 0x5aec, + 0xe5d9, 0x24f2, 0x2586, 0x269e, 0x27d1, 0xb08a, 0x5854, 0x5858, + 0xe29c, 0xa616, 0xa5c7, 0xa6c0, 0x265b, 0x2699, 0x26d3, 0xef67, + 0xa613, 0x26c9, 0xcf57, 0xa63d, 0xa62f, 0xa510, 0x24af, 0xd849, + 0x6927, 0xe935, 0xdb71, 0x24f2, 0x2560, 0x269e, 0x27d1, 0xb08a, + 0x2459, 0xa4bc, 0x267e, 0xc616, 0x2003, 0x207a, 0xa4b1, 0xa524, + 0x3198, 0x3199, 0xbb56, 0xa527, 0xa5bb, 0x9e27, 0x2403, 0xa644, + 0x9e54, 0x2355, 0xa358, 0x25b7, 0xa674, 0x68df, 0x68e0, 0xe963, + 0xa4df, 0x41df, 0xd425, 0x25af, 0xa674, 0xa5a9, 0xa60d, 0xa6b3, + 0xef45, 0xa45b, 0xa56c, 0xa51d, 0xa417, 0xa45c, 0xa469, 0xe16a, + 0xab60, 0xa637, 0xa522, 0xa6c1, 0xa66f, 0xa4d4, 0xdb30, 0x23f9, + 0xbb4e, 0xa540, 0xa5bd, 0x247c, 0xdb3c, 0xa56f, 0xa455, 0xa567, + 0x2690, 0x2c1d, 0xc51e, 0xa653, 0xa51b, 0xa6b6, 0xa62f, 0x24d7, + 0xdb41, 0xa520, 0x2578, 0xa628, 0xa3fd, 0xa6d1, 0xa4d3, 0xa5e5, + 0xa452, 0xa574, 0xb076, 0xdb50, 0x2403, 0xa5ab, 0xa655, 0x2556, + 0xa557, 0xa668, 0xa618, 0xa645, 0x241f, 0xda21, 0x256e, 0xa699, + 0xa695, 0xa49d, 0xa4d2, 0xdb6b, 0xa4dd, 0xa4d5, 0xa650, 0xdb5f, + 0xa5f3, 0xa4d9, 0x25af, 0xa5b7, 0x585c, 0x585f, 0xe053, 0xa428, + 0xaf53, 0xa591, 0xa49b, 0xa413, 0xa4dc, 0xa694, 0x2617, 0x2c1d, + 0xc51e, 0xa68f, 0xa65c, 0x256e, 0x265b, 0x26d3, 0xef67, 0x24f2, + 0x2560, 0x2586, 0x27d1, 0xb08a, 0xbd4f, 0xa6ca, 0xa6c2, 0xa4bd, + 0xa456, 0xa499, 0xa411, 0x9eb8, 0xa5be, 0x1e25, 0xa3b3, 0xa624, + 0xa6c2, 0xa56d, 0xa5eb, 0x26a3, 0xa6bb, 0xa181, 0xa453, 0x2570, + 0xcf57, 0xa6a2, 0xd2cf, 0xd271, 0xa631, 0x256e, 0x2699, 0xef67, + 0x26f2, 0x26f4, 0xa70d, 0x26de, 0x26ec, 0x2efb, 0x2efd, 0x5ff4, + 0xe025, 0xa6e0, 0x9e96, 0x26d8, 0x26ec, 0x2efb, 0x2efd, 0x5ff4, + 0xe025, 0xe856, 0xa6d9, 0x26e3, 0x2718, 0xccf0, 0x26e2, 0x2718, + 0xccf0, 0x3df5, 0x3e0a, 0xbe15, 0xa18f, 0xa6f1, 0x26d8, 0x26de, + 0x2efb, 0x2efd, 0x5ff4, 0xe025, 0x2213, 0x2712, 0xd597, 0x26f6, + 0x26fb, 0x26fd, 0x2700, 0xa70b, 0xc74f, 0xa6ea, 0x26d7, 0x26f4, + 0xa70d, 0x26fe, 0x2716, 0xa717, 0x26d7, 0x26f2, 0xa70d, 0xa707, + 0x26ef, 0x26fb, 0x26fd, 0x2700, 0xa70b, 0xb5e5, 0x26ef, 0x26f6, + 0x26fd, 0x2700, 0xa70b, 0x26ef, 0x26f6, 0x26fb, 0x2700, 0xa70b, + 0x26f3, 0x2716, 0xa717, 0x26ef, 0x26f6, 0x26fb, 0x26fd, 0xa70b, + 0xa711, 0x2186, 0x270e, 0xa713, 0xa6f5, 0xa70f, 0x26ef, 0x26f6, + 0x26fb, 0x26fd, 0xa700, 0x26d7, 0x26f2, 0xa6f4, 0x2186, 0x2706, + 0xa713, 0xa708, 0xa703, 0x26ed, 0xd597, 0x2186, 0x2706, 0xa70e, + 0x26f3, 0x26fe, 0xa717, 0x26f3, 0x26fe, 0xa716, 0x26e2, 0xa6e3, + 0x383e, 0xbb12, 0xa721, 0xa71f, 0x453a, 0xc53c, 0xd056, 0x238b, + 0xa8d3, 0xb257, 0xb747, 0xc3ea, 0x2754, 0x27ca, 0xadb3, 0xa8d9, + 0x2834, 0xa872, 0x3b7e, 0x3b7f, 0x3b81, 0xbca1, 0xe62f, 0x2c85, + 0xe62a, 0x276f, 0x28ca, 0x28de, 0xe62b, 0xaea7, 0xe62c, 0xa78b, + 0x2730, 0x27ca, 0xadb3, 0x21f7, 0x284a, 0xa8a4, 0xade0, 0xa805, + 0x28b0, 0x28b5, 0x28c7, 0x28dc, 0x4f48, 0xcf4e, 0xa8e2, 0x27bb, + 0xa8e9, 0x2862, 0xe696, 0x28b3, 0xe6ab, 0x289c, 0xc908, 0xa802, + 0xa803, 0xb1bb, 0xa88c, 0x6640, 0xe641, 0xbce5, 0x23f0, 0xd1fa, + 0x274f, 0xe62b, 0xa7a7, 0xa787, 0x1e18, 0x9e20, 0xa7a2, 0xa8a2, + 0xa7c0, 0xa8df, 0xa8e0, 0xa8da, 0xa773, 0xa753, 0x2841, 0xa8d8, + 0xc561, 0xe67b, 0xa39a, 0xa806, 0x282f, 0x2c27, 0xac2d, 0xa79c, + 0xa79b, 0xa8a2, 0xa778, 0xa8be, 0xa770, 0xab88, 0x280a, 0xd056, + 0xa88a, 0xa7e1, 0xa8b6, 0xa8cb, 0xa84f, 0xa816, 0x275d, 0xa8e9, + 0xa782, 0xc86e, 0xe656, 0x2730, 0x2754, 0xadb3, 0x24f2, 0x2560, + 0x2586, 0x269e, 0xb08a, 0xa7d3, 0xa7d2, 0xa852, 0x2864, 0xa8ce, + 0xa81d, 0x28c4, 0xe1ce, 0x2824, 0xe684, 0xa7ad, 0xc897, 0xb267, + 0x2d0e, 0x2d5c, 0xc895, 0xb383, 0xa763, 0xa764, 0xa75a, 0xa796, + 0xd3eb, 0xa7a9, 0xa879, 0x28ae, 0xa8af, 0xa7b4, 0xe67b, 0xa7da, + 0x27de, 0xe684, 0x6636, 0xe68e, 0x279a, 0x2c27, 0xac2d, 0x2895, + 0xe681, 0xb2a5, 0x273a, 0xa872, 0x454c, 0xc54d, 0x2792, 0xa8d8, + 0xa8ea, 0x21f7, 0x2757, 0xa8a4, 0xd314, 0xc57b, 0xa7b2, 0xa851, + 0xa850, 0xa7d8, 0xa896, 0xbd82, 0xa8a7, 0xa1a2, 0xd46c, 0xa86b, + 0xa75e, 0x27d9, 0xa8ce, 0xe663, 0x46d0, 0xee7d, 0xa861, 0x273a, + 0xa834, 0xac18, 0x2364, 0xee75, 0x2811, 0xa8cd, 0x450e, 0x4816, + 0xc8da, 0xc245, 0xa7ab, 0xa767, 0x2830, 0xe681, 0xa854, 0xa89e, + 0x28bb, 0xc246, 0x2760, 0xc908, 0xa897, 0x277a, 0xa7a1, 0x21f7, + 0x2757, 0xa84a, 0xa859, 0x2815, 0xa8af, 0x2815, 0xa8ae, 0x275b, + 0x28b5, 0x28dc, 0x4f48, 0xcf4e, 0x275f, 0xe6ab, 0x275b, 0x28b0, + 0x28dc, 0x4f48, 0xcf4e, 0xa7af, 0xde87, 0xa899, 0xa7a6, 0x27dc, + 0xe1ce, 0xa75b, 0x274f, 0xa8de, 0xa7b1, 0xa8e4, 0xa879, 0x27d9, + 0xa864, 0xc4bd, 0x238b, 0xa727, 0x2792, 0xa841, 0xa739, 0xa786, + 0x275b, 0x28b0, 0x28b5, 0x4f48, 0xcf4e, 0x274f, 0xa8ca, 0xa784, + 0xa785, 0x23e1, 0xc77f, 0xa75c, 0xa8cc, 0x2398, 0x2edb, 0xe13d, + 0x275d, 0xa7bb, 0xa846, 0x28ef, 0xa8f5, 0x28ee, 0xa8f5, 0xd072, + 0xa8f9, 0x2356, 0xdce3, 0x3bbb, 0xbbbc, 0x28ee, 0xa8ef, 0x28f7, + 0xa8fa, 0x28f6, 0xa8fa, 0xa8fc, 0xa8f1, 0x28f6, 0xa8f7, 0x2a7f, + 0xd05f, 0xa8f8, 0x2900, 0xabff, 0x28fd, 0xabff, 0xa90a, 0x21e6, + 0xd655, 0xe64d, 0x1ffb, 0x2079, 0x2099, 0xa0c3, 0x23d8, 0xdb8a, + 0xa902, 0x2fa9, 0x5907, 0xd986, 0xa913, 0xa90f, 0xd641, 0x236f, + 0xb23c, 0xa91b, 0xa91a, 0x9eb1, 0xa920, 0xa91f, 0x2923, 0xb8a6, + 0x2922, 0xb8a6, 0x9f19, 0x2172, 0x6754, 0xe75d, 0xa3cf, 0xbb80, + 0x372c, 0xb94d, 0xbcf0, 0xe82d, 0xbbd4, 0xda87, 0xa93e, 0xa96a, + 0xa939, 0x2332, 0x2333, 0xa969, 0xa950, 0xcad2, 0xb7f0, 0xa96e, + 0xeede, 0xa942, 0x4287, 0xe029, 0x2968, 0x296c, 0xc34e, 0xaf09, + 0xc55a, 0x2967, 0xadb4, 0x2965, 0xadb4, 0x2956, 0x296c, 0xc34e, + 0x2332, 0x2333, 0xa941, 0xa93a, 0x2956, 0x2968, 0xc34e, 0xa94b, + 0x29b3, 0xab2d, 0x29e6, 0xa9e7, 0x299d, 0x2a24, 0x4ca7, 0xccda, + 0x2a66, 0xaa8d, 0xaabd, 0xa9d9, 0x29f8, 0xd505, 0xa9ac, 0xc945, + 0xc385, 0xaab8, 0x2986, 0x2a24, 0x4ca7, 0xccda, 0xaaf5, 0xaad7, + 0x2aaf, 0xab00, 0xa992, 0x1f60, 0x2976, 0xab2d, 0x1f84, 0xa9ea, + 0x2a3f, 0xaa40, 0xaa12, 0xa9ca, 0xa9c9, 0x1e68, 0xa158, 0xa9d7, + 0xaa8e, 0xaa30, 0xa9cd, 0xa98a, 0xd591, 0xaa1f, 0x2978, 0xa9e7, + 0x2978, 0xa9e6, 0x1f84, 0xa9b7, 0xa9ec, 0xa9eb, 0xaae6, 0x298d, + 0xd505, 0xaa63, 0xaa41, 0xaa6d, 0xab08, 0xab0c, 0xab4c, 0xa9c6, + 0x2b22, 0xab43, 0x2a2f, 0xaa31, 0xa9e2, 0x2986, 0x299d, 0x4ca7, + 0xccda, 0xab2a, 0xab09, 0x2a1b, 0xaa31, 0xa9d2, 0x2a1b, 0xaa2f, + 0xaaa7, 0x2afa, 0xaafb, 0x29b8, 0xaa40, 0x29b8, 0x2a3f, 0xaa50, + 0xaa04, 0xaa40, 0xa9fb, 0x2987, 0xaa8d, 0xbdeb, 0xaa05, 0x1e3d, + 0xee97, 0xaaff, 0x2b30, 0x2b46, 0xab7e, 0xab0b, 0xab38, 0x28fb, + 0xd05f, 0x2987, 0xaa66, 0xa9d0, 0xaa32, 0xaabc, 0xab03, 0x29ab, + 0xab00, 0xa99b, 0xaaaa, 0xa988, 0x3127, 0xd06d, 0x2b1d, 0xd885, + 0xab32, 0xab21, 0xab2a, 0xa9aa, 0xa9ee, 0xab19, 0xa9a9, 0x3194, + 0xc644, 0x2a34, 0xaafb, 0x2a34, 0xaafa, 0xaa73, 0x29ab, 0xaaaf, + 0xaaad, 0xaa06, 0xaa2d, 0xaa75, 0xaa07, 0xaaf1, 0x2acb, 0xd885, + 0xaad2, 0x2a18, 0xab43, 0xab37, 0x2a26, 0xaad4, 0x2976, 0xa9b3, + 0x2a74, 0x2b46, 0xab7e, 0xaad0, 0xab24, 0xaa76, 0xb1d2, 0x2a18, + 0xab22, 0x2a74, 0x2b30, 0xab7e, 0xaa08, 0xab53, 0xab52, 0xab6b, + 0xa5e3, 0x2b78, 0x3569, 0x3585, 0x3586, 0xb588, 0xab7f, 0xab59, + 0x2b66, 0x3569, 0x3585, 0x3586, 0xb588, 0xab7d, 0xab7c, 0x2a74, + 0x2b30, 0xab46, 0xab6a, 0x2bcd, 0x2bd5, 0x2bd7, 0x2bdc, 0x2be7, + 0xc52f, 0xa197, 0x4260, 0x5675, 0xd6c7, 0xca79, 0xa7a8, 0xca81, + 0xd089, 0x219d, 0xab9c, 0x219d, 0xab90, 0x2bda, 0x2bf3, 0x2bf6, + 0xc3e4, 0x2b9f, 0xabe6, 0x2b9e, 0xabe6, 0xabf5, 0x2bb7, 0xabe9, + 0xac4e, 0xb1b2, 0xabae, 0xabab, 0x5b8c, 0xe1bc, 0xa0a2, 0x2ba1, + 0xabe9, 0xabc6, 0x21a6, 0xabc7, 0x2bdb, 0xabec, 0x5cd3, 0xdcd4, + 0xe1c7, 0xa1a4, 0xabbb, 0x21a6, 0xabbc, 0x6751, 0xe752, 0x66ba, + 0x674d, 0x674e, 0x674f, 0x6db4, 0x6e16, 0xee64, 0xa1a8, 0x2b81, + 0x2bd5, 0x2bd7, 0x2bdc, 0x2be7, 0xc52f, 0xaebd, 0x2b81, 0x2bcd, + 0x2bd7, 0x2bdc, 0x2be7, 0xc52f, 0x2b81, 0x2bcd, 0x2bd5, 0x2bdc, + 0x2be7, 0xc52f, 0x2b9d, 0x2bf3, 0x2bf6, 0xc3e4, 0x2bbd, 0xabec, + 0x2b81, 0x2bcd, 0x2bd5, 0x2bd7, 0x2be7, 0xc52f, 0xabe2, 0xda67, + 0x4aad, 0xcab6, 0xabdd, 0x2b9e, 0xab9f, 0x2b81, 0x2bcd, 0x2bd5, + 0x2bd7, 0x2bdc, 0xc52f, 0x2ba1, 0xabb7, 0x2199, 0xa1a9, 0x2bbd, + 0xabdb, 0x2b9d, 0x2bda, 0x2bf6, 0xc3e4, 0xaba0, 0x2b9d, 0x2bda, + 0x2bf3, 0xc3e4, 0x2bfe, 0xac0d, 0xac0b, 0xac0e, 0x2bf9, 0xac0d, + 0x28fd, 0xa900, 0x1e13, 0xac08, 0x214b, 0x224b, 0xa2ca, 0xac07, + 0xac06, 0x1e13, 0xac02, 0xa3de, 0xabfb, 0x2bf9, 0xabfe, 0xabfc, + 0x2c13, 0x2c14, 0xc23e, 0x2c12, 0x2c14, 0xc23e, 0x2c12, 0x2c13, + 0xc23e, 0xa875, 0xac1a, 0xac19, 0x1e48, 0x2e85, 0x6ebc, 0xeebd, + 0x2617, 0x2690, 0xc51e, 0xc1ce, 0x2c20, 0x5d7b, 0x6bae, 0x6c7b, + 0xec9c, 0x2c1f, 0x5d7b, 0x6bae, 0x6c7b, 0xec9c, 0x2c23, 0x2c24, + 0xb023, 0xac22, 0x2c22, 0xb023, 0xac26, 0xac25, 0x279a, 0x282f, + 0xac2d, 0xac2b, 0xac29, 0xeb40, 0x279a, 0x282f, 0xac27, 0x21f2, + 0x2c34, 0x2c36, 0x2c37, 0xeb50, 0x21f2, 0x2c32, 0x2c36, 0x2c37, + 0xeb50, 0x21f2, 0x2c32, 0x2c34, 0x2c37, 0xeb50, 0x21f2, 0x2c32, + 0x2c34, 0x2c36, 0xeb50, 0xac4d, 0x1fad, 0x2118, 0xc6e1, 0x1fb7, + 0xddfc, 0xac64, 0xac53, 0xa1e5, 0xac4a, 0xac46, 0x6ce5, 0xee1f, + 0xac38, 0xaba9, 0x2c5b, 0xae48, 0xac43, 0x2c4f, 0xae48, 0xac6c, + 0xac62, 0xac61, 0xac42, 0xac68, 0xac66, 0xac5e, 0xadbc, 0xa1fa, + 0x1e97, 0x2d57, 0x3b72, 0xbb73, 0xdc48, 0x2742, 0xe62a, 0xdc3a, + 0xad87, 0xad17, 0xacf4, 0xad50, 0x2cf6, 0x2d8b, 0x2d8c, 0x2db9, + 0x6666, 0x669d, 0xe6af, 0xa188, 0x2d52, 0x2d53, 0x2dcc, 0x2dd6, + 0x2dd7, 0xc89e, 0xadba, 0xadbd, 0xad87, 0xad2c, 0xadcb, 0xada8, + 0xada7, 0xacdd, 0xacd2, 0xacfd, 0xada2, 0xada0, 0xad22, 0xadd2, + 0xace9, 0xace8, 0xacf0, 0xacef, 0xac98, 0x2d58, 0x2db8, 0xadc6, + 0x2c9b, 0x2d8b, 0x2d8c, 0x2db9, 0x6666, 0x669d, 0xe6af, 0xace1, + 0xad97, 0xad0d, 0xadae, 0xad08, 0xad07, 0x234e, 0xd3ef, 0xad03, + 0x27fc, 0x2d5c, 0xc895, 0xa393, 0xac97, 0x1ed1, 0xad19, 0x1ed1, + 0xad18, 0xace5, 0xacbd, 0x2d83, 0xad84, 0xcbcf, 0xac9a, 0x2ca9, + 0x2d53, 0xc89e, 0x2ca9, 0x2d52, 0xc89e, 0x1e97, 0x2c81, 0x3b72, + 0xbb73, 0x2cf5, 0x2db8, 0xadc6, 0xad94, 0x27fc, 0x2d0e, 0xc895, + 0xad81, 0x3e13, 0xbeaa, 0xad73, 0xad6f, 0xad5d, 0xad2d, 0xad2d, + 0x2c96, 0xacb4, 0x2c9b, 0x2cf6, 0x2d8c, 0x2db9, 0x6666, 0x669d, + 0xe6af, 0x2c9b, 0x2cf6, 0x2d8b, 0x2db9, 0x6666, 0x669d, 0xe6af, + 0xad5a, 0xad02, 0xace4, 0xace3, 0xacc4, 0xacc3, 0xad04, 0xe6df, + 0x2730, 0x2754, 0xa7ca, 0x2965, 0xa967, 0x2cf5, 0x2d58, 0xadc6, + 0x2c9b, 0x2cf6, 0x2d8b, 0x2d8c, 0x6666, 0x669d, 0xe6af, 0xacad, + 0xac7f, 0xacb3, 0x2dd3, 0xadd4, 0x2cf5, 0x2d58, 0xadb8, 0xacbf, + 0x2ca9, 0x2dd6, 0xadd7, 0xace6, 0xadc5, 0xadc5, 0x2ca9, 0x2dcc, + 0xadd7, 0x2ca9, 0x2dcc, 0xadd6, 0xaddd, 0xaddb, 0xa759, 0xade3, + 0xade2, 0xe78f, 0xadf0, 0xadef, 0xa36e, 0xd856, 0xadfd, 0x2377, + 0xb372, 0xadfa, 0x67cd, 0xe7e8, 0x231d, 0xdfca, 0x2370, 0x2e63, + 0xae64, 0x9f48, 0xae25, 0xae2b, 0xcd19, 0xae43, 0xae33, 0x9f16, + 0xd88b, 0xcd48, 0xcc3e, 0xcb92, 0x2e5f, 0xb5d8, 0xae05, 0x2e2f, + 0xae36, 0xae40, 0xae08, 0xd4c6, 0x2e47, 0x2e5a, 0xae6b, 0x2e26, + 0xae36, 0x2f52, 0x3b78, 0xc688, 0xae6c, 0xae10, 0x2e26, 0xae2f, + 0xae58, 0xae57, 0xa183, 0xae27, 0x21aa, 0xcf83, 0xae0f, 0x2e2e, + 0x2e5a, 0xae6b, 0x2c4f, 0xac5b, 0xce28, 0xae3c, 0xae3b, 0x2e2e, + 0x2e47, 0xae6b, 0x2e1c, 0xb5d8, 0xb5d9, 0x2e01, 0xae64, 0x2e01, + 0xae63, 0x2e2e, 0x2e47, 0xae5a, 0xae31, 0x1e7e, 0x2e79, 0xb9a6, + 0xc9ca, 0x1e26, 0x1f75, 0x2002, 0x20a1, 0x2e77, 0xcadd, 0xae76, + 0xa016, 0x2e72, 0xb9a6, 0x9e48, 0xa1e0, 0x2e83, 0x2eb5, 0xaee3, + 0x2ef0, 0xaef3, 0x2e7f, 0xaee3, 0x5358, 0xd38a, 0x1e48, 0x2c1b, + 0x6ebc, 0xeebd, 0xb176, 0xc240, 0xaeec, 0xaee1, 0xaeab, 0x2fdc, + 0xb1c9, 0xaedf, 0xef90, 0x2ec3, 0xaee2, 0xa750, 0xae93, 0x2e7f, + 0x53f4, 0x544a, 0xd4ed, 0xaebb, 0x377e, 0x3780, 0x37a9, 0x37d7, + 0xb8a5, 0xaeb6, 0xaece, 0xabd3, 0xaedf, 0x2395, 0xa3a0, 0xa3a2, + 0x2e9f, 0xaee2, 0xa3a6, 0xaebc, 0x23a9, 0xaed0, 0x23a9, 0xaecf, + 0xa3a8, 0x2398, 0x28e5, 0xe13d, 0xa3ae, 0x2e99, 0xaebf, 0x2382, + 0xa3b0, 0xae91, 0x2e9f, 0xaec3, 0x2e7f, 0xae83, 0xaeea, 0xaee9, + 0xae90, 0x2385, 0x2e81, 0xaef3, 0x2385, 0x239b, 0x2e81, 0xaef0, + 0xdfea, 0x26d8, 0x26de, 0x26ec, 0x2efd, 0x5ff4, 0xe025, 0x1e43, + 0xdffa, 0x26d8, 0x26de, 0x26ec, 0x2efb, 0x5ff4, 0xe025, 0xe58b, + 0x44e3, 0x598d, 0x5fa1, 0x5fa7, 0x5fa8, 0x5fa9, 0xdfaf, 0xc570, + 0xb8c4, 0x330a, 0xb335, 0xa958, 0x9e00, 0x9e8c, 0x1e09, 0xa3c1, + 0x5cae, 0x5cb3, 0xdd30, 0xaf12, 0xaf11, 0xa40a, 0xaf35, 0x2f4c, + 0xc030, 0xcd43, 0xaf33, 0xaf4e, 0xaf2a, 0xaf20, 0xaf3a, 0x2f3e, + 0xaf48, 0xaf37, 0xaf3c, 0xaf3b, 0x2f39, 0xaf48, 0xa22b, 0x2f39, + 0xaf3e, 0xaf25, 0xaf2f, 0xaf51, 0xaf50, 0x2e30, 0x3b78, 0xc688, + 0x2679, 0xc576, 0xaf55, 0x2f54, 0x6304, 0xe332, 0xcbf2, 0x2f5a, + 0xbc47, 0x2f59, 0xbc47, 0x2f5c, 0x2f5d, 0xaf5e, 0x2f5b, 0x2f5d, + 0xaf5e, 0x2f5b, 0x2f5c, 0xaf5e, 0x2f5b, 0x2f5c, 0xaf5d, 0xaf60, + 0x2f5f, 0xd4a6, 0xaf66, 0xaf65, 0xaf72, 0xcdb5, 0xe6d5, 0x1efd, + 0xb58c, 0xaf68, 0x9ee2, 0x1eff, 0x2fac, 0xeae3, 0xafb9, 0x1f5b, + 0xeaf4, 0x2f83, 0xdfec, 0x2fb0, 0x2fb4, 0xafb5, 0xaf80, 0x2f91, + 0x5ff3, 0xe015, 0xc2e5, 0x9f77, 0x9f6a, 0xa40e, 0xe65f, 0x2f84, + 0x5ff3, 0xe015, 0x1ece, 0xaf9e, 0x22d1, 0xafa0, 0x1ece, 0xaf93, + 0x22d1, 0xaf95, 0xc9a6, 0x201f, 0xd5c9, 0xa065, 0x290d, 0xd986, + 0x1eff, 0x208d, 0xaf77, 0xa09c, 0xaf81, 0xa0c4, 0x2fb7, 0x3074, + 0xb0b3, 0x2f81, 0xafb5, 0x2f81, 0xafb4, 0x2fb3, 0x3074, 0xb0b3, + 0xaf7b, 0xafc4, 0xafc3, 0xb1b6, 0x9ec1, 0x31f4, 0xb1fa, 0xda8c, + 0xb07e, 0x2e94, 0xb1c9, 0xb09f, 0xb025, 0xb182, 0x2306, 0x3031, + 0xb0a4, 0xb0b4, 0xa538, 0xb13e, 0x31d0, 0xb1f7, 0xb14b, 0xb16b, + 0xb1ae, 0xb16a, 0xb0b5, 0xb134, 0x9f42, 0xb091, 0xb190, 0xb056, + 0x2c22, 0xac24, 0xafe3, 0xb060, 0x2306, 0x2fe9, 0xb0a4, 0x30e3, + 0x3374, 0x4dcf, 0x4deb, 0xce3d, 0xb1df, 0xb1cc, 0xb052, 0xb200, + 0xb046, 0x21c4, 0xb0bd, 0xb01d, 0xb02a, 0x241d, 0xb08b, 0x2379, + 0xdcc9, 0xd03b, 0xb119, 0x3085, 0xb0a6, 0xb1c7, 0x2fb3, 0x2fb7, + 0xb0b3, 0xb0e0, 0x20eb, 0x2641, 0x30aa, 0xb0e1, 0xb15f, 0xb1e8, + 0xb137, 0xb0fb, 0x30a9, 0xb0f1, 0xb0f2, 0xafd9, 0x30e5, 0xb142, + 0x3111, 0xb139, 0x3071, 0xb0a6, 0x24f2, 0x2560, 0x2586, 0x269e, + 0xa7d1, 0xb061, 0xc302, 0xb016, 0x9fd4, 0x3102, 0xda96, 0xdbef, + 0xafe2, 0xb0ca, 0x2306, 0x2fe9, 0xb031, 0x3071, 0xb085, 0x307c, + 0xb0f1, 0x20eb, 0x3076, 0xb0e1, 0xb164, 0xb1f8, 0xb173, 0xb1ab, + 0x2fb3, 0x2fb7, 0xb074, 0xaff0, 0xb005, 0xe5f7, 0x21c4, 0xb053, + 0x30a2, 0xea5a, 0x248a, 0x248c, 0xefa2, 0x1ffd, 0xbb23, 0xb075, + 0x20eb, 0x3076, 0xb0aa, 0xb03b, 0x307f, 0xb142, 0xb1fc, 0xb158, + 0xb1f2, 0xb18a, 0xb11c, 0x3159, 0xb15a, 0xb19a, 0xb163, 0x307c, + 0xb0a9, 0xb07d, 0xd822, 0xb07b, 0xd90a, 0x3096, 0xda96, 0x4609, + 0xc652, 0x3080, 0xb139, 0xb06a, 0xc231, 0xb0ec, 0xb14d, 0xb181, + 0xb1a4, 0xb192, 0x2abf, 0xd06d, 0xb1fc, 0xb006, 0xb07a, 0x3080, + 0xb111, 0xb14e, 0xa35a, 0xaffe, 0xe858, 0x307f, 0xb0e5, 0xb817, + 0xbbb7, 0xb001, 0xb120, 0x313c, 0x361a, 0xc718, 0x3174, 0xb1fe, + 0xb0e8, 0x30ed, 0xb15a, 0x30ed, 0xb159, 0x3078, 0xb185, 0xb0ef, + 0xb0ab, 0xb004, 0xb002, 0xb196, 0xd651, 0xb0ad, 0xb151, 0xae86, + 0x317d, 0xb21a, 0x317c, 0xb21a, 0xbb32, 0x21ed, 0x21f4, 0xb191, + 0xb121, 0xafe7, 0xb15f, 0xb1a9, 0xb0eb, 0xb01c, 0x21ed, 0x21f4, + 0xb17f, 0xb126, 0x2af6, 0xc644, 0x316d, 0xb197, 0xb196, 0x259c, + 0x3199, 0xbb56, 0x259c, 0x3198, 0xbb56, 0xb0ee, 0xb124, 0x22b3, + 0x22b4, 0xa2de, 0xb187, 0xb0af, 0xb003, 0xabaa, 0xafc6, 0xa766, + 0xa2e4, 0xb073, 0x2e94, 0xafdc, 0xb03f, 0xb1d4, 0x3000, 0xb1f7, + 0xb1e3, 0x2b3e, 0xb1f6, 0xb1cd, 0xb1f5, 0xd499, 0xb03c, 0xb1d1, + 0xb1e7, 0xb1e6, 0xb079, 0xb0e9, 0x2fcf, 0xb1ff, 0xb1dc, 0xb1d2, + 0x3000, 0xb1d0, 0xb0ac, 0xafcf, 0x30e7, 0xb133, 0xbb22, 0xb151, + 0xb1f4, 0xb04b, 0xb207, 0xb206, 0xb214, 0x322f, 0xb232, 0xb20b, + 0xb227, 0x3226, 0xb230, 0x317c, 0xb17d, 0xb21e, 0x5ca1, 0xdd22, + 0xb21b, 0x3218, 0xb230, 0xb217, 0xb22c, 0xb229, 0x2279, 0xa2e0, + 0x320f, 0xb232, 0x3218, 0xb226, 0x320f, 0xb22f, 0x3237, 0xb238, + 0x3236, 0xb238, 0x3236, 0xb237, 0xa384, 0xb23e, 0x236f, 0xa918, + 0xb23b, 0xb24c, 0xb24b, 0xce94, 0x33e0, 0xcd2e, 0x34b2, 0xb4c8, + 0xb2c2, 0xa728, 0x5a17, 0xdbac, 0xb34d, 0xb268, 0xe1e6, 0xa7f7, + 0x23c9, 0xb260, 0x32e1, 0xb4f4, 0xb36b, 0xb383, 0xb3da, 0xb4a6, + 0xb4fe, 0xb5bc, 0x2448, 0xc2c2, 0xa214, 0xb4ab, 0xb2cb, 0xb2d4, + 0xb2d7, 0x32e9, 0xb4c7, 0xb476, 0xb473, 0xb384, 0xb436, 0xdb77, + 0xa831, 0xb4e1, 0x32de, 0x4274, 0xd9dd, 0xb255, 0xb4d4, 0xb49a, + 0xb29b, 0xb2ff, 0x37b4, 0xb7fa, 0xb428, 0xb29c, 0xb2d6, 0xb2d5, + 0xb29d, 0xb2dd, 0xb2dc, 0xb2b5, 0xb4ec, 0x336e, 0xb4da, 0x3269, + 0x3304, 0xb4f4, 0xb50f, 0xb3c0, 0xb4c1, 0xb514, 0xb4f0, 0x34a5, + 0xc67a, 0x329e, 0xb4c7, 0xb2cf, 0xb39b, 0x32e1, 0xb4f4, 0x2f04, + 0xb335, 0x1e3e, 0x34e7, 0xd209, 0xb46f, 0xb523, 0xb397, 0xb4be, + 0xb4bb, 0xb33e, 0xb493, 0xb4cb, 0xb49f, 0xb399, 0xb4e0, 0xb3ee, + 0xb48f, 0x2f04, 0xb30a, 0xb412, 0xdf13, 0xb31f, 0xb3d2, 0x3405, + 0x34b9, 0xb52a, 0x38b1, 0x4975, 0xcd91, 0xb25e, 0xb3d1, 0xd379, + 0xb41c, 0xb488, 0xb40d, 0xb4bf, 0xb3db, 0x3417, 0xb4e3, 0xd20d, + 0xb26a, 0x32e0, 0xb4da, 0x2377, 0xadfb, 0xb03b, 0x3816, 0xb8f2, + 0x27fd, 0xb26b, 0xb2a1, 0xb31c, 0xb323, 0xb302, 0xe1c7, 0xb4d1, + 0xa30a, 0xb3ed, 0xb4c4, 0xb451, 0xb4f2, 0xb4a3, 0xb47b, 0xb414, + 0xb45c, 0xc8b0, 0xb2e3, 0xb34f, 0xb33f, 0xb26c, 0xb362, 0xb24e, + 0xb3b2, 0xb325, 0xd0cc, 0x3416, 0xb447, 0xb52c, 0xb4b3, 0xb519, + 0xb4f1, 0xb45f, 0xce3d, 0x3341, 0x34b9, 0xb52a, 0xb784, 0xb35f, + 0xb337, 0xb3bb, 0x33fa, 0xb447, 0xb363, 0x335c, 0xd490, 0xb2d3, + 0xb498, 0xb528, 0xb2a2, 0x34d5, 0xb51c, 0xb9a8, 0x3444, 0xb51d, + 0x3442, 0xb51d, 0xb504, 0x34fa, 0xd96c, 0x33fa, 0xb416, 0xb4ef, + 0xb524, 0xb3b4, 0xb3bc, 0xb402, 0x4dcf, 0x4deb, 0xce3d, 0xb4f5, + 0xb31a, 0xb2a0, 0xb29f, 0xb3ba, 0x21fb, 0xb4ca, 0xb516, 0xb35e, + 0xb326, 0xb491, 0xb490, 0xb320, 0xb42d, 0xb2c8, 0xb322, 0xb4cd, + 0xb3b8, 0x32e8, 0xc67a, 0xb26f, 0x4d55, 0x4d76, 0xcedd, 0xb29a, + 0x3251, 0xb4c8, 0xb3ff, 0xb506, 0xb4f7, 0xb4fc, 0x3341, 0x3405, + 0xb52a, 0xb51b, 0xb31e, 0xb31d, 0xb361, 0xb2e5, 0xb3b3, 0x329e, + 0xb2e9, 0x3251, 0xb4b2, 0x21fb, 0xb483, 0xb321, 0xb4a1, 0xb3a5, + 0xb2c5, 0x343a, 0xb51c, 0x32e0, 0xb36e, 0xb4fb, 0xb324, 0xb2ac, + 0xb363, 0xb52c, 0x1e3e, 0x3319, 0xd209, 0xb2df, 0xb448, 0xb2e7, + 0xb401, 0xb3b7, 0x3269, 0x32e1, 0xb304, 0xb469, 0x34b7, 0xd96d, + 0xb446, 0xb4de, 0xb4b8, 0xb50a, 0xb270, 0x9e51, 0xb445, 0xb522, + 0xb4b5, 0xb51f, 0xb4fd, 0xb2e2, 0xb522, 0xb2e6, 0xb484, 0xb400, + 0xb4ba, 0x343a, 0xb4d5, 0x3442, 0xb444, 0xb508, 0x3505, 0xb512, + 0xb31b, 0xb44a, 0xb432, 0x3341, 0x3405, 0xb4b9, 0xc234, 0x33fd, + 0xb4e5, 0xb535, 0xb534, 0xa3ce, 0xd003, 0x4b27, 0x4b56, 0x4b5e, + 0xcba3, 0x1ff2, 0x209a, 0xa2b9, 0x9f8e, 0xb575, 0x23d9, 0xb558, + 0xb559, 0xa2c4, 0x22c5, 0xa2d1, 0x5d01, 0xdd25, 0x23d9, 0xb54d, + 0xb54e, 0x3582, 0xbb5b, 0xa0d8, 0x2b66, 0x2b78, 0x3585, 0x3586, + 0xb588, 0xb578, 0xb54c, 0xb5c9, 0xb570, 0x69c6, 0x69c8, 0x6a45, + 0xea71, 0xbb5d, 0x355b, 0xbb5b, 0xbbd9, 0x2b66, 0x2b78, 0x3569, + 0x3586, 0xb588, 0x2b66, 0x2b78, 0x3569, 0x3585, 0xb588, 0x2b66, + 0x2b78, 0x3569, 0x3585, 0xb586, 0x1e9d, 0x358a, 0x6f4a, 0xef50, + 0x1e9d, 0x3589, 0x6f4a, 0xef50, 0x358e, 0xef4b, 0x1efd, 0xaf6c, + 0xd9ba, 0x358b, 0xef4b, 0xb595, 0x359e, 0xd7a4, 0xb593, 0x65d8, + 0x6b25, 0x6b26, 0x6b2a, 0xeb2d, 0x3594, 0xd7a4, 0xe159, 0xb5ac, + 0xb5a9, 0xb5b7, 0xb5b5, 0xb5b2, 0xb5ad, 0x1e8e, 0x1e8f, 0xb275, + 0xb5d2, 0xb577, 0xb5c8, 0x4c31, 0xcc4f, 0x2e1c, 0xae5f, 0x2e61, + 0xb5db, 0xb5d9, 0xc121, 0xa6f8, 0xd20a, 0x234f, 0x2354, 0xa3f6, + 0x35f9, 0xb642, 0x2164, 0x363f, 0xb6e0, 0xb698, 0x35f6, 0xb642, + 0xb680, 0xb625, 0xb664, 0xb63b, 0x2347, 0xb6fb, 0xb626, 0xb719, + 0xb62c, 0xb6c7, 0xb14e, 0xc6a8, 0xb5fe, 0xb60a, 0xb60f, 0xc0a4, + 0xb630, 0xb62f, 0xa1ac, 0xb602, 0x365d, 0xb6f8, 0xb6e8, 0x6855, + 0xe86f, 0x35f7, 0xb6e0, 0x35f6, 0xb5f9, 0xb644, 0xb643, 0xb64b, + 0xb649, 0xb6ec, 0x3681, 0xb6c9, 0xb6c4, 0xb688, 0xb689, 0xb669, + 0x363c, 0xb6f8, 0xb660, 0xb65f, 0xb5ff, 0xb6df, 0xb65a, 0xb69c, + 0x3692, 0xc520, 0xb697, 0xb5fa, 0x3653, 0xb6c9, 0xb6ab, 0x4f6a, + 0xdfa0, 0xb655, 0xb656, 0xb674, 0x4156, 0xc157, 0x367b, 0x5af3, + 0x5c19, 0x65c7, 0xe68c, 0xb5f8, 0xb66e, 0xc545, 0x36ad, 0x36cd, + 0xc6a5, 0x2386, 0x23af, 0xb6c6, 0xb6d6, 0xb6c1, 0xb682, 0x36a4, + 0xc6a5, 0x1e86, 0xc7ad, 0xb6a8, 0xb654, 0x2386, 0x23a4, 0x23af, + 0xb6a6, 0xb619, 0x3653, 0xb681, 0x40a4, 0x4167, 0x41f3, 0xc7be, + 0xb6a4, 0xa411, 0xb6a7, 0xb668, 0x35f7, 0xb63f, 0xb63d, 0xb652, + 0x3d40, 0x4cac, 0x6eaf, 0x6eb4, 0xeeb9, 0xb6f5, 0xb6f3, 0x1e66, + 0x363c, 0xb65d, 0xb6fa, 0xb6f9, 0x2347, 0xb607, 0xb6fe, 0xb6fd, + 0xa1a3, 0x22d6, 0xa2d7, 0x9f1a, 0xd8e8, 0xb717, 0xb716, 0xb60e, + 0xb722, 0xb71f, 0xb71e, 0xb71b, 0xd0e7, 0x2932, 0xb94d, 0xa273, + 0xb72f, 0x372e, 0xd853, 0xc843, 0x3a38, 0xba8f, 0xb736, 0xb735, + 0x21e0, 0xba5f, 0xbbba, 0x594d, 0x66d1, 0xe6dc, 0x3a29, 0xbb0a, + 0xb87f, 0xa72c, 0x3766, 0x3919, 0xba86, 0xe0a8, 0xb9d3, 0xb89d, + 0xb803, 0x9f86, 0xb749, 0xb94a, 0xb9aa, 0x386e, 0xc6c3, 0xa091, + 0x9e1c, 0x2eba, 0x3780, 0x37a9, 0x37d7, 0x38a5, 0xeb06, 0xe5c6, + 0x2eba, 0x377e, 0x37a9, 0x37d7, 0xb8a5, 0xb975, 0x3406, 0xb9cb, + 0xb960, 0x1e2b, 0x3860, 0x390f, 0xb930, 0x5edb, 0x5ef6, 0xdf6d, + 0xd3d3, 0xba05, 0xb85d, 0xba1e, 0xb8d7, 0xbaea, 0xb80c, 0xb898, + 0xb8d6, 0x2eba, 0x377e, 0x3780, 0x37d7, 0xb8a5, 0x39cd, 0x6397, + 0xe453, 0xb953, 0xb89f, 0x23f0, 0x3aaf, 0xd01c, 0x32d0, 0xb7fa, + 0xb827, 0xd235, 0xb822, 0xb959, 0x2eba, 0x377e, 0x3780, 0x37a9, + 0xb8a5, 0xbac3, 0xbab8, 0xb7fb, 0x231b, 0xb7fe, 0xa948, 0x3801, + 0x387a, 0xba6e, 0xb805, 0xb7ff, 0x32d0, 0xb7b4, 0xb7e5, 0xba89, + 0x231b, 0xb7e9, 0xb7f9, 0xb894, 0x37f3, 0x387a, 0xba6e, 0x3764, + 0xbad4, 0x39ae, 0xd363, 0xb7f5, 0xba19, 0x385f, 0xb8e7, 0xbadb, + 0x39de, 0xbaf3, 0xb8df, 0x37a6, 0xbae8, 0x3aaa, 0xbadf, 0x3b04, + 0xbb17, 0xba39, 0x337f, 0xb8f2, 0x21d3, 0xb144, 0xa20a, 0xb7cf, + 0xb7bb, 0x3a43, 0xcb4f, 0x39d8, 0xba23, 0xd988, 0x271d, 0xbb12, + 0xb97f, 0x2353, 0xb9d5, 0xb852, 0xb851, 0xb90e, 0x3a31, 0xbafb, + 0xb7a1, 0x3808, 0xb8e7, 0x1e2b, 0x3792, 0xb90f, 0xba48, 0xb968, + 0xba94, 0xb9bf, 0x39d7, 0xba4b, 0xba3a, 0xba9c, 0xb9f3, 0xba01, + 0xba33, 0x376f, 0xc6c3, 0xba03, 0x37f3, 0x3801, 0xba6e, 0xbf06, + 0xb746, 0x3a11, 0xcc17, 0xb9f1, 0x3973, 0xb9d1, 0x4681, 0xc682, + 0xb800, 0xb7a7, 0xb761, 0xb7ad, 0x2eba, 0x377e, 0x3780, 0x37a9, + 0xb7d7, 0x2922, 0xa923, 0x3346, 0xcd91, 0xbaae, 0xb8f6, 0xb9e4, + 0x391c, 0xbaa2, 0xbb1e, 0xaf03, 0x38cb, 0x3ab1, 0x3ac0, 0xc881, + 0x38ca, 0x3ab1, 0x3ac0, 0xc881, 0xb936, 0xb7a8, 0xb7a3, 0xb80b, + 0xba0a, 0x3808, 0xb85f, 0xca1c, 0x337f, 0xb816, 0xb8be, 0xbac2, + 0xc897, 0xb9e8, 0x1e57, 0x9e58, 0xb858, 0x1e2b, 0x3792, 0xb860, + 0x47f4, 0xc887, 0xb95a, 0xb749, 0x38c0, 0xbaa2, 0xbadd, 0xb9e7, + 0xb9f6, 0xbb0f, 0xba3f, 0xba62, 0xb792, 0xd46e, 0xb8d5, 0xd45a, + 0xb768, 0x2932, 0xb72c, 0xb7ab, 0xba62, 0xb7d5, 0xb918, 0xb78f, + 0xb986, 0xb966, 0xb965, 0xb862, 0xc243, 0xba9d, 0x9e1a, 0x3885, + 0xb9d1, 0xb781, 0xba13, 0x1e50, 0xba02, 0xb842, 0xbb16, 0xb9b2, + 0xb961, 0xbaec, 0xbada, 0x3af8, 0xbb05, 0xc253, 0x2e72, 0xae79, + 0xb43e, 0xb769, 0x3804, 0xd363, 0xb985, 0xba4a, 0xe198, 0xb864, + 0xb9d9, 0x5028, 0xe392, 0xb784, 0xb7aa, 0x3885, 0xb973, 0xb760, + 0x39f9, 0xba70, 0x2353, 0xb84c, 0x3865, 0xba4b, 0x3837, 0xba23, + 0xb9c7, 0xba9f, 0x3abb, 0xce7f, 0xb80a, 0xbab3, 0xbae7, 0xb8bf, + 0xb920, 0xb901, 0xb884, 0xb868, 0xb922, 0xb9d4, 0xb869, 0x1e50, + 0xb97d, 0xb879, 0xb79e, 0xb8e5, 0xbad3, 0x3881, 0xcc17, 0xbac1, + 0xb97c, 0xb807, 0xb7a2, 0x3837, 0xb9d8, 0x3743, 0xbb0a, 0x3a6b, + 0xbace, 0x3aa3, 0xd262, 0x385c, 0xbafb, 0xb86a, 0x1e1b, 0x23e2, + 0x3b09, 0xd5c2, 0x3734, 0xba8f, 0xb811, 0xb866, 0xcf47, 0xb92b, + 0x3830, 0xcb4f, 0xb861, 0xb9b4, 0x3865, 0xb9d7, 0xb73a, 0x392d, + 0xb955, 0x3a2a, 0xbace, 0x37f3, 0x3801, 0xb87a, 0xb9d4, 0xbae5, + 0x3ad3, 0x5263, 0xd26a, 0xbade, 0xbaa9, 0xbafd, 0xb749, 0xb7fd, + 0x3734, 0xba38, 0xcc37, 0xb863, 0x3a98, 0xd617, 0xba97, 0xb867, + 0xb96b, 0xb9da, 0x38c0, 0xb91c, 0xba2f, 0xba81, 0x380e, 0xbadf, + 0xb8bc, 0x23f0, 0xb7b1, 0x38ca, 0x38cb, 0x3ac0, 0xc881, 0xb9df, + 0xb7e0, 0xb9db, 0x38ca, 0x38cb, 0x3ab1, 0xc881, 0xba12, 0xb8f9, + 0xb7dc, 0xa1f3, 0xd030, 0x3a2a, 0xba6b, 0x3a10, 0xba79, 0xb803, + 0xbb11, 0xb988, 0xb809, 0xb91f, 0xba7c, 0x380e, 0xbaaa, 0xba71, + 0xb9e0, 0xb80c, 0xb7a5, 0xb987, 0xb80a, 0xb989, 0xbb1e, 0x385c, + 0xba31, 0xba83, 0x380f, 0xbb17, 0xb989, 0x1e1b, 0x23e2, 0x3a37, + 0xd5c2, 0x3743, 0xba29, 0xb924, 0xbad5, 0x271d, 0xb83e, 0xb984, + 0x380f, 0xbb04, 0x60c1, 0x6b30, 0xeb31, 0x38c2, 0xbafa, 0x4f3a, + 0xcf3c, 0x31fd, 0x3b53, 0x3b61, 0xea69, 0x1ffd, 0x30de, 0xda22, + 0xbb5f, 0xbb50, 0xb17e, 0xbb3e, 0xbb58, 0xe4a6, 0xbb35, 0xdb0c, + 0x23f9, 0xa606, 0xbb27, 0x3b22, 0xbb61, 0x259c, 0x3198, 0xb199, + 0xbb3b, 0x355b, 0xb582, 0xb581, 0xbb24, 0x3b22, 0xbb53, 0x3b68, + 0xbb69, 0x3b65, 0xbb69, 0x3b65, 0xbb68, 0xa24d, 0x3e0b, 0x3f80, + 0xbf81, 0x6f52, 0xef7f, 0x1e97, 0x2c81, 0x2d57, 0xbb73, 0x1e97, + 0x2c81, 0x2d57, 0xbb72, 0x2386, 0x23af, 0xbb77, 0x2386, 0x23af, + 0xbb74, 0x2e30, 0x2f52, 0xc688, 0xbb7a, 0xbb79, 0x3bb1, 0xbbb2, + 0x273d, 0x3b7f, 0x3b81, 0xbca1, 0x273d, 0x3b7e, 0x3b81, 0xbca1, + 0xa92d, 0x273d, 0x3b7e, 0x3b7f, 0xbca1, 0xbba4, 0xbb98, 0xbb9e, + 0xbbae, 0xbb8b, 0xbbab, 0xbb92, 0xbbaf, 0xbb87, 0xbb9a, 0xbb93, + 0xbba1, 0x3b7c, 0xbbb2, 0x3b7c, 0xbbb1, 0xbbc6, 0xb147, 0xb740, + 0x28f3, 0xbbbc, 0x28f3, 0xbbbb, 0xbbc1, 0x3bc0, 0x41ec, 0xdb6d, + 0xdf42, 0xbbb4, 0x233b, 0xe1ab, 0xbbcf, 0xbbce, 0x50b2, 0xd8ac, + 0xa936, 0xc562, 0xbbd8, 0xbbd7, 0xb583, 0xbbee, 0xbc08, 0xc403, + 0xbbdf, 0xbbff, 0xbbf5, 0x4266, 0xc29b, 0xbc0c, 0x3be1, 0xbc0a, + 0xbc08, 0xbc07, 0x3c17, 0x3c23, 0xc081, 0x3c14, 0x3c23, 0xc081, + 0xe6f0, 0xbc2b, 0x3c14, 0x3c17, 0xc081, 0xbc2c, 0xbc22, 0xbc29, + 0xbc33, 0xbc32, 0x3c35, 0xbc3a, 0x3c34, 0xbc3a, 0x1ecc, 0x21ab, + 0xa1b0, 0x3c34, 0xbc35, 0x232f, 0x2f59, 0x2f5a, 0xbed9, 0xbf22, + 0xbcdb, 0x3c5a, 0xbc61, 0x3c59, 0xbc61, 0x3c59, 0xbc5a, 0xbe6f, + 0xbc74, 0xbc73, 0xbd36, 0xa1b3, 0xbef8, 0x3c89, 0xc00b, 0xbc88, + 0xbca1, 0xa1b2, 0xbdfb, 0xbe9d, 0x273d, 0x3b7e, 0x3b7f, 0x3b81, + 0xbc92, 0x3cfd, 0xbfa4, 0xc043, 0xbf1a, 0xc01d, 0xbdea, 0xbec4, + 0xbe22, 0xbf59, 0x3eec, 0xcc04, 0xe63b, 0xbcb2, 0xbcb1, 0xbfd4, + 0xe711, 0xa1b5, 0x1f71, 0xc04b, 0xbc4e, 0xbeaf, 0xbfd8, 0xa76d, + 0xda3b, 0x3d99, 0xbdda, 0xa1ba, 0xa933, 0xbfa9, 0x3edd, 0xc027, + 0xc018, 0xbffc, 0xc009, 0x3e8c, 0x3f51, 0xc67a, 0x3ca2, 0xbfa4, + 0xbd87, 0xbf54, 0xa1bd, 0xc051, 0xbf54, 0xbc79, 0xcaaa, 0xb6f2, + 0xbd79, 0xbde8, 0xbdfa, 0xbf3f, 0xbf86, 0xbe5e, 0xbeae, 0xbfc1, + 0xbe2c, 0xbfae, 0x3e08, 0xbfdf, 0x26a0, 0xc00f, 0xbefb, 0xbe3e, + 0xbef8, 0xbfc3, 0xbf6f, 0xbfdc, 0x3ee8, 0x3ff1, 0xbff5, 0xbfa3, + 0x3f82, 0x3f84, 0xc013, 0xbf94, 0xbd43, 0xa1c2, 0x21c3, 0xa857, + 0xbe7c, 0xbcfe, 0xbe09, 0xbe67, 0x5385, 0xd49e, 0x3cea, 0xbdda, + 0xbfe4, 0x3e0e, 0xc006, 0xbf87, 0xbdf6, 0xbf23, 0xbf7f, 0xbe26, + 0xbeb3, 0xbe19, 0xbecc, 0xbf64, 0x3f97, 0xc900, 0xbf32, 0x3e0b, + 0x3f80, 0x3f81, 0xbfc7, 0xbf04, 0xa1c5, 0xa1c9, 0xbfb1, 0xbe7d, + 0xc5f3, 0xa1c4, 0x3cea, 0xbd99, 0xbe0c, 0x21c0, 0xbd44, 0xbca6, + 0x2a6c, 0xbedb, 0xbe7b, 0x26e6, 0x3e0a, 0xbe15, 0xbd9e, 0xbe05, + 0xbd45, 0xbc97, 0xbdf8, 0xbe34, 0x3d4e, 0xbfdf, 0xbd89, 0x26e6, + 0x3df5, 0xbe15, 0x3b6e, 0x3da9, 0x3f80, 0xbf81, 0xbde5, 0xbf2c, + 0x3d9c, 0xc006, 0xbf38, 0xbfa0, 0x2d60, 0x3eaa, 0x5c3f, 0xdc40, + 0xbf01, 0x26e6, 0x3df5, 0xbe0a, 0xc00b, 0xbef2, 0xbda3, 0xa1cf, + 0xbca8, 0xbda1, 0xbeab, 0xbd4b, 0xbe07, 0x6030, 0xe04a, 0xbd51, + 0xa1d1, 0xbd48, 0xbd8c, 0xbc64, 0xbdf3, 0xbd85, 0xbdc4, 0xc063, + 0x3ebc, 0xbfd5, 0x3ee1, 0xbeff, 0xbfda, 0xa24c, 0xbf70, 0xbffa, + 0xbf0a, 0xbf11, 0x3cfc, 0x3f51, 0xc67a, 0xa3b5, 0x3fdb, 0xd499, + 0x21c6, 0xa1d6, 0xbf91, 0xbc9f, 0x2d60, 0x3e13, 0x5c3f, 0xdc40, + 0xbe29, 0xbd49, 0x3cdd, 0xe061, 0xbda2, 0x4194, 0xe394, 0x3e7f, + 0xbfd5, 0xbca7, 0xc06d, 0xbda4, 0xd365, 0xbf77, 0x232f, 0xbc47, + 0xbefe, 0xbdeb, 0x3cf7, 0xc027, 0xbeef, 0x404e, 0x4054, 0xc067, + 0xc044, 0x3e80, 0xbeff, 0xc005, 0xbffe, 0xbfeb, 0xc064, 0x3d5c, + 0x3ff1, 0xbff5, 0xc058, 0xbfa6, 0x3caa, 0xcc04, 0xbede, 0xbe17, + 0x2364, 0x3f9b, 0xc002, 0x3c7b, 0xbd52, 0xbd50, 0xbeda, 0x3e80, + 0xbee1, 0xbe14, 0xbdaf, 0xb87c, 0xbe87, 0xbe89, 0xc055, 0xbca4, + 0xbc49, 0xbd9f, 0x1e79, 0x1e7e, 0x9e81, 0xc1b3, 0xbe0d, 0xbf44, + 0xbda8, 0xbe10, 0xbd46, 0xe88d, 0xbf31, 0xc04c, 0xc020, 0xc01f, + 0xc032, 0xbff0, 0x3cfc, 0x3e8c, 0xc67a, 0x3d01, 0xbd2f, 0xbca9, + 0x3f5c, 0xbff3, 0x3f5b, 0xbff3, 0xbda6, 0xbd54, 0xbe83, 0xc026, + 0xbed7, 0xbda0, 0x3b6e, 0x3da9, 0x3e0b, 0xbf81, 0x3b6e, 0x3da9, + 0x3e0b, 0xbf80, 0x3d67, 0x3f84, 0xc013, 0x3d67, 0x3f82, 0xc013, + 0xbd47, 0xbd9d, 0xbe9c, 0xbd69, 0xbda7, 0xbfb3, 0x2364, 0x3ef7, + 0xc002, 0xc03e, 0x21db, 0xa1dc, 0xbe11, 0xbd63, 0x3ca2, 0xbcfd, + 0xbeea, 0xbcf6, 0xbd4d, 0xc032, 0xbdc0, 0xbf9a, 0xbd4a, 0xbd53, + 0xbda9, 0x4028, 0xc02c, 0xc015, 0xbcb5, 0x3e7f, 0xbebc, 0xbcde, + 0x3e81, 0xc02f, 0x3e95, 0xd499, 0xbd55, 0x3d4e, 0xbe08, 0xbd9b, + 0xbee5, 0xbf4d, 0x3d5c, 0x3ee8, 0xbff5, 0x3f5b, 0xbf5c, 0x3d5c, + 0x3ee8, 0xbff1, 0x65ca, 0xe614, 0xbe85, 0xbcfa, 0xbee4, 0x2364, + 0x3ef7, 0xbf9b, 0xbee2, 0x3d9c, 0xbe0e, 0xbcfb, 0x3c88, 0xbe16, + 0xbd4f, 0x3d67, 0x3f82, 0xbf84, 0xbfd2, 0xbcf8, 0xbca5, 0xbf47, + 0xbf46, 0xbf74, 0x3cf7, 0xbedd, 0x3fd1, 0xc02c, 0x3fd1, 0xc028, + 0xbfda, 0xaf25, 0x3f4b, 0xbfb0, 0xbf9c, 0xbca3, 0xbee0, 0x1f71, + 0xbcd5, 0xbf45, 0x3edf, 0xc054, 0xc05d, 0xbd12, 0x3edf, 0xc04e, + 0xbf13, 0xbee9, 0xc04f, 0xbe7e, 0xbee6, 0xbedf, 0xbec5, 0x2149, + 0xc097, 0xc1c8, 0x670a, 0x671b, 0xe748, 0x4ac3, 0xcac8, 0x40fe, + 0xdd64, 0x407e, 0xc0d6, 0x407d, 0xc0d6, 0xc1e6, 0xc16c, 0x3c14, + 0x3c17, 0xbc23, 0x4210, 0x6229, 0xe46a, 0x23cd, 0xa3db, 0xc08f, + 0xc08e, 0x2149, 0xc06e, 0xc152, 0xc197, 0x362d, 0x36cc, 0x4167, + 0x41f3, 0xc7be, 0x4832, 0x491f, 0xc92e, 0xc0f1, 0xcf39, 0xeede, + 0x1e3a, 0xc232, 0x4149, 0x632c, 0xe34a, 0xc1be, 0xc20d, 0x41d7, + 0x421b, 0xc224, 0xc0f4, 0xc16c, 0x9e4c, 0x407d, 0xc07e, 0xc1ed, + 0xc159, 0xc169, 0x413c, 0xc1d2, 0x41c1, 0xc217, 0xc1f4, 0xc1d9, + 0xc1fc, 0xc1b1, 0xc0af, 0xc0c3, 0xc1a2, 0x407b, 0xdd64, 0xe2b7, + 0x21de, 0x4155, 0x4188, 0xc199, 0xe2b2, 0x9e9f, 0x4130, 0xc1c4, + 0xc165, 0xc1dc, 0xc1fe, 0x41cc, 0xc1d3, 0xb5e0, 0xc133, 0xc162, + 0x4114, 0xc1c4, 0xc126, 0x40e7, 0xc1d2, 0xe35b, 0x40bc, 0x632c, + 0xe34a, 0xc16e, 0xc09c, 0x21de, 0x4108, 0x4188, 0xc199, 0xb696, + 0xb696, 0xc0df, 0x412d, 0xd315, 0xc115, 0x36cc, 0x40a4, 0x41f3, + 0xc7be, 0xc0e6, 0x4080, 0xc0ca, 0xc151, 0x417e, 0xc185, 0x4174, + 0xc185, 0x4174, 0xc17e, 0x21de, 0x4108, 0x4155, 0xc199, 0xc1fb, + 0xd367, 0x3eb6, 0xe394, 0xc09d, 0x21de, 0x4108, 0x4155, 0xc188, + 0xc0fd, 0xc0ed, 0xe88e, 0xbf2b, 0xc1ba, 0xc1b9, 0xc0bd, 0x40e8, + 0xc217, 0x4114, 0xc130, 0xc06f, 0x411a, 0xc1d3, 0xac1e, 0x48f7, + 0xcca6, 0x40e7, 0xc13c, 0x411a, 0xc1cc, 0xedf0, 0x40c2, 0x421b, + 0xc224, 0xc0eb, 0xc116, 0x25b6, 0xd425, 0xc07f, 0xbbc1, 0xc0db, + 0x36cc, 0x40a4, 0x4167, 0xc7be, 0xc0e9, 0xc18f, 0xc0ec, 0xc118, + 0xd000, 0xc0c1, 0xc089, 0x40e8, 0xc1c1, 0x40c2, 0x41d7, 0xc224, + 0x40c2, 0x41d7, 0xc21b, 0x9e89, 0xb11b, 0x1e3a, 0xc0ba, 0xb52b, + 0xc23a, 0xc237, 0x9fce, 0x2c12, 0x2c13, 0xac14, 0x9e2c, 0xae8a, + 0xb96a, 0xa889, 0xa899, 0xcb3a, 0xc258, 0x4255, 0x4a93, 0x4a97, + 0xcabb, 0xb99c, 0x424e, 0x4a93, 0x4a97, 0xcabb, 0xc24d, 0xc25c, + 0xc25b, 0xab83, 0x3c02, 0xc29b, 0x1f10, 0xa0a0, 0xb2b5, 0xc27d, + 0x42a0, 0xc2a7, 0xc275, 0xc282, 0xc281, 0xa954, 0xc2a2, 0xd366, + 0x3c02, 0xc266, 0x427a, 0xc2a7, 0xc28a, 0x427a, 0xc2a0, 0xc2ad, + 0xc2ac, 0xa3d0, 0xdc7a, 0x5c7b, 0xdc8b, 0xc2c0, 0xc377, 0xc341, + 0xc336, 0xc2b6, 0x2448, 0xb282, 0xc2fd, 0xdc7e, 0xc329, 0xc36e, + 0xc370, 0xdc89, 0xaf87, 0xc368, 0xc2f9, 0xc345, 0xc36a, 0xc319, + 0xc344, 0xc33b, 0x430d, 0xdc8d, 0xc2ed, 0xc2c8, 0xc318, 0xb08d, + 0xc36b, 0xd653, 0xdc8e, 0x42f8, 0xdc8d, 0x431f, 0xc375, 0xc37c, + 0xc2fe, 0xc2f0, 0x430e, 0xc375, 0xc380, 0xc33f, 0xc2cc, 0xdc6c, + 0xdc93, 0xd75f, 0xc37b, 0xdc92, 0xc366, 0xc371, 0xc2b9, 0xc2f2, + 0x4328, 0xd76f, 0xc2b8, 0xc2f1, 0xc2ee, 0xe3e1, 0x2956, 0x2968, + 0xa96c, 0xdc98, 0xee9e, 0xc359, 0xc358, 0x217d, 0xc378, 0xc332, + 0xc2ec, 0xc2ef, 0x4303, 0xc381, 0xc37a, 0xc2dd, 0xc2de, 0xc335, + 0xd3b7, 0x430e, 0xc31f, 0xc2b7, 0x217d, 0xc363, 0xc36d, 0xc32e, + 0xc315, 0xdc9b, 0xc321, 0xc36b, 0x583c, 0xdc9c, 0xa999, 0xa35b, + 0xc4a3, 0xc4b5, 0xc452, 0xc46a, 0x43cf, 0xc474, 0xcfeb, 0xc44b, + 0xc4b0, 0xc3fe, 0xc472, 0xc447, 0xc4bd, 0x4409, 0x4460, 0xc4a2, + 0xc3ce, 0xc3cd, 0x43a8, 0xc474, 0xc43a, 0xc4cf, 0x4434, 0xc439, + 0x2b9d, 0x2bda, 0x2bf3, 0xabf6, 0xa72d, 0xc4ab, 0x448e, 0xc4d4, + 0xc43f, 0xc894, 0xc3b0, 0xbbec, 0xc46f, 0x43cb, 0x4460, 0xc4a2, + 0x4483, 0xc4c8, 0xc4a1, 0xc489, 0x4411, 0xc463, 0x4410, 0xc463, + 0xe6d5, 0x43e1, 0xc439, 0x43e1, 0xc434, 0xc3d0, 0xc4ca, 0xc3f2, + 0xc3b3, 0xc3ae, 0xc39a, 0xc8af, 0x43cb, 0x4409, 0xc4a2, 0x4410, + 0xc411, 0xc476, 0xc4a1, 0xd3b9, 0xc39b, 0xc405, 0xc4cc, 0xc3b1, + 0x43a8, 0xc3cf, 0xc464, 0xc4a6, 0xc4b8, 0x440d, 0xc4c8, 0xc4bf, + 0xc40f, 0x43f1, 0xc4d4, 0x440e, 0xc468, 0x43cb, 0x4409, 0xc460, + 0xc391, 0xc477, 0xc3f0, 0xc3af, 0xc399, 0xc478, 0x28d0, 0xc3ba, + 0xc487, 0x440d, 0xc483, 0xc4da, 0xc43c, 0xc470, 0xc3d1, 0xc4da, + 0x43f1, 0xc48e, 0x44c9, 0xc4d2, 0xaf01, 0xcf38, 0xc515, 0xc50c, + 0x4501, 0xcf3e, 0xc506, 0x44f6, 0xcf3e, 0xc4f7, 0xc4ef, 0x287c, + 0x4816, 0xc8da, 0xc4ee, 0x4f42, 0xcf4c, 0x2617, 0x2690, 0xac1d, + 0xb674, 0x1ea7, 0xc523, 0x1ea7, 0xc522, 0x4a4c, 0x52cf, 0xd607, + 0x2b81, 0x2bcd, 0x2bd5, 0x2bd7, 0x2bdc, 0xabe7, 0xe6fb, 0x9fbd, + 0x2722, 0xc53c, 0x2212, 0x2283, 0x2290, 0x456b, 0xc575, 0x2722, + 0xc53a, 0xc54e, 0xc55d, 0x4559, 0xc571, 0xb6a2, 0x1ea9, 0x4552, + 0x455d, 0xc55e, 0xd015, 0x283a, 0xc54d, 0x283a, 0xc54c, 0xc53d, + 0xc560, 0x1ea9, 0x4546, 0x455d, 0xc55e, 0x4544, 0xc571, 0xa959, + 0x1ea9, 0x4542, 0x4546, 0x4552, 0xc55e, 0x1ea9, 0x4546, 0x4552, + 0xc55d, 0xc551, 0xa793, 0xbbd5, 0xc567, 0xc565, 0xc56a, 0xc568, + 0x453b, 0xc575, 0xaf02, 0x4544, 0xc559, 0x23e0, 0x4582, 0x4589, + 0xc58a, 0xc587, 0x453b, 0xc56b, 0xaf53, 0xc585, 0xa84d, 0x23e0, + 0x4573, 0x4589, 0xc58a, 0x457a, 0xc586, 0xc585, 0xc574, 0x23e0, + 0x4573, 0x4582, 0xc58a, 0x23e0, 0x4573, 0x4582, 0xc589, 0x458f, + 0xde08, 0x458e, 0xde08, 0xc664, 0xc642, 0xc627, 0xc658, 0xc60d, + 0xd0ac, 0xc667, 0xc632, 0xc621, 0xc60b, 0x46b0, 0xe764, 0xc5fe, + 0xc665, 0xc670, 0xc5d9, 0xc662, 0x24d1, 0x2516, 0x255e, 0xc602, + 0xc5c9, 0xc646, 0xc626, 0xc613, 0xc647, 0xd139, 0x45f3, 0xeebb, + 0x3dcb, 0x45f2, 0xeebb, 0xc661, 0xc5fa, 0xc5f9, 0xc5b4, 0x24d1, + 0x2516, 0x255e, 0xc5d6, 0xc649, 0xc62e, 0x3108, 0xc652, 0xc5af, + 0xc5a1, 0xc5ea, 0xa591, 0xc61e, 0xc63b, 0xc617, 0xc5ae, 0xc645, + 0xc5e9, 0xc59f, 0xc65f, 0xc671, 0xc606, 0xc5ad, 0xc63b, 0x4618, + 0xc63a, 0xc66e, 0xc66d, 0xc597, 0x2af6, 0xb194, 0xc624, 0xc5e8, + 0xc5eb, 0xc605, 0x3108, 0xc609, 0x4670, 0xd1c3, 0xc5a0, 0xc669, + 0xc62a, 0xc5f4, 0xc5d2, 0xc66c, 0xc596, 0xc5c7, 0xc5ac, 0xc65e, + 0xc672, 0xc663, 0xc63f, 0xc63e, 0xd1de, 0x45c8, 0x4655, 0xd1c3, + 0xc62b, 0xc66b, 0xc675, 0xc674, 0x23d1, 0x32e8, 0x34a5, 0x3cfc, + 0x3e8c, 0x3f51, 0x467c, 0x6166, 0x6197, 0xe1b1, 0xa0dc, 0x23d1, + 0xc67a, 0x388d, 0xc682, 0x388d, 0xc681, 0xdc8c, 0x2e30, 0x2f52, + 0xbb78, 0xc690, 0x2373, 0xa37d, 0xdccb, 0xc68b, 0xc69a, 0x21d2, + 0xc691, 0xc6a1, 0xc69e, 0x36a4, 0xb6ad, 0xb61f, 0x45b1, 0xe764, + 0xc6ba, 0x46b8, 0xc6b9, 0xef13, 0x46b2, 0xc6b9, 0x46b2, 0xc6b8, + 0xc6b1, 0xef13, 0xc6c8, 0x376f, 0xb86e, 0xc6cd, 0xc6c1, 0x4f3d, + 0x6262, 0xe4b5, 0xc897, 0xc6c7, 0xc6de, 0x2869, 0xee7d, 0x46e3, + 0xdb7c, 0x5462, 0xd4cb, 0xc6dc, 0xc6e4, 0xcc20, 0xc6d7, 0xc6cf, + 0xac3d, 0x46d1, 0xdb7c, 0xc6d8, 0xa362, 0x5361, 0xd62f, 0x1eff, + 0xa023, 0xc742, 0x23bf, 0xce23, 0xc798, 0x5996, 0xd9c6, 0xb14e, + 0xc71f, 0xc71e, 0xc726, 0xc725, 0xc72f, 0xc7d3, 0x472b, 0xc787, + 0xc760, 0x1e51, 0x1f17, 0xd846, 0xd457, 0xc75c, 0xc709, 0xa6f0, + 0xc75e, 0xc7bc, 0xc741, 0xc750, 0xc737, 0xc765, 0xc764, 0xd9a9, + 0x23e1, 0xa8e1, 0xc7c1, 0xc7b6, 0xc72f, 0xc79e, 0xcff3, 0xc70d, + 0xc792, 0xc7aa, 0xc7d2, 0xc7da, 0xc7a0, 0x1e86, 0xb6b8, 0xc7d9, + 0xc786, 0xc751, 0x36cc, 0x40a4, 0x4167, 0xc1f3, 0xc785, 0xd499, + 0xc7a2, 0xc72c, 0xc7b0, 0xc7a9, 0xcb36, 0x47e7, 0xda20, 0x9faf, + 0x47e4, 0xda20, 0xc7ef, 0xc7eb, 0x3917, 0x4887, 0xc8f8, 0xc8ef, + 0xc92c, 0x483f, 0x4926, 0x6271, 0x62db, 0xe45b, 0xc8ad, 0xc8bc, + 0xc8c7, 0xc88e, 0x287c, 0x450e, 0xc8da, 0xc868, 0xc86f, 0xc8b8, + 0xa38e, 0xc8aa, 0xc8d6, 0x40ae, 0x491f, 0xc92e, 0xc92a, 0xc931, + 0xc92b, 0x47ff, 0x4926, 0x6271, 0x62db, 0xe45b, 0xc90e, 0xc85c, + 0xb731, 0xc8a9, 0xc864, 0xc8fd, 0xc8d1, 0xc904, 0xc841, 0xc856, + 0xc817, 0xc912, 0x27c6, 0x48ba, 0xc8bb, 0xc81a, 0xc8e0, 0x6e78, + 0x6e7b, 0xee7c, 0x38ca, 0x38cb, 0x3ab1, 0xbac0, 0x3917, 0xc7f4, + 0xc919, 0xc815, 0xc3f7, 0x27fc, 0x2d0e, 0xad5c, 0x27e6, 0x3900, + 0xc6cc, 0xc8e7, 0xc8e3, 0x2ca9, 0x2d52, 0xad53, 0xe7a8, 0xc855, + 0xc827, 0xc800, 0xc459, 0x33bd, 0xde2b, 0x6e78, 0xee7c, 0xc81c, + 0x486e, 0xc8bb, 0x486e, 0xc8ba, 0xc801, 0xc920, 0xc812, 0xc859, + 0xe695, 0xa387, 0xc82c, 0x287c, 0x450e, 0xc816, 0xc875, 0xc89c, + 0xc89b, 0xc7f6, 0xc1d0, 0xc7f4, 0xeec4, 0xc857, 0xbda7, 0xc85a, + 0x6669, 0x667a, 0xe6aa, 0x2760, 0xa89c, 0xc840, 0xc86a, 0xc88d, + 0x40ae, 0x4832, 0xc92e, 0xc8c1, 0x47ff, 0x483f, 0x6271, 0x62db, + 0xe45b, 0xc83a, 0xc83e, 0xc7fe, 0x40ae, 0x4832, 0xc91f, 0xc83b, + 0xc93b, 0xc93a, 0xc9ae, 0xc9b4, 0xc9a9, 0xc9a1, 0xa996, 0xc995, + 0xc9d8, 0xc9b0, 0xc98e, 0xb346, 0xc9b1, 0xc98d, 0xc984, 0xca1f, + 0xc97f, 0xc9aa, 0xc978, 0xc96f, 0xc94e, 0xc943, 0xafa1, 0xc940, + 0xc985, 0xc93c, 0xc962, 0xc977, 0xc93f, 0xe6e2, 0xc9c3, 0xa3b6, + 0xc9bf, 0xca08, 0x527a, 0x52b8, 0x541f, 0x54fa, 0xd5dd, 0xcc7c, + 0xae74, 0x49cc, 0x4a50, 0x67a6, 0x67a7, 0xef9d, 0x49cb, 0x4a50, + 0xef9d, 0xca2e, 0xd018, 0x4a09, 0xccb3, 0xcc83, 0xa3ea, 0xe8eb, + 0xc955, 0xca4d, 0x4a31, 0xca6a, 0xca2d, 0xca62, 0xca60, 0x4a3e, + 0x4a3f, 0x55c1, 0xd5f3, 0xca0e, 0x4a5e, 0xca6d, 0xc9c6, 0x49d4, + 0xccb3, 0xca05, 0x4cba, 0xd5ad, 0x4a3a, 0xca49, 0xb8f1, 0xc980, + 0xca4c, 0xc9f8, 0xc9cd, 0x49f0, 0xca6a, 0xca3b, 0x4a4f, 0xca69, + 0x4a1a, 0xca49, 0xca32, 0x4a01, 0x4a3f, 0x55c1, 0xd5f3, 0x4a01, + 0x4a3e, 0x55c1, 0xd5f3, 0x4cd3, 0xdc37, 0xca57, 0x4c87, 0xcce0, + 0x4a1a, 0xca3a, 0x4526, 0x4a23, 0x52cf, 0xd607, 0xc9ef, 0x6834, + 0xe896, 0x4a33, 0xca69, 0x49cb, 0x49cc, 0xef9d, 0xca61, 0xca42, + 0x4a06, 0xca6d, 0xc9fe, 0xca51, 0xc9fd, 0xca70, 0x6839, 0x683a, + 0x683d, 0xe893, 0x4a33, 0xca4f, 0x49f0, 0xca31, 0xd3b7, 0x4a06, + 0xca5e, 0xca63, 0x4aae, 0xcac6, 0xab86, 0xe631, 0xab8a, 0xcaca, + 0xcab3, 0xcac5, 0xcab5, 0x4aaf, 0xcab0, 0x424e, 0x4255, 0x4a97, + 0xcabb, 0x424e, 0x4255, 0x4a93, 0xcabb, 0xcac4, 0xcaa9, 0xcaba, + 0xcac7, 0xca9d, 0xbd3c, 0xde30, 0x2be0, 0xcab6, 0x4a77, 0xcac6, + 0x4a91, 0xcab0, 0x4a91, 0xcaaf, 0xca8a, 0xca8e, 0x2be0, 0xcaad, + 0xcaa5, 0x424e, 0x4255, 0x4a93, 0xca97, 0x4076, 0xcac8, 0xca9c, + 0xca8d, 0x4a77, 0xcaae, 0xcaa6, 0x4076, 0xcac3, 0xca83, 0xa947, + 0x4aea, 0xdc4e, 0x9f2b, 0x6f8d, 0xef92, 0x1e26, 0x20a1, 0xae76, + 0x4af6, 0xcaf8, 0x9fdf, 0x5abc, 0xdc0a, 0x4ad6, 0xdc4e, 0x4ade, + 0xcaf8, 0x4ade, 0xcaf6, 0xcbea, 0xcbe4, 0x4b4d, 0xcbb0, 0x2173, + 0xa4b2, 0xcb46, 0xcb67, 0xcb8d, 0x218a, 0x218c, 0x3547, 0x4b56, + 0x4b5e, 0xcba3, 0x9f53, 0x4bc4, 0xd303, 0xc7e2, 0x424b, 0xcb8b, + 0x4bed, 0xcc60, 0xcc69, 0xcbb2, 0xcb14, 0xd9d4, 0x4b0b, 0xcbb0, + 0x3830, 0xba43, 0xcb7a, 0xcbc9, 0x3547, 0x4b27, 0x4b5e, 0xcba3, + 0xcc06, 0xcb82, 0xcbf3, 0xcbe9, 0xcc39, 0xcb8f, 0x3547, 0x4b27, + 0x4b56, 0xcba3, 0xcb15, 0xcbe0, 0xcc4c, 0xcb50, 0xcbd4, 0x4c3d, + 0x4c56, 0xcc64, 0xcbe0, 0xcc21, 0xcb59, 0xcbe6, 0x00f6, 0x1e2a, + 0xa00b, 0xcb3a, 0xcb1f, 0xcb5d, 0xae1a, 0xcc59, 0xa284, 0x3547, + 0x4b27, 0x4b56, 0xcb5e, 0x4c00, 0xd536, 0xcbcb, 0xcc5c, 0xcc6e, + 0xcc1e, 0xcc2b, 0xcbdb, 0x4b0b, 0xcb4d, 0xcb45, 0xd282, 0x4b35, + 0xd303, 0xd483, 0xcb51, 0x2327, 0xcba7, 0xad4c, 0xcc23, 0xcc0d, + 0xcb7c, 0xcc46, 0xcbac, 0x4b71, 0xcb7f, 0xcc12, 0xcb03, 0xcb86, + 0x4b5b, 0x4c01, 0xcc6d, 0xcafe, 0x4b3c, 0xcc60, 0xcc43, 0xcc5b, + 0xcc6c, 0xaf57, 0xcb5a, 0x4ba6, 0xd536, 0x4be9, 0xcc6d, 0x3caa, + 0xbeec, 0xcb58, 0xcbd3, 0x4c14, 0xd4d1, 0xcbe1, 0x4c11, 0xd4d1, + 0xcc6a, 0x3881, 0xba11, 0xcc2b, 0xcbaa, 0xc6d9, 0xcb80, 0xcbd1, + 0xa142, 0x4bab, 0xcc18, 0x35d7, 0xcc4f, 0xba90, 0xcb5c, 0xcb7e, + 0xae18, 0x4c52, 0xcc55, 0xcc5f, 0xcbee, 0xcbd7, 0xcb79, 0x35d7, + 0xcc31, 0xcc58, 0xcc40, 0x55ae, 0xd5ea, 0xcc40, 0x4b7e, 0xcc64, + 0x4c50, 0xd5e4, 0xcb93, 0xcbef, 0xcba8, 0xcc41, 0x4b3c, 0xcbed, + 0x4b7e, 0xcc56, 0xcb3e, 0xcc16, 0xcbf1, 0x4be9, 0xcc01, 0xcba9, + 0x2401, 0xefa5, 0xccf4, 0xe85e, 0xc9c8, 0xc9d5, 0x4a45, 0xcce0, + 0xccb9, 0xeea4, 0xeecf, 0x5083, 0xd085, 0xccf6, 0xccf2, 0xccb5, + 0x1ffc, 0xeb3b, 0xc1d0, 0x2986, 0x299d, 0x2a24, 0xccda, 0xccde, + 0x36f2, 0x6eaf, 0x6eb4, 0xeeb9, 0xcce7, 0x49d4, 0xca09, 0xcca4, + 0xcc8b, 0xca17, 0xccc9, 0xccdd, 0x6762, 0x6eaa, 0x6eab, 0x6eb5, + 0xeeba, 0xe931, 0xccbd, 0xe92c, 0x4a40, 0xdc37, 0xe93b, 0x2986, + 0x299d, 0x2a24, 0xcca7, 0xccc1, 0xccaa, 0x4a45, 0xcc87, 0xe94e, + 0xccae, 0x26e2, 0xa6e3, 0xcc9d, 0xcc74, 0xcc9c, 0x1e1d, 0x4cf9, + 0x4d72, 0xce9f, 0x4cf8, 0xce9f, 0xccfe, 0x1fc2, 0x4e18, 0x4e4b, + 0xce6b, 0x229f, 0xccff, 0x4cfa, 0xcea0, 0x229f, 0xccfc, 0xceaa, + 0xcea3, 0xcea6, 0xcea2, 0xcea1, 0xcea5, 0xcea8, 0xceab, 0xceb9, + 0xceb3, 0xcebd, 0xcebe, 0xceaf, 0xceb0, 0xcebc, 0xceb1, 0x4d8b, + 0xceae, 0x2e0b, 0xceb8, 0xcea7, 0xceb7, 0xcead, 0x4d4d, 0xceb4, + 0xceba, 0xcdb7, 0xcd2e, 0xcdca, 0x4da2, 0xcef8, 0x324e, 0xcd25, + 0x4e32, 0x4e8d, 0x4e9d, 0xcf27, 0xcec6, 0xcec2, 0xcec1, 0xcec5, + 0xcebb, 0xcecd, 0xcec0, 0xcecb, 0xced0, 0xcecc, 0xcec8, 0xaf26, + 0xcec4, 0xcd97, 0x4eca, 0xe77d, 0xae15, 0xcea9, 0x4d93, 0xcecf, + 0xcd1d, 0xced7, 0xcec1, 0xced3, 0x34a7, 0x4d76, 0xcedd, 0xce8a, + 0xcdea, 0x4e27, 0xcee6, 0x4ed4, 0xd8b4, 0xcede, 0xcedc, 0xceda, + 0x4dab, 0x4dda, 0x4ebf, 0xcf10, 0xd32f, 0xced9, 0xced2, 0xced6, + 0x4d82, 0xcedf, 0x1e1d, 0xccf8, 0xcedb, 0x4e6a, 0xced8, 0x34a7, + 0x4d55, 0xcedd, 0xce36, 0x4e6d, 0xd812, 0xcee2, 0xced1, 0x4d71, + 0xcedf, 0xcee1, 0xcee0, 0xcee8, 0xcee3, 0xcd18, 0xcee4, 0xcee5, + 0x3346, 0xb8b1, 0x4d4c, 0xcecf, 0xcd45, 0x4e7c, 0xcee7, 0x4e8c, + 0x4eed, 0xdce1, 0xcefc, 0xcf0d, 0x4dd1, 0xceff, 0x4d2c, 0xcef8, + 0xcefb, 0x4d64, 0x4dda, 0x4ebf, 0xcf10, 0xcef6, 0xcef4, 0xcef9, + 0xcefe, 0xceb2, 0xcf51, 0x4e43, 0xcef7, 0x23d5, 0xcf00, 0xaf69, + 0xcd23, 0xceb6, 0xcefa, 0xceee, 0xcefd, 0x4e5b, 0xcef0, 0xceeb, + 0xcef5, 0xcef2, 0xcf01, 0xcd27, 0xceef, 0xcde1, 0x303b, 0x3460, + 0x4deb, 0xce3d, 0xce41, 0x4da0, 0xceff, 0x4dd6, 0xceea, 0xcef1, + 0xce83, 0x4dd2, 0xceea, 0xcf03, 0xcf04, 0xcf02, 0x4d64, 0x4dab, + 0x4ebf, 0xcf10, 0xcef5, 0xcf09, 0xcf0e, 0xcf14, 0x4dcd, 0xcf17, + 0x4e01, 0xcf18, 0xd913, 0xcf0c, 0xcf16, 0xcf13, 0xcd5a, 0x303b, + 0x3460, 0x4dcf, 0xce3d, 0xcf05, 0xceac, 0xcf11, 0xcf08, 0xcec3, + 0xcf0f, 0xcf07, 0xd1f4, 0x4e15, 0xcf0a, 0x4de3, 0xcf18, 0x4e69, + 0xcef3, 0xd426, 0xcf19, 0xcf22, 0xcf12, 0xcec9, 0xcf23, 0x4dfc, + 0xcf0a, 0xcf1e, 0x4cfb, 0x4e4b, 0xce6b, 0xcf1a, 0xcf1c, 0xcf1f, + 0xcf1b, 0x23bf, 0xc70c, 0x4e31, 0xceb5, 0x4d5b, 0xcee6, 0xae4c, + 0xcf1d, 0xcf21, 0xcf29, 0x4e26, 0xceb5, 0x4d2f, 0x4e9d, 0xcf27, + 0xcea4, 0xcf26, 0x4d77, 0xe9bd, 0xcf15, 0xcf25, 0x303b, 0x3403, + 0x3460, 0x4dcf, 0xcdeb, 0xcee9, 0xcdd0, 0x4db3, 0xcef7, 0x4e70, + 0xcf2b, 0xcf2a, 0xce66, 0x4e8e, 0x4e96, 0xcea4, 0x4cfb, 0x4e18, + 0xce6b, 0x4e61, 0xcee3, 0xcf2f, 0xcec7, 0xcf2e, 0x1f1e, 0xa098, + 0xcffb, 0xcf2d, 0xcdbd, 0xced5, 0x4e4d, 0xcee3, 0xcf0b, 0xce82, + 0xce48, 0x4e04, 0xcef3, 0x4d75, 0xced8, 0x4cfb, 0x4e18, 0xce4b, + 0x4d78, 0x5327, 0xd812, 0x4f30, 0xe7c1, 0xcf33, 0x4e45, 0x4f2b, + 0xcf32, 0xcf34, 0xcece, 0x4d99, 0xcee7, 0xcf24, 0xcf31, 0xb9db, + 0xce64, 0xcdd5, 0xe8a3, 0xcf2c, 0x4e98, 0xcf35, 0x4d56, 0xcea9, + 0x4d9a, 0x4eed, 0xdce1, 0xcd2f, 0x4e4a, 0x4e96, 0xcea4, 0x4e92, + 0xcf20, 0x4e8f, 0xcf20, 0xcf28, 0xb24d, 0x4e4a, 0x4e8e, 0xcea4, + 0x4e89, 0xcf35, 0xcf06, 0x4d2f, 0x4e32, 0xcf27, 0x4cf8, 0xccf9, + 0xccfe, 0xcd06, 0xcd05, 0xcd02, 0x4e34, 0x4e4a, 0x4e8e, 0xce96, + 0xcd07, 0xcd04, 0xcd1a, 0xcd08, 0x4d4b, 0xce8a, 0xcd00, 0xcd09, + 0xcdef, 0xcd1c, 0xcd18, 0xcd14, 0xcd15, 0xcd17, 0xcdb1, 0xcd0d, + 0xcd1d, 0x4e26, 0xce31, 0xcdb8, 0xcd1b, 0xcd19, 0xcd0b, 0xcd21, + 0xcd35, 0xcd16, 0xcd10, 0xcd13, 0x4d64, 0x4dab, 0x4dda, 0xcf10, + 0xcd3a, 0x4d32, 0xcd4f, 0xcd31, 0xcdf4, 0xcd44, 0xcd33, 0xcd30, + 0xce54, 0xcd42, 0xce10, 0xcd46, 0xcd3c, 0xcd40, 0xcd39, 0xce79, + 0x4d4c, 0xcd93, 0xcd3f, 0xcd81, 0xcd68, 0xcd50, 0xcd5d, 0x4e5e, + 0xe076, 0xcd70, 0xcd4e, 0x4d75, 0xce6a, 0xcd66, 0xcd62, 0xcd73, + 0xcd61, 0x34a7, 0x4d55, 0xcd76, 0xcd5e, 0x4d71, 0xcd82, 0xcd86, + 0xcd83, 0xcd79, 0x4d89, 0x4e4d, 0xce61, 0xcd8c, 0xcd8f, 0x4d5b, + 0xce27, 0x4d99, 0xce7c, 0xcd88, 0xce3e, 0x4dd2, 0xcdd6, 0xcdbe, + 0x4d9a, 0xce8c, 0xcdba, 0xcdcb, 0xcdbd, 0xcdd4, 0xcdc4, 0x4e04, + 0xce69, 0xcdad, 0x4dbf, 0xcddc, 0xcdac, 0x4db3, 0xce43, 0x4d2c, + 0xcda2, 0xcdaf, 0xcdb9, 0xcda3, 0xcd9c, 0xcdbb, 0xcdb0, 0x4da0, + 0xcdd1, 0xcdb4, 0xcdc7, 0xcdd9, 0xcdd7, 0xcdd8, 0xcdec, 0xce9c, + 0xcdf9, 0xcdf2, 0xcddd, 0x4dfc, 0xce15, 0xce62, 0xcde6, 0xcd9e, + 0xcdde, 0xcdf6, 0x4d64, 0x4dab, 0x4dda, 0xcebf, 0xcdf1, 0xce0b, + 0xcde9, 0xcde0, 0xce37, 0xcde8, 0xcde1, 0x4de3, 0xce01, 0xce09, + 0xce1b, 0xce1f, 0xce1d, 0xce2b, 0xce17, 0xce1e, 0x4e8f, 0xce92, + 0xce2d, 0xce0a, 0xce11, 0xce7d, 0xce39, 0xce35, 0x4d2f, 0x4e32, + 0xce9d, 0xce93, 0xce2e, 0xce46, 0x4e45, 0xce70, 0xce88, 0xce5a, + 0xce55, 0xce52, 0x4e6e, 0xe7c1, 0xce7e, 0xce70, 0xce6f, 0xce73, + 0x4e89, 0xce98, 0x4f3b, 0x4f50, 0xe475, 0xa378, 0xc4e8, 0xc0b0, + 0x3b20, 0xcf3c, 0xcf36, 0x3b20, 0xcf3a, 0x46cb, 0x6262, 0xe4b5, + 0x44f6, 0xc501, 0x4516, 0xcf4c, 0xba3d, 0x275b, 0x28b0, 0x28b5, + 0x28dc, 0xcf4e, 0x4516, 0xcf42, 0x275b, 0x28b0, 0x28b5, 0x28dc, + 0xcf48, 0x4f36, 0xe475, 0x4db2, 0x4f52, 0xcf53, 0x4f51, 0xcf53, + 0x4f51, 0xcf52, 0x2570, 0x26c9, 0xcf85, 0x4f70, 0xcf78, 0xcf77, + 0x3683, 0xdfa0, 0x4f5a, 0xcf78, 0xcf86, 0x208c, 0x69e1, 0xea82, + 0xcf80, 0xcf62, 0x4f5a, 0xcf70, 0xcf76, 0x4f88, 0xd98a, 0x21aa, + 0xae42, 0xcf57, 0xcf74, 0x4f88, 0x5989, 0xd98a, 0x4f81, 0x4f87, + 0x5989, 0xd98a, 0xd288, 0xd288, 0xcf97, 0xcf91, 0xcf90, 0xcf8c, + 0xcfa5, 0xcfa8, 0xcfa4, 0xcfa3, 0xcf9f, 0xcfa1, 0x9e49, 0x217b, + 0xe90a, 0xcfb9, 0x4fb6, 0xd1bb, 0x4fb4, 0xd1bb, 0xcfae, 0x4fc5, + 0xcfe4, 0x4fc4, 0xcfe4, 0xcfe0, 0x9e60, 0xcff9, 0xcffd, 0xcfec, + 0xcfc6, 0x4fc4, 0xcfc5, 0xc3a9, 0xcfda, 0xcffa, 0xc796, 0xcfd8, + 0xcff1, 0x4e59, 0xe8dc, 0xcfd9, 0xc1ff, 0xb537, 0xd008, 0xd007, + 0xd00b, 0xd00a, 0xc54a, 0xc9d0, 0xb7b1, 0xe504, 0xd02e, 0xd5c9, + 0xd02c, 0x39c8, 0xe392, 0xd027, 0xd022, 0xbacc, 0xd073, 0xb065, + 0xd043, 0xdead, 0x504c, 0x5077, 0xdec4, 0xd076, 0xd03c, 0xd07e, + 0x5040, 0x5077, 0xdec4, 0xd079, 0x5068, 0xd06f, 0x2723, 0xa7a9, + 0xe5fb, 0x28fb, 0xaa7f, 0x5066, 0x506a, 0xd070, 0x5061, 0x506a, + 0xd070, 0x5054, 0xd06f, 0xd075, 0x5061, 0x5066, 0xd070, 0xd06f, + 0x2abf, 0xb127, 0xd06f, 0x5054, 0x5068, 0x506b, 0xd06e, 0x5061, + 0x5066, 0xd06a, 0xa8f0, 0xd038, 0x242c, 0xd07d, 0xd069, 0xd042, + 0x5040, 0x504c, 0xdec4, 0xd04d, 0x242c, 0xd074, 0xd04b, 0x4c9b, + 0xd085, 0x4c9b, 0xd083, 0xd088, 0xd087, 0xab8d, 0xd0af, 0x5178, + 0xd193, 0xd135, 0xd19a, 0xd0da, 0xc5a3, 0xeaaf, 0x508e, 0xd0bb, + 0xa3b7, 0x3bd3, 0xd8ac, 0xe91a, 0xd0af, 0xd14e, 0xd16b, 0xd139, + 0x5105, 0x5107, 0xd10b, 0x1f37, 0xa191, 0x51bb, 0xd1bd, 0xb3f9, + 0xd0a7, 0xa2dd, 0x585a, 0xeb0d, 0xb727, 0xd156, 0xd1da, 0x511b, + 0xde01, 0xd1d9, 0xd1a0, 0x5106, 0xd13a, 0x50c1, 0xd10b, 0x5103, + 0xd13a, 0xd0c1, 0xd109, 0xd108, 0x50c1, 0xd105, 0xd1be, 0x51d3, + 0x51df, 0xead2, 0xd1cd, 0x5133, 0xd166, 0xd1bf, 0xd1e0, 0xa43b, + 0x5173, 0xde0b, 0x50eb, 0xde01, 0xa507, 0x9fee, 0xd131, 0xd12b, + 0x2318, 0x5111, 0xd166, 0xd0a1, 0xd161, 0xd1c9, 0x45ee, 0xd0c0, + 0x5103, 0xd106, 0xd157, 0xa00e, 0x51c8, 0xd1d8, 0xe183, 0xd0be, + 0xd0e8, 0xd13e, 0xd195, 0xd1a3, 0xd136, 0x2318, 0x5111, 0xd133, + 0xd0bf, 0xef76, 0xe84b, 0x511a, 0xde0b, 0x50a0, 0xd193, 0xd1a9, + 0xd183, 0xea30, 0xeac8, 0xd190, 0xd17d, 0xd182, 0xd1cf, 0x50a0, + 0xd178, 0xd158, 0xd0a4, 0xd0f6, 0xd15f, 0xecd5, 0xd17b, 0xe94d, + 0x6ac4, 0xead3, 0x4fb4, 0x4fb6, 0x50c6, 0xd1bd, 0x50c6, 0xd1bb, + 0xd10d, 0xd113, 0xd1cb, 0x4655, 0xc670, 0x514a, 0xd1d8, 0xd138, + 0xd1c0, 0xd110, 0x5191, 0xead5, 0x510f, 0xd1df, 0x514a, 0xd1c8, + 0xd0ed, 0xd0ea, 0xd1e2, 0xc66f, 0x510f, 0xd1d3, 0xd114, 0xd1dc, + 0xa367, 0x9e34, 0xd1f0, 0xd1ed, 0xcdfb, 0x23f0, 0xa76e, 0xdf3f, + 0x9e0e, 0xa174, 0x1e3e, 0x3319, 0xb4e7, 0xb5e7, 0x3368, 0xd20e, + 0xd20d, 0xd213, 0xd210, 0x5217, 0x62ea, 0xe4fa, 0x5216, 0x62ea, + 0xe4fa, 0xe928, 0xd264, 0xd239, 0x523b, 0xd26b, 0xd266, 0xd259, + 0xb7c1, 0xd24a, 0xd229, 0x522e, 0xd26b, 0xd236, 0xd231, 0xba2f, + 0x3a79, 0xd26a, 0xd223, 0xd230, 0x3a79, 0xd263, 0x522e, 0xd23b, + 0xd271, 0x26cf, 0xd270, 0x5276, 0x5277, 0x5c53, 0xdc54, 0x5273, + 0x5277, 0x5c53, 0xdc54, 0x5273, 0x5276, 0x5c53, 0xdc54, 0xd279, + 0xd278, 0x49c7, 0x52b8, 0x541f, 0x54fa, 0xd5dd, 0xcbc0, 0x4f8a, + 0xcf8b, 0xd28c, 0xd28b, 0xa349, 0xd58c, 0xd56a, 0xd606, 0xd2b2, + 0xd2b1, 0x49c7, 0x527a, 0x541f, 0x54b7, 0x54fa, 0x5553, 0xd5dd, + 0xa20d, 0xd4ef, 0x1e42, 0xa208, 0xd466, 0xd5f6, 0xd3a7, 0xd407, + 0xd4bc, 0xd2e7, 0x26cc, 0x4526, 0x4a4c, 0x5607, 0xd613, 0xd351, + 0xd2e2, 0xd2e1, 0xd2ce, 0xa040, 0x55b2, 0xd60b, 0xd393, 0xd3f0, + 0x4b35, 0xcbc4, 0x2179, 0xd332, 0xd396, 0xd622, 0xd526, 0xa84b, + 0xc162, 0xd354, 0x4e6d, 0xd812, 0xcd65, 0xd438, 0x2179, 0xd30a, + 0xd34a, 0xd395, 0xd346, 0x1f9f, 0xd5a6, 0xd2d0, 0xd318, 0x2e84, + 0xd38a, 0xd598, 0xd3a2, 0xd558, 0xd4fd, 0xd434, 0xd54e, 0xd588, + 0x5415, 0xd5ba, 0x46ea, 0x5569, 0xd62f, 0x3804, 0xb9ae, 0xd477, + 0xbece, 0xc296, 0xc192, 0xd541, 0xd5ce, 0xd4c0, 0xd52d, 0xd552, + 0xd452, 0xd464, 0x546f, 0x55ac, 0xd5e5, 0xdc46, 0xb357, 0xd510, + 0x3d96, 0xd49e, 0x2e84, 0xd358, 0xd2fa, 0xd347, 0xd30e, 0xa50d, + 0xd35a, 0xd2cb, 0xd40a, 0xd4ee, 0xd494, 0xd435, 0xd3df, 0xd59f, + 0x4372, 0xca6b, 0xd555, 0xc469, 0x6d2c, 0x6daf, 0xee0e, 0x5493, + 0xd4f4, 0xd3be, 0xd3bd, 0xd458, 0xb79c, 0x235c, 0xd514, 0xd3b5, + 0xa807, 0x234e, 0x2d0b, 0xd550, 0xd2fd, 0xd506, 0x2eb5, 0x544a, + 0xd4ed, 0xd445, 0xd2cc, 0xd3b1, 0xd420, 0xd4f1, 0x5360, 0xd5ba, + 0xd600, 0xd63f, 0x49c7, 0x527a, 0x52b8, 0x54fa, 0xd5dd, 0xd40c, + 0x56cd, 0xd7a2, 0x25b6, 0xc1df, 0xce08, 0xd56d, 0xd5a9, 0x9e07, + 0x557f, 0x55fc, 0xd610, 0xd35d, 0xd3b4, 0xd330, 0xd55a, 0xd3f9, + 0xa3f6, 0x2eb5, 0x53f4, 0xd4ed, 0xd36d, 0xc740, 0xd3d1, 0xb939, + 0xd593, 0x46d6, 0xd4cb, 0xd36e, 0xd2c7, 0xd58a, 0xa85f, 0xb934, + 0xd36f, 0xd525, 0xd364, 0xd515, 0xcbc6, 0xd546, 0xd562, 0xd523, + 0xd51e, 0xb41c, 0x53bc, 0xd4f4, 0xd3b3, 0x31de, 0x3e95, 0x3fdb, + 0xc7c7, 0x3d96, 0xd385, 0xaf60, 0xd533, 0xd2b8, 0xd2cd, 0xd36a, + 0xae2d, 0x46d6, 0xd462, 0x4c11, 0xcc14, 0xd5cd, 0xd58a, 0xd63a, + 0xd577, 0xe3a3, 0xea40, 0x2eb5, 0x53f4, 0xd44a, 0xd3b2, 0xd2c1, + 0xd40d, 0x53bc, 0xd493, 0x49c7, 0x527a, 0x52b8, 0x541f, 0xd5dd, + 0xd35c, 0x298d, 0xa9f8, 0xd3f1, 0xd37b, 0xd84a, 0x235c, 0xd3d4, + 0xd482, 0xd48c, 0xd48b, 0xd471, 0xd311, 0xd36b, 0xd5bc, 0xd53b, + 0xd4a8, 0xeebb, 0x2328, 0xd5cf, 0x4ba6, 0xcc00, 0xd594, 0xd61e, + 0xd5fa, 0xd532, 0x55f9, 0xdb6a, 0xd368, 0xd487, 0x554b, 0xd602, + 0x554a, 0xd602, 0xd35e, 0x234e, 0xd3ef, 0xd36c, 0xd2b8, 0xd3b8, + 0xd35b, 0xd43c, 0xd489, 0xd361, 0xd29c, 0xd427, 0xd580, 0xd604, + 0x55f4, 0xd60a, 0xd4e3, 0x5431, 0x55fc, 0xd610, 0xd570, 0xd35f, + 0x546a, 0xd4df, 0xd297, 0xa9dc, 0xd460, 0xd537, 0x26ed, 0xa712, + 0xd359, 0xd3b6, 0x1f9f, 0xd350, 0xd428, 0x55b0, 0xd60d, 0x536f, + 0xd5e5, 0xca17, 0x4c54, 0xd5ea, 0xd5f7, 0x55ab, 0xd60d, 0x52f9, + 0xd60b, 0x5360, 0xd415, 0xd52f, 0x4a01, 0x4a3e, 0x4a3f, 0xd5f3, + 0x1e1b, 0x23e2, 0x3a37, 0xbb09, 0x201f, 0x2fa3, 0xd024, 0xd4dd, + 0xd369, 0x2328, 0xd535, 0xd61a, 0x49c7, 0x527a, 0x52b8, 0x541f, + 0xd4fa, 0x563d, 0xd646, 0xcc58, 0x536f, 0xd5ac, 0x4c54, 0xd5ae, + 0x4a01, 0x4a3e, 0x4a3f, 0xd5c1, 0x5574, 0xd60a, 0xd2c8, 0xd5af, + 0x553c, 0xdb6a, 0xd53a, 0x5431, 0x557f, 0xd610, 0xd41a, 0x554a, + 0xd54b, 0xd572, 0xd2a6, 0x4526, 0x4a4c, 0x52cf, 0xd613, 0x5574, + 0xd5f4, 0x52f9, 0xd5b2, 0x55ab, 0xd5b0, 0x6a65, 0xeaa5, 0x5431, + 0x557f, 0xd5fc, 0x52cf, 0xd607, 0xba97, 0xd5d3, 0xd539, 0xd30f, + 0xa170, 0x46ea, 0xd361, 0xd4e0, 0x55df, 0xd646, 0xd41d, 0xa914, + 0x55df, 0xd63d, 0x1e55, 0xd65d, 0xd65c, 0xb16e, 0xc307, 0x21e6, + 0xa904, 0xa47c, 0x565a, 0xd65b, 0x5657, 0xd65b, 0x5657, 0xd65a, + 0xd64f, 0x1e55, 0xd64e, 0xa3f7, 0xd666, 0xd665, 0x9e8f, 0x567a, + 0xd7f2, 0xd66f, 0xd7e3, 0xd66c, 0xd768, 0x2b83, 0xd6c7, 0xd66b, + 0xd771, 0xe6d6, 0xd766, 0xd806, 0xd755, 0xd7fb, 0xd79e, 0xd801, + 0x57a1, 0xd7c1, 0xd739, 0xd72f, 0x5745, 0x5836, 0xd83a, 0xd788, + 0xd6d4, 0xd814, 0xd6ba, 0xec8d, 0xd706, 0xd6d4, 0xd6a6, 0x2b83, + 0xd675, 0xd831, 0x5424, 0xd7a2, 0x5807, 0xd823, 0xd7f6, 0x5698, + 0x56b4, 0xd716, 0xef03, 0xd83b, 0xd7a7, 0xd7c4, 0xd6fa, 0xd7ef, + 0xd784, 0xd810, 0xd6f1, 0xd715, 0x5c9d, 0xdd1d, 0xd82d, 0xd6ac, + 0xd782, 0xd6fb, 0xd6d4, 0xd778, 0x574b, 0xd81f, 0xd68c, 0xd68b, + 0xeb4e, 0x5695, 0x5836, 0xd83a, 0x577f, 0xd805, 0xd7c8, 0xd7ec, + 0x5721, 0xd81f, 0xd80d, 0xd680, 0xc32c, 0xd815, 0xd67e, 0xd671, + 0xc33f, 0xd67b, 0xd717, 0xd7bb, 0xd811, 0x5747, 0xd805, 0xd7bf, + 0xd70b, 0xd6f3, 0xd696, 0xd78e, 0xd78d, 0xd7fb, 0x5827, 0xd839, + 0xd682, 0xd68a, 0x5424, 0xd6cd, 0x3594, 0xb59e, 0xd6ef, 0xd7ce, + 0xd77c, 0xd780, 0xd68a, 0xd6f0, 0xd7c7, 0xd7c6, 0xd748, 0xd7a8, + 0xd828, 0xd80e, 0xd66e, 0xd749, 0xd6f2, 0xd66b, 0xd6cf, 0xd821, + 0xd80f, 0x5681, 0xd798, 0xd683, 0x5747, 0xd77f, 0xd67f, 0x56ce, + 0xd823, 0xd74e, 0xd7d2, 0xd7f9, 0xd6f4, 0xd77e, 0x4d78, 0x4e6d, + 0xd327, 0xd69d, 0xd761, 0x5721, 0xd74b, 0xd7f8, 0xb0f7, 0x56ce, + 0xd807, 0x5799, 0xd839, 0xd7cf, 0xd702, 0xd6ca, 0x5695, 0x5745, + 0xd83a, 0x5799, 0xd827, 0x5695, 0x5745, 0xd836, 0xd6ee, 0x4383, + 0xdc9c, 0xd844, 0xd842, 0xe1c1, 0x1e51, 0x1f17, 0xc73e, 0x24af, + 0xa580, 0xd511, 0xb72f, 0x2563, 0x5858, 0xe29c, 0xa40c, 0xadf7, + 0x2563, 0x5854, 0xe29c, 0xd0e1, 0x236b, 0xd85e, 0x2675, 0x585f, + 0xe053, 0xa1b2, 0x236b, 0xd85b, 0x2675, 0x585c, 0xe053, 0xd864, + 0xd863, 0xd8dc, 0xe336, 0xd96f, 0xd89e, 0xa3ea, 0xd8b5, 0xd956, + 0x2acb, 0x2b1d, 0xd8ca, 0xd918, 0xae12, 0x596a, 0x67c8, 0xe7e4, + 0xd86e, 0x3bd3, 0xd0b2, 0xd972, 0xeef9, 0xd94f, 0x4d5d, 0xd8e4, + 0xd87d, 0xd8cc, 0xd8dd, 0xd960, 0xd90c, 0xd885, 0xd8b7, 0x58e1, + 0xe1cc, 0xd8e0, 0xd865, 0xd8c5, 0xd8d9, 0x58cf, 0xe1cc, 0xd933, + 0xd95d, 0x58b4, 0xd932, 0xd947, 0x5912, 0xd943, 0xb707, 0xd92b, + 0xd8f5, 0xd8f4, 0xa236, 0xa90d, 0xb0fc, 0xd8c8, 0xd90f, 0xd90e, + 0x58e6, 0xd943, 0xcde5, 0xd886, 0xd938, 0xd94c, 0xd8ed, 0xd8e4, + 0xd8e2, 0xd964, 0xd91b, 0x9eb5, 0x58e6, 0xd912, 0xd8e5, 0xd91d, + 0xb742, 0xd8af, 0xd974, 0xd884, 0xd8e3, 0xd8c6, 0xd934, 0xd89c, + 0xb446, 0xb4f7, 0xd86c, 0xd8ad, 0x5955, 0xd97d, 0xd974, 0x2364, + 0xa365, 0x290d, 0xafa9, 0xe738, 0xb838, 0x4f87, 0x4f88, 0xd98a, + 0x4f81, 0x4f87, 0x4f88, 0xd989, 0xd9c1, 0xaf01, 0xd9c3, 0xd9c4, + 0x599a, 0x59ba, 0xd9c9, 0x5994, 0xd9c5, 0x5993, 0xd9c5, 0x470e, + 0xd9c6, 0xd9c7, 0x5990, 0x59ba, 0xd9c9, 0xd9cb, 0xd9cd, 0xd9ce, + 0x59bd, 0xd9c8, 0xc779, 0x9eb2, 0xd9ca, 0xd9cf, 0xd9b7, 0xd9d0, + 0x59c0, 0xd9c2, 0xd9bc, 0x59b0, 0xd9d1, 0x358d, 0x5990, 0x599a, + 0xd9c9, 0xd9b6, 0x59a7, 0xd9c8, 0xd9cc, 0x59b3, 0xd9c2, 0xd98b, + 0x59b3, 0xd9c0, 0xd98e, 0xd98f, 0x5993, 0xd994, 0x470e, 0xd996, + 0xd998, 0x59a7, 0xd9bd, 0x5990, 0x599a, 0xd9ba, 0xd9ac, 0xd9a1, + 0xd9bf, 0xd9a5, 0xd9a6, 0xd9af, 0xd9b2, 0xd9b7, 0xcb4b, 0x59ef, + 0xd9f6, 0xb2b5, 0xd9f4, 0xd9e7, 0xd9f8, 0xd9e3, 0x59d7, 0xd9f6, + 0xd9de, 0x59d7, 0xd9ef, 0xd9e6, 0x59fd, 0xd9ff, 0x59f9, 0xd9ff, + 0x59f9, 0xd9fd, 0x5a01, 0xdba0, 0x5a00, 0xdba0, 0xdba2, 0xdba3, + 0xdba1, 0xdbaf, 0xdba7, 0xdba8, 0xdba6, 0xdbb1, 0xdbad, 0xdbaa, + 0xdbab, 0x3258, 0xdbac, 0xdbb0, 0xdabe, 0xdbb9, 0xdbb6, 0xdbbc, + 0x47e4, 0xc7e7, 0x241f, 0xa656, 0xbb23, 0xdbc0, 0xdbb7, 0xdbbb, + 0xdbbf, 0x9fe1, 0xdbbe, 0xdbb8, 0x5b6f, 0xdbd1, 0xdbc9, 0x24ec, + 0xdbc3, 0xdbca, 0xbce8, 0x5b49, 0xdbc1, 0xda6c, 0xdbc2, 0x2467, + 0xdbcb, 0x246a, 0xa492, 0xa46d, 0xdbb5, 0xdbc8, 0xdbd2, 0xdbcf, + 0xdbc4, 0xdbd0, 0xdbc7, 0xdbce, 0xdbc5, 0xdbcd, 0xdb8b, 0xa48f, + 0xdbe9, 0xdbe2, 0xdbe3, 0xdbd5, 0xabdf, 0xdbd7, 0xdbe7, 0x5a3d, + 0xdbdf, 0xdbe1, 0xdbe0, 0xdbd8, 0x5b6e, 0xdbdd, 0xdbe5, 0xdbe6, + 0xdbdc, 0xdbd9, 0xdbd6, 0xdbd4, 0xdbdb, 0xdbd3, 0xa938, 0xdb7d, + 0xdb04, 0xafd7, 0xdba4, 0xdbf3, 0xdbf6, 0xdbde, 0x3096, 0xb102, + 0x2500, 0xdbf1, 0xdbee, 0xdbed, 0xdbda, 0xdbeb, 0xdbec, 0xdbef, + 0xdbf0, 0xdbf5, 0xdbf2, 0x5aac, 0xdbf4, 0x5aaa, 0xdbf4, 0x5b80, + 0xdbfb, 0xa531, 0xdc01, 0xdbfe, 0xdc07, 0xdbfd, 0x4ae9, 0xdc0a, + 0xda1a, 0xdc03, 0xdc04, 0xdc06, 0xdc08, 0xdbff, 0xdbf7, 0x5aeb, + 0xdc0f, 0xdbe4, 0xdbf9, 0xdbfc, 0xdc05, 0xdbba, 0xdc02, 0xdc00, + 0xdc0d, 0xdc1e, 0xdc1d, 0x5afc, 0xdc16, 0x5b1a, 0xdc25, 0xdbe8, + 0x5b8d, 0xdc14, 0xdc1b, 0xdc10, 0xdb5c, 0x5acc, 0xdc0f, 0x242f, + 0x2518, 0x2553, 0x2554, 0x255f, 0xe5d9, 0xdc15, 0xdc18, 0xdbb3, + 0x3697, 0xdc19, 0xdc0c, 0x5bbd, 0xe8a8, 0xdbf8, 0xdc1a, 0x5ae0, + 0xdc16, 0xdbfa, 0xdc0b, 0xdc12, 0xdc13, 0xda8a, 0xdbcc, 0xdc0e, + 0xbb4c, 0xdc1c, 0xdc27, 0xdc11, 0xdc21, 0xdc24, 0xdc26, 0x5ae1, + 0xdc25, 0xdbb2, 0xdc22, 0x5b21, 0xdc23, 0x5b20, 0xdc23, 0xdc1f, + 0xa546, 0x5b81, 0xdc2a, 0xdc2c, 0x5b7e, 0xdc2b, 0xa5f9, 0xdbb4, + 0xdc28, 0x247c, 0xa611, 0xdc29, 0x24d7, 0xa629, 0x5a3c, 0xdbc1, + 0xdbb9, 0xdc32, 0xdba5, 0xa642, 0x5b5b, 0xdc2e, 0xdbc6, 0xdc2f, + 0xdc2d, 0x5b56, 0xdc2e, 0x5ae9, 0xdc31, 0xa66a, 0x553c, 0xd5f9, + 0x2661, 0xdc35, 0xbbc1, 0x5a71, 0xdbdd, 0x5a33, 0xdbd1, 0xdbae, + 0xa584, 0x5b93, 0xdba9, 0xdc34, 0xb2a4, 0xdbea, 0x46d1, 0xc6e3, + 0xda89, 0x5b2d, 0xdc2b, 0x5aad, 0xdbfb, 0x5b2b, 0xdc2a, 0x5b9a, + 0xdd5e, 0xdc09, 0x23d8, 0xa909, 0xda5f, 0x2bb4, 0xe1bc, 0x5ae4, + 0xdc14, 0x1ec7, 0x5b90, 0xe6e0, 0x5b8e, 0xe6e0, 0xdc17, 0x5b72, + 0xdba9, 0xdc30, 0xdc36, 0x5b83, 0xdd5e, 0xdc20, 0xdc33, 0x5a00, + 0xda01, 0xda08, 0xda02, 0xda03, 0xda8d, 0xdb4f, 0xda10, 0xda0c, + 0xda0e, 0x5b72, 0xdb93, 0xda15, 0xda16, 0x3258, 0xda17, 0xda13, + 0xdb70, 0xda0a, 0xda18, 0xda12, 0xdb1b, 0xdaf1, 0xdb33, 0xda4e, + 0xda1d, 0xda25, 0xda31, 0x5a1b, 0xdb4c, 0xdad6, 0xda29, 0xda1f, + 0x5af7, 0xe8a8, 0xda2d, 0xda2a, 0xda23, 0x5a3c, 0xdb49, 0xda41, + 0xda36, 0xda55, 0xda5b, 0xdb58, 0xda57, 0xda50, 0xda34, 0xda3a, + 0xda46, 0xdb05, 0xda5e, 0xda58, 0xda54, 0xda56, 0x5a33, 0xdb6f, + 0xda52, 0xda86, 0xda84, 0xda66, 0xda7f, 0xda69, 0xda70, 0xda7c, + 0xdaa0, 0xda85, 0xda75, 0x5a71, 0xdb6e, 0xda95, 0xda6c, 0xda6e, + 0xda6d, 0xda62, 0xda63, 0xdacd, 0xda72, 0xda73, 0xda6b, 0xdae2, + 0xda61, 0xdb78, 0xdaa1, 0xdaa3, 0xda9e, 0xda9a, 0x309e, 0xdaa4, + 0xdaa5, 0x2500, 0xda98, 0xdaa8, 0xda91, 0x5aaa, 0xdaac, 0xdaa6, + 0xda92, 0xdacb, 0xdaf8, 0xdacf, 0xdafe, 0x5aad, 0xdb80, 0xdad1, + 0xdab9, 0xdab2, 0xdac9, 0xdadb, 0xdab0, 0xdad7, 0xdabf, 0xdac2, + 0xdad2, 0xdac4, 0xdab6, 0xdac7, 0xdb85, 0x4ae9, 0xdabc, 0xdb00, + 0xdaf6, 0xdadc, 0xdb0a, 0x5acc, 0xdaeb, 0xdae7, 0xdb14, 0xdb01, + 0xdb02, 0x5ae4, 0xdb8d, 0xdaed, 0x5ae0, 0xdafc, 0xdb92, 0xdaee, + 0x3697, 0xdaf3, 0xdafa, 0xdae6, 0xdb0e, 0xdade, 0xdadd, 0xdb28, + 0xdb9c, 0xdb16, 0xdb1d, 0x5b20, 0xdb21, 0xdb17, 0x5ae1, 0xdb1a, + 0xdb19, 0xdb10, 0xdb39, 0xdb3e, 0x5b2b, 0xdb81, 0x5b2d, 0xdb7e, + 0xdb2c, 0xdb5a, 0x5b56, 0xdb5b, 0xdb59, 0xdb95, 0xdb5c, 0xdb4e, + 0xdb9e, 0xdb74, 0xdb6b, 0xdb96, 0x4a40, 0xccd3, 0xac88, 0x3e13, + 0x3eaa, 0xdc40, 0x3e13, 0x3eaa, 0xdc3f, 0xd373, 0xac82, 0x1e30, + 0x5c50, 0x673b, 0xe74a, 0x4ad6, 0xcaea, 0x1e30, 0x5c4a, 0x673b, + 0xe74a, 0x5273, 0x5276, 0x5277, 0xdc54, 0x5273, 0x5276, 0x5277, + 0xdc53, 0xdc5a, 0xdc58, 0xdc87, 0x9e88, 0xc32a, 0xdc76, 0xdc6e, + 0xc2b2, 0xc2b4, 0xdc94, 0xc2c9, 0xef26, 0xdc64, 0xc2e2, 0xc2b4, + 0xc683, 0x42f8, 0xc30d, 0xc30a, 0xc32f, 0xc32b, 0xdc7c, 0xc34f, + 0xc37e, 0x4383, 0xd83c, 0x56fd, 0xdd1d, 0xdd1e, 0x2458, 0x24e1, + 0xdd20, 0xdd1f, 0x321d, 0xdd22, 0xdd21, 0xdd2b, 0xdd27, 0xdd29, + 0xdd2a, 0xdd2f, 0xdd23, 0x2295, 0x5cea, 0xdd28, 0x2f10, 0x5cb3, + 0xdd30, 0xdd2e, 0xdd33, 0xdd40, 0x2f10, 0x5cae, 0xdd30, 0xdd35, + 0xdd2c, 0x9e70, 0xdd37, 0xdd36, 0xdd39, 0xdd34, 0xdd3b, 0xdd38, + 0xdd3a, 0xdd32, 0xdd42, 0xdd41, 0xdd3f, 0xdd45, 0xdd44, 0xdd3e, + 0x2379, 0xb064, 0xdd3c, 0xc68e, 0x5d13, 0xdd43, 0x5ce4, 0xdd31, + 0xdd48, 0xdd4a, 0x2bbe, 0xdcd4, 0x2bbe, 0xdcd3, 0xdd47, 0xdd4a, + 0xdd52, 0xdd49, 0x5d0a, 0xdd5e, 0xdd50, 0xdd4f, 0xdd54, 0x4d9a, + 0x4e8c, 0xdd53, 0x5d12, 0xdd24, 0x2356, 0xa8f2, 0x5cce, 0xdd31, + 0xdd4b, 0xdd55, 0x2295, 0x5cad, 0xdd28, 0xdd4d, 0xdd26, 0xdd4c, + 0xa046, 0x5d56, 0xe83c, 0xdd57, 0x5d4d, 0xef4e, 0xdd5a, 0xdd59, + 0xdd2d, 0xdd5b, 0xdd5c, 0x3557, 0xdd25, 0xdd3d, 0xdd58, 0xdd5f, + 0xdd60, 0x5cdb, 0xdd5e, 0x2050, 0x5d17, 0xdd5d, 0xdd61, 0xdd62, + 0xdd46, 0x5ce2, 0xdd24, 0x5ccd, 0xdd43, 0xdd51, 0xdd4e, 0x2050, + 0x5d0b, 0xdd5d, 0xdd63, 0xdd43, 0x56fd, 0xdc9d, 0xdc9e, 0xdca0, + 0x2458, 0x24e1, 0xdc9f, 0xdca2, 0x321d, 0xdca1, 0xdcac, 0x5ce2, + 0xdd12, 0x3557, 0xdd01, 0xdcec, 0xdca8, 0x5cad, 0xdcea, 0xdca9, + 0xdcaa, 0xdca7, 0xdcb6, 0xdcfc, 0xdcaf, 0xdcab, 0x2f10, 0x5cae, + 0xdcb3, 0x5cce, 0xdce4, 0xdcc1, 0xdcb0, 0xdcbc, 0xdcb4, 0xdcba, + 0xdcb8, 0xdcbf, 0xdcbb, 0xdcc0, 0xdcbd, 0xdcca, 0xdd04, 0xdcc8, + 0xdcc4, 0xdcb2, 0xdcc3, 0xdcc2, 0x5ccd, 0x5d13, 0xdd1c, 0xdcc7, + 0xdcc5, 0xdd10, 0xdcd5, 0xdcd1, 0xdcda, 0x5cd2, 0xdcd6, 0xdce6, + 0xdced, 0x5ceb, 0x5cf7, 0xef4e, 0xdd16, 0xdcde, 0xdcdc, 0xdd14, + 0xdcd9, 0xdce1, 0xdce0, 0xdce7, 0x5cf4, 0xe83c, 0xdcf5, 0xdd05, + 0xdcfb, 0xdcfa, 0xdcfd, 0xdcfe, 0x2050, 0x5d0b, 0xdd17, 0x5b83, + 0x5b9a, 0x5cdb, 0xdd0a, 0xdd07, 0xdd08, 0xdd0d, 0xdd0f, 0xdd1b, + 0x407b, 0xc0fe, 0xdd6c, 0xdd6a, 0xdd71, 0xdd70, 0xdd99, 0xdd95, + 0x2c1f, 0x2c20, 0x6bae, 0x6c7b, 0xec9c, 0xdfdf, 0xdd82, 0xdd81, + 0xdda8, 0xdda6, 0xdd76, 0xdd75, 0xdd91, 0xdd8b, 0xde7a, 0x5dc3, + 0xde8d, 0xddb2, 0xddb1, 0xde89, 0xde38, 0x5daf, 0xde8d, 0xde4c, + 0xde92, 0xdff9, 0xddfa, 0xde29, 0xde10, 0xde82, 0xde7a, 0xde55, + 0xde9a, 0xdde5, 0xde8b, 0xac40, 0x50eb, 0xd11b, 0x458e, 0xc58f, + 0xde34, 0x511a, 0xd173, 0xde8a, 0xddf5, 0xde64, 0xddf4, 0xde64, + 0xc8b0, 0xde93, 0xde91, 0xcaac, 0xde0a, 0xddbb, 0xde4f, 0x5e79, + 0xdea2, 0xddc4, 0xde44, 0xdea1, 0xde63, 0xddf8, 0xdff9, 0xde52, + 0x5e28, 0xde2a, 0x5e8a, 0xde95, 0x5e4b, 0xdea2, 0x5dac, 0xddf7, + 0xdea5, 0xddf6, 0xde84, 0xde83, 0xa8b8, 0xddb8, 0x5e0c, 0x5e70, + 0xde95, 0x5dfb, 0xe6ae, 0x5daf, 0xddc3, 0xdeaa, 0xde2f, 0xddde, + 0xde2c, 0x5e70, 0xde8a, 0xdeaa, 0xddf9, 0xdea6, 0xde51, 0x5e4b, + 0xde79, 0xde7f, 0xde9c, 0x5e8f, 0xde99, 0xdeb3, 0xd03d, 0xdec0, + 0x1f53, 0x5ec6, 0x6ab5, 0xead4, 0xdeb2, 0xdeb1, 0xdeac, 0xdeaf, + 0x5040, 0x504c, 0xd077, 0x1f53, 0x5eb0, 0x6ab5, 0xead4, 0xdf66, + 0xdf67, 0xdf68, 0xa19b, 0xdf6a, 0xdf69, 0xdf6b, 0x3799, 0x5ef6, + 0xdf6d, 0xdf6f, 0x5f49, 0xdf6c, 0x5f5f, 0xdf70, 0xdf77, 0xdf78, + 0x5f29, 0xdf88, 0xdf71, 0x3799, 0x5edb, 0xdf6d, 0xdf74, 0xdf75, + 0xdf7a, 0xdf72, 0xdf76, 0x5f15, 0xdf7b, 0xdf7c, 0xdf5c, 0xdf83, + 0xdf82, 0xdf81, 0xdf80, 0xdf7d, 0xdf7e, 0x5f1b, 0xdf86, 0xdf36, + 0x5f19, 0xdf84, 0xb33d, 0x1fcc, 0xdf85, 0x5efd, 0xdf7b, 0x5f12, + 0xdf84, 0x5f0c, 0xdf86, 0x5f3a, 0xdf8e, 0xdf89, 0xdf8b, 0xdf8d, + 0xdf57, 0xdf8a, 0xdf87, 0x5ef0, 0xdf88, 0xdf6e, 0xdf8c, 0xdf6f, + 0xdf91, 0xdf8f, 0xdf0f, 0xdf93, 0x5f1c, 0xdf8e, 0xdf90, 0xdf92, + 0xdf97, 0xd206, 0x67b1, 0x67dc, 0xe7ec, 0xbbc2, 0x5f96, 0xe38b, + 0xdf95, 0xdf98, 0x5ee2, 0xdf6c, 0xdf99, 0xdf7f, 0xdf9a, 0xdf21, + 0xdf00, 0x5ee3, 0xdf70, 0xdf94, 0xdf79, 0xdf73, 0xdeca, 0xdecb, + 0xdecc, 0xded2, 0xded1, 0xded4, 0x5ee2, 0xdf49, 0x3799, 0x5edb, + 0xdef6, 0xdf2a, 0x5edf, 0xdf2d, 0x5ee3, 0xdf5f, 0xdef2, 0xdefb, + 0xdf64, 0xdef8, 0xdef9, 0xdefc, 0xdee4, 0xdeeb, 0xdf62, 0xdefa, + 0x5efd, 0xdf15, 0xdefe, 0xdf09, 0xdf0a, 0xdf4e, 0xdf08, 0xdf07, + 0xdf05, 0xdf03, 0x5f12, 0xdf19, 0xdf14, 0x5f0c, 0xdf1b, 0xdf26, + 0x5ef0, 0xdf29, 0xdf1d, 0xdf25, 0xdf1e, 0xdf2c, 0xdf1f, 0x5f1c, + 0xdf3a, 0xdf33, 0xdf3b, 0xdf2f, 0xdf3c, 0xdf38, 0xdf61, 0xdf45, + 0xdf44, 0xdf3e, 0xdf46, 0xdf4d, 0xdf54, 0x5f9e, 0x5fa4, 0xdfad, + 0x5f9d, 0x5fa4, 0xdfad, 0xe5e2, 0x3683, 0xcf6a, 0x2f01, 0x5fa9, + 0xdfaf, 0x5f9d, 0x5f9e, 0xdfad, 0xa29e, 0x2f01, 0xdfa8, 0x2f01, + 0xdfa7, 0x2f01, 0x5fa1, 0xdfaf, 0xdfae, 0x5f9d, 0x5f9e, 0xdfa4, + 0xdfab, 0x2f01, 0x5fa1, 0xdfa9, 0xa19c, 0xdfb6, 0xdfb5, 0x5fba, + 0x6089, 0xe08a, 0x5fb9, 0x6089, 0xe08a, 0xe07c, 0x6039, 0xe054, + 0xe077, 0xdfc3, 0xdfc2, 0xdfe4, 0xe04e, 0xe081, 0x231d, 0xae00, + 0xe04b, 0xe084, 0xe019, 0xe032, 0xe060, 0xe055, 0xe023, 0x5d7f, + 0x6045, 0xe072, 0xdfc6, 0xe008, 0xe087, 0xaef8, 0xaf80, 0xe003, + 0x2f84, 0x2f91, 0xe015, 0x26d8, 0x26de, 0x26ec, 0x2efb, 0x2efd, + 0xe025, 0x5de1, 0xde5f, 0x1e43, 0xaefc, 0xe069, 0xdfef, 0xdfe5, + 0xe078, 0xe05c, 0xe052, 0x6013, 0xe05e, 0x6012, 0xe05e, 0x2f84, + 0x2f91, 0xdff3, 0xdfd9, 0xdfde, 0x26d8, 0x26de, 0x26ec, 0x2efb, + 0x2efd, 0xdff4, 0xe090, 0xa954, 0x3e38, 0xe04a, 0xa468, 0xdfdb, + 0x5fbe, 0xe054, 0xe060, 0xe08f, 0xa06a, 0xe06f, 0x5fdf, 0xe072, + 0x1fa6, 0xa075, 0x3e38, 0xe030, 0xdfd0, 0xdfc7, 0xe00e, 0x2675, + 0x585c, 0xd85f, 0x5fbe, 0xe039, 0xdfdd, 0xe07a, 0xe065, 0xe00a, + 0x6012, 0xe013, 0x5fdc, 0xe03a, 0xbeaf, 0xe059, 0xe002, 0xe041, + 0x5fdf, 0xe045, 0xced5, 0xdfc1, 0xe009, 0xe057, 0xdfbd, 0xdfc8, + 0xdfd8, 0xdfe9, 0x5fb9, 0x5fba, 0xe08a, 0x5fb9, 0x5fba, 0xe089, + 0xe03b, 0xe026, 0xe61d, 0xe127, 0xe13a, 0xe0ab, 0xb751, 0xe0a6, + 0xe114, 0xe0f5, 0xe112, 0xe134, 0x23b8, 0x6130, 0xe6a3, 0xe0cc, + 0x3b1d, 0x6b30, 0xeb31, 0xe0bd, 0x60d2, 0xe0de, 0xe0df, 0xe136, + 0xe12d, 0x60ce, 0xe0de, 0xe106, 0x60ce, 0xe0d2, 0xe0cf, 0xe148, + 0xe116, 0xe0f6, 0xe0ae, 0xe0e8, 0x1e61, 0x6109, 0x610a, 0xe115, + 0xe132, 0xe0d3, 0x1e61, 0x60f7, 0x610a, 0xe115, 0x1e61, 0x60f7, + 0x6109, 0xe115, 0xe0b9, 0xe0ac, 0x1e61, 0x60f7, 0x6109, 0xe10a, + 0xe0e7, 0xe093, 0xe0d1, 0x23b8, 0x60bb, 0xe6a3, 0xe0f8, 0xe0ba, + 0xe0d0, 0xe146, 0xe09d, 0xe147, 0x2398, 0x28e5, 0xaedb, 0xe147, + 0xe137, 0x613c, 0xe142, 0xe0e6, 0x9e23, 0xe194, 0xe189, 0xb59f, + 0x6196, 0xe19e, 0xe18b, 0x467a, 0x6197, 0xe1b1, 0x616c, 0xe1bb, + 0xa5e0, 0x6167, 0xe1bb, 0x61a4, 0xe1ac, 0xe1c5, 0xe1c3, 0x61b8, + 0xe1c0, 0xd14c, 0xe195, 0xe154, 0xe91f, 0xe162, 0x24b8, 0xee79, + 0xe14b, 0xe187, 0x615d, 0xe19e, 0x467a, 0x6166, 0xe1b1, 0xb9bc, + 0x1e11, 0xeb57, 0x615d, 0xe196, 0x6171, 0xe1ac, 0x233b, 0xbbc9, + 0x6171, 0xe1a4, 0x467a, 0x6166, 0xe197, 0x617f, 0xe1c0, 0x6167, + 0xe16c, 0x2bb4, 0xdb8c, 0x617f, 0xe1b8, 0xd845, 0xe17e, 0xe17d, + 0x2bc0, 0xb3a1, 0x61ca, 0xe1cb, 0x61c8, 0xe1cb, 0x61c8, 0xe1ca, + 0x58cf, 0xd8e1, 0x27dc, 0xa8c4, 0xa398, 0x61d2, 0xe485, 0x61d1, + 0xe485, 0x61da, 0x61fb, 0xe486, 0xe487, 0xe48c, 0x2200, 0xa202, + 0xe48a, 0xe489, 0xe48b, 0x61d3, 0xe1fb, 0xe1e1, 0xe488, 0x1e71, + 0x9e82, 0xe1dc, 0x621f, 0xe493, 0xe490, 0xb263, 0xe48f, 0xe492, + 0xe2e9, 0x2251, 0x2263, 0x2271, 0x228d, 0x228e, 0x2292, 0x2294, + 0xe1fc, 0xe497, 0xe48d, 0xe495, 0xe48e, 0x61d3, 0x61da, 0xe486, + 0x2251, 0x2263, 0x2271, 0x228d, 0x228e, 0x2292, 0x2294, 0xe1f0, + 0xe4af, 0xe4ab, 0xe498, 0xe4ad, 0xe4a5, 0x625b, 0xe4c5, 0xe49a, + 0xe4a0, 0xe49d, 0x6264, 0xe4a9, 0xe4a4, 0xe4a3, 0xe491, 0xe49e, + 0xe4ae, 0x629e, 0xe4a7, 0xe1e3, 0xe49f, 0xe499, 0xe4ac, 0xe49b, + 0xe4aa, 0xe3ba, 0x4089, 0xe46a, 0x6438, 0xe4ce, 0x6268, 0xe4cc, + 0xe4c8, 0xe4b6, 0xe4c3, 0xe4b4, 0xe4b9, 0xe4cd, 0xe4b0, 0xe4b8, + 0xe4c0, 0xe4bf, 0xe4be, 0x6295, 0x62e8, 0x6421, 0x6435, 0xe4c1, + 0xe49c, 0xe4bb, 0xe4ca, 0xe4ca, 0xe4c9, 0x2228, 0xe4c7, 0xe4cb, + 0xe4c2, 0xe4b7, 0xe4b3, 0xe4c6, 0x6206, 0xe4c5, 0xe4ba, 0xe348, + 0x46cb, 0x4f3d, 0xe4b5, 0x620e, 0xe4a9, 0xe4b2, 0x622e, 0xe4cc, + 0xe4bc, 0xe4bd, 0x47ff, 0x483f, 0x4926, 0x62db, 0xe45b, 0x6373, + 0x6451, 0x6452, 0xe46c, 0xe4cf, 0xe4f0, 0xe4d2, 0xe4ec, 0xe4ea, + 0xe4f6, 0xe4f3, 0xe4dc, 0xe4da, 0xe4e3, 0xe4e8, 0x6244, 0x62e8, + 0x6421, 0xe435, 0xe4e2, 0xe4ed, 0x6443, 0xe4eb, 0x62bd, 0xe4e6, + 0x2563, 0x5854, 0xd858, 0xe21e, 0xe4d1, 0xe4f7, 0xe4f1, 0xe4df, + 0xe4f5, 0xe4e5, 0xe4d5, 0xe4ef, 0xe4d0, 0x6322, 0xe4b1, 0xe47e, + 0xe4de, 0xc10a, 0x62ed, 0xe510, 0x4107, 0xe500, 0xe508, 0xe511, + 0xe509, 0xe29b, 0xe4dd, 0xe512, 0xe50c, 0xe4a1, 0xe4e4, 0xe4d7, + 0xe50b, 0xe4fb, 0x47ff, 0x483f, 0x4926, 0x6271, 0xe45b, 0xe50a, + 0x646f, 0xe513, 0x6381, 0xe4d8, 0xe504, 0xe503, 0xe514, 0x6244, + 0x6295, 0x6421, 0x6435, 0xe507, 0x61ef, 0xe4d3, 0x5216, 0x5217, + 0xe4fa, 0x62b3, 0xe510, 0xe4d6, 0xe506, 0xe502, 0xe4fd, 0x6444, + 0xe4f8, 0xe50d, 0xe52f, 0xe4a2, 0xe51e, 0x2f55, 0xe332, 0xe516, + 0xe52b, 0xe529, 0x641a, 0xe4d4, 0xe525, 0xe515, 0xe51f, 0xe524, + 0x637f, 0xe531, 0xe4ee, 0xe51b, 0xe52c, 0xe52d, 0xe51c, 0x62ad, + 0xe4b1, 0xe526, 0xe51a, 0xe520, 0xe521, 0x40bc, 0x4149, 0xe34a, + 0xe522, 0xe519, 0x2f55, 0xe304, 0xe530, 0xd868, 0xe486, 0xe4fc, + 0xe3e8, 0xe51d, 0xe528, 0xe52a, 0xe494, 0xe534, 0x6260, 0xe533, + 0x40bc, 0x4149, 0xe32c, 0xe505, 0xe540, 0xe537, 0xe4e1, 0xe496, + 0x4145, 0xe53b, 0xe4ff, 0x6445, 0xe53d, 0xe538, 0xe532, 0xe518, + 0xe539, 0x63d3, 0xe52a, 0xe53e, 0x6274, 0x6451, 0x6452, 0xe46c, + 0xe52e, 0xe536, 0xe517, 0x649f, 0xe53a, 0xe319, 0xe2e3, 0xe541, + 0xe53f, 0xe545, 0xe551, 0xdf44, 0x642e, 0xe570, 0x39c8, 0xd028, + 0x3eb6, 0xc194, 0x63c1, 0xe501, 0xb7aa, 0xe549, 0xe524, 0xe548, + 0x6543, 0xef12, 0xe4a8, 0xd4e5, 0x6402, 0xe54f, 0xe4e0, 0xe4e9, + 0xe53c, 0xe550, 0x63ae, 0xe547, 0x63ad, 0xe547, 0xe552, 0xe54d, + 0xe553, 0xe54c, 0xe228, 0xe54e, 0xe396, 0xe55e, 0xe55f, 0xe4fe, + 0xe546, 0xe559, 0xe560, 0xe55d, 0xe36f, 0xe4ff, 0xe535, 0xe557, + 0xe558, 0xe55b, 0x222c, 0x2257, 0x2277, 0xe4f2, 0x434d, 0xe55c, + 0xe556, 0xe542, 0x63fd, 0xe508, 0xe33e, 0xe55a, 0xe4e7, 0xe564, + 0xe56a, 0x63e5, 0xe508, 0x63a6, 0xe54f, 0xe4d9, 0xe4f4, 0xe563, + 0xe4f9, 0xe566, 0xe561, 0xe50f, 0xe49f, 0xe56b, 0x630f, 0xe4d4, + 0x6481, 0xe562, 0xe568, 0x6244, 0x6295, 0x62e8, 0x6435, 0xe4c1, + 0xe50e, 0xe50f, 0xe544, 0xe54c, 0x638c, 0xe570, 0xe56f, 0xe56d, + 0x6244, 0x6295, 0x62e8, 0x6421, 0xe4c1, 0xe56e, 0x622c, 0xe4ce, + 0xe4db, 0xe571, 0x629a, 0xe4eb, 0x62f3, 0xe4f8, 0xe360, 0xe56c, + 0xe554, 0x6274, 0x6373, 0x6452, 0xe46c, 0x6274, 0x6373, 0x6451, + 0xe46c, 0xb7aa, 0xe572, 0xe527, 0x647d, 0xe4bb, 0x47ff, 0x483f, + 0x4926, 0x6271, 0xe2db, 0x6909, 0xe95f, 0xe574, 0xe4c4, 0xe573, + 0xa228, 0xe565, 0x4089, 0xe229, 0x6274, 0x6373, 0x6451, 0xe452, + 0xe567, 0xe2df, 0xe4a5, 0xe575, 0xe576, 0x4f36, 0xcf50, 0xe54a, + 0xe569, 0xe523, 0x645a, 0xe4bb, 0xe2ae, 0xa1ff, 0x641d, 0xe562, + 0xe54b, 0x61d1, 0xe1d2, 0x61d3, 0x61fb, 0xe337, 0xe1d4, 0xe1dd, + 0xe1d8, 0xe1d7, 0xe1d9, 0xe1d5, 0xe1f7, 0xe1fa, 0xe1e7, 0xe1e4, + 0xe212, 0xe1e9, 0xe1e3, 0xe346, 0xe1f9, 0xe35a, 0xe1f5, 0xe203, + 0xe223, 0xe208, 0xe226, 0xe245, 0xe20d, 0xe214, 0x6221, 0x637e, + 0x6418, 0xe53a, 0xe209, 0xe2c7, 0xe2fc, 0xe211, 0xe210, 0x6205, + 0xe470, 0xbb3d, 0xe21e, 0xe3a2, 0x620e, 0xe264, 0xe227, 0xe201, + 0xe225, 0xe204, 0xe215, 0xe200, 0xe23a, 0x62ad, 0xe322, 0xe266, + 0xe257, 0xe237, 0x46cb, 0x4f3d, 0xe262, 0xe233, 0xe255, 0xe23d, + 0xe238, 0xe25e, 0x6246, 0x645a, 0xe47d, 0xe26c, 0xe26d, 0xe240, + 0xe23f, 0xe23e, 0x6244, 0x6421, 0xe435, 0xe251, 0xe234, 0xe460, + 0x6206, 0xe25b, 0xe25a, 0x2228, 0xe24b, 0xe230, 0xe249, 0x6247, + 0xe248, 0xe24d, 0x622e, 0xe268, 0xe239, 0x622c, 0xe438, 0xe276, + 0xe2ac, 0xe2a0, 0xe27a, 0xe2e9, 0x630f, 0xe41a, 0xe2aa, 0xe2ee, + 0xe2cf, 0xe2e3, 0xe403, 0xe28d, 0xe43a, 0xe285, 0xe2c1, 0xe2b1, + 0xe2a6, 0xe3a7, 0xe358, 0xe296, 0xe291, 0xe2cc, 0xe2a9, 0xe29b, + 0xe3f5, 0xe293, 0xe3a9, 0xe27f, 0x629a, 0xe443, 0xe27b, 0xe298, + 0xe31a, 0xe2ab, 0xe278, 0xe2a5, 0x222c, 0x2257, 0x2277, 0xe3df, + 0xe283, 0xe40b, 0xe2a8, 0xe280, 0xe2a3, 0x62f3, 0xe444, 0xe412, + 0x5216, 0x5217, 0xe2ea, 0xe2d9, 0xe338, 0xe2f1, 0xe3c8, 0x635e, + 0xe3d7, 0xe2b7, 0xe396, 0xe2f0, 0xe2e5, 0x5021, 0xe2e4, 0xe34b, + 0xe2ef, 0xe2e8, 0x62b9, 0x63e5, 0xe3fd, 0xe2bc, 0xe2dd, 0xe2d2, + 0xe2c5, 0xe2f6, 0xe426, 0x6417, 0xe427, 0x62b3, 0xe2ed, 0xe2bb, + 0xe2c3, 0xe2df, 0xe2e6, 0xe312, 0xe306, 0xe37a, 0xe369, 0xe32f, + 0xe328, 0xe31b, 0xe321, 0xe340, 0xe301, 0xe315, 0xe329, 0xe32b, + 0xe32e, 0xe47c, 0x6318, 0xe39a, 0xe310, 0xe326, 0xe455, 0xe341, + 0xe308, 0x6343, 0xe36f, 0xe307, 0xe31f, 0xe320, 0xe375, 0xe2f8, + 0xe333, 0xe319, 0xe365, 0xe348, 0xe347, 0xe3d8, 0xe376, 0xe354, + 0xe364, 0xe36c, 0x637e, 0xe49f, 0xe35b, 0xe3aa, 0xe360, 0xe370, + 0xe384, 0xe34d, 0xe382, 0xe3e4, 0xe3a1, 0xe428, 0xe387, 0xe3cc, + 0x63ad, 0xe3ae, 0xe39b, 0xe398, 0xe477, 0xe482, 0x63b8, 0xe42b, + 0xe3b3, 0xe3bf, 0x63a6, 0xe402, 0xe3ac, 0xe38a, 0xe3b0, 0xe3b5, + 0xe44c, 0xe3e2, 0xe3dc, 0xe3dd, 0xe3cd, 0xe3f0, 0xe3de, 0xe3e1, + 0xe3d1, 0xe3c3, 0xe3c7, 0xe3d0, 0xe414, 0x641d, 0xe481, 0xe410, + 0xe3f7, 0xe465, 0xe413, 0xe46d, 0xe420, 0xe479, 0xe3f9, 0xe419, + 0xe44a, 0xe433, 0xe436, 0xe432, 0x638c, 0xe42e, 0xe43f, 0xe454, + 0xe463, 0xe45e, 0xe471, 0xe472, 0x1ee7, 0x214f, 0x6578, 0xe57f, + 0x1ee7, 0x214f, 0x6577, 0xe57f, 0x1e45, 0x9e46, 0x1ee7, 0x214f, + 0x6577, 0xe578, 0xe5e8, 0xe5e9, 0xe5ea, 0xe5eb, 0x6589, 0xe5ed, + 0xe5ec, 0x6587, 0xe5ed, 0xaf00, 0xe5f6, 0xe5f3, 0x65a0, 0xe5f0, + 0x6592, 0xe5f2, 0x6591, 0xe5f2, 0xe5f4, 0xe5f5, 0xe5f8, 0x65f9, + 0xeb27, 0x658f, 0xe5f0, 0xe602, 0x2173, 0x65d7, 0xe5dc, 0xe601, + 0xa408, 0xe600, 0xa4c4, 0xe5fa, 0xe5fd, 0xe603, 0xe606, 0xe5fe, + 0x65b2, 0xe605, 0x65b1, 0xe605, 0x65c3, 0xe612, 0xe60a, 0x2266, + 0xe609, 0xe60e, 0xe60f, 0xe60d, 0xe608, 0xe60c, 0x65b4, 0xe612, + 0xb77f, 0xb697, 0xe5f1, 0x3ff6, 0xe614, 0xe615, 0xe611, 0xe607, + 0xe617, 0xe618, 0xe5ff, 0xe616, 0xe619, 0xe5ef, 0x2173, 0x65a2, + 0xe5dc, 0x3597, 0x6b25, 0x6b26, 0x6b2a, 0xeb2d, 0x242f, 0x2518, + 0x2553, 0x2554, 0x255f, 0xdaec, 0x2173, 0x65a2, 0xe5d7, 0xe61a, + 0xe613, 0xe610, 0xdf9f, 0xe61b, 0xe5fc, 0xe580, 0xe582, 0xe583, + 0xe586, 0xe588, 0x6587, 0xe589, 0xa54f, 0xe5d6, 0x658f, 0xe5a0, + 0xe5c8, 0x6591, 0xe592, 0xe58e, 0xe593, 0xe594, 0xe58c, 0xb0b6, + 0xe598, 0x6599, 0xeb27, 0xe5a8, 0xd05e, 0xe5e5, 0xe5a9, 0xe5ad, + 0xe5d3, 0xe5a5, 0xe5a3, 0xe5a1, 0xe5ab, 0xeb2e, 0x65b1, 0xe5b2, + 0xe5ac, 0xe5cd, 0xe5be, 0x2266, 0xe5b9, 0xe5b6, 0xeb29, 0xe5bf, + 0xe5bd, 0xe5bb, 0xe5bc, 0xe5e1, 0xe5cc, 0x65b4, 0xe5c3, 0xe5e0, + 0x3ff6, 0xe5ca, 0xe5cb, 0xe5d4, 0xe5d0, 0xe5d2, 0xe5d5, 0x65de, + 0xeb2b, 0xe5e4, 0xe61d, 0x6091, 0xe61c, 0xe68a, 0x1f8c, 0x6634, + 0x6670, 0xe682, 0x6633, 0xe67d, 0xe638, 0x2347, 0xe65e, 0x2742, + 0xac85, 0x274f, 0xa76f, 0xa751, 0xa740, 0xca7d, 0x6626, 0xe67d, + 0x1f8c, 0x6625, 0x6670, 0xe682, 0xe663, 0x2826, 0xe68e, 0xe628, + 0xbcae, 0x2768, 0xe641, 0x2768, 0xe640, 0xe69b, 0xe678, 0xe6b4, + 0xe673, 0xe658, 0xa905, 0x665c, 0x665d, 0xe67f, 0xa7c8, 0xe649, + 0x6655, 0xe67f, 0xe655, 0x2347, 0xe629, 0xaf8f, 0x2866, 0xe635, + 0xe677, 0x2c9b, 0x2cf6, 0x2d8b, 0x2d8c, 0x2db9, 0x669d, 0xe6af, + 0xe695, 0x4906, 0x667a, 0xe6aa, 0x1f8c, 0x6625, 0x6634, 0xe682, + 0xe648, 0xe665, 0xe646, 0x4906, 0x6669, 0xe6aa, 0x2794, 0xa819, + 0x6626, 0xe633, 0x6655, 0xe65c, 0x2830, 0xa895, 0x1f8c, 0x6625, + 0x6634, 0xe670, 0x27de, 0xa824, 0xe61f, 0xb697, 0x2826, 0xe636, + 0xe6a8, 0x1e5a, 0x66a0, 0xe6b1, 0x48d2, 0xe668, 0xa75e, 0xe69f, + 0xe645, 0x2c9b, 0x2cf6, 0x2d8b, 0x2d8c, 0x2db9, 0x6666, 0xe6af, + 0xe699, 0x1e5a, 0x6690, 0xe6b1, 0x23b8, 0x60bb, 0xe130, 0xe68f, + 0x4906, 0x6669, 0xe67a, 0x275f, 0xa8b3, 0xde8b, 0x2c9b, 0x2cf6, + 0x2d8b, 0x2d8c, 0x2db9, 0x6666, 0xe69d, 0x1e5a, 0x6690, 0xe6a0, + 0xea98, 0xe647, 0x66b7, 0xe6b8, 0x66b6, 0xe6b8, 0x66b6, 0xe6b7, + 0x2bc9, 0x674d, 0x674e, 0x674f, 0x6db4, 0x6e16, 0xee64, 0xa3ea, + 0xe6cb, 0xe6e3, 0x6ceb, 0xed08, 0x20f1, 0xecf8, 0xe6bd, 0xe6dd, + 0xe6db, 0x3742, 0xe6dc, 0x2f6b, 0x4431, 0xed70, 0xd67d, 0xa3cc, + 0xee1b, 0x66cf, 0xedb5, 0x3742, 0xe6d1, 0xe6cd, 0x6d8f, 0x6dc4, + 0xee21, 0xadb2, 0x5b8e, 0xdb90, 0xc9bb, 0xe6be, 0xbc1b, 0x9e91, + 0xe742, 0xe717, 0xe741, 0x671a, 0xe727, 0xc535, 0x671a, 0xe727, + 0xe73d, 0xeef4, 0x4075, 0x671b, 0xe748, 0xbcbe, 0xe6f6, 0x66fa, + 0x66fe, 0xe727, 0x4075, 0x670a, 0xe748, 0xe722, 0xe721, 0x66fa, + 0x66fe, 0xe71a, 0xe744, 0xd987, 0x1e30, 0x5c4a, 0x5c50, 0xe74a, + 0xe701, 0xe6f7, 0xe6f3, 0xe72d, 0xa3c7, 0x4075, 0x670a, 0xe71b, + 0xa3c6, 0x1e30, 0x5c4a, 0x5c50, 0xe73b, 0x2bc9, 0x66ba, 0x674e, + 0x674f, 0x6db4, 0x6e16, 0xee64, 0x2bc9, 0x66ba, 0x674d, 0x674f, + 0x6db4, 0x6e16, 0xee64, 0x2bc9, 0x66ba, 0x674d, 0x674e, 0x6db4, + 0x6e16, 0xee64, 0x2bc8, 0xe752, 0x2bc8, 0xe751, 0xe75a, 0x2172, + 0x2929, 0xe75d, 0xe75c, 0xe753, 0xe759, 0x2172, 0x2929, 0xe754, + 0x4cc6, 0x6763, 0x6eaa, 0x6eab, 0x6eb5, 0xeeba, 0xe762, 0x45b1, + 0xc6b0, 0xe768, 0xe82e, 0xe765, 0x676d, 0xe771, 0x676b, 0x6771, + 0xe7e7, 0x676b, 0x676d, 0xe7e7, 0xe7be, 0xcd46, 0x6789, 0xef17, + 0x6780, 0xef17, 0xe7b5, 0xe78d, 0xe78c, 0xade9, 0xe7c3, 0xe7bd, + 0xe7b9, 0x49cb, 0xe7a7, 0x49cb, 0xe7a6, 0xc89f, 0xe7c9, 0x5f41, + 0xe7dc, 0xe7dd, 0xe78b, 0xe79f, 0xe792, 0xe774, 0x4e6e, 0xcf30, + 0xe791, 0xa343, 0x589c, 0xe7e4, 0xe7af, 0xe7e6, 0xe7e7, 0x2dff, + 0xe7e8, 0xe7e9, 0xe7ea, 0x5f41, 0x67b1, 0xe7ec, 0xe7b2, 0xe7eb, + 0x589c, 0xe7c8, 0xe7cb, 0x676d, 0x6771, 0xe7cc, 0x2dff, 0xe7cd, + 0xe7d3, 0xe7d9, 0xe7de, 0x5f41, 0xe7dc, 0xe7ee, 0xe7ed, 0xe7f1, + 0xe7ef, 0x6f4f, 0xef51, 0xe7fb, 0xe7f5, 0xa4cd, 0xe875, 0xe876, + 0xe877, 0xe879, 0xe87a, 0xe878, 0xe87b, 0xe87c, 0xe882, 0xe880, + 0xe883, 0xe884, 0xe87d, 0xe881, 0xe87f, 0xe887, 0xe886, 0x6838, + 0xe888, 0xe88c, 0xe889, 0x6825, 0xe890, 0x6824, 0xe890, 0xe88f, + 0x6830, 0xe88a, 0xa934, 0x6767, 0xe892, 0x682c, 0xe88a, 0xe88b, + 0x4a4e, 0xe896, 0xe894, 0x681a, 0xe888, 0x4a68, 0x683a, 0x683d, + 0xe893, 0x4a68, 0x6839, 0x683d, 0xe893, 0xe891, 0x5cf4, 0xdd56, + 0x4a68, 0x6839, 0x683a, 0xe893, 0xeaed, 0xe897, 0xd16e, 0xe898, + 0xe89d, 0xe89a, 0x6854, 0xe89c, 0xe899, 0xe89b, 0x684f, 0xe89c, + 0x363e, 0xe86f, 0xa6df, 0xb13f, 0xe8a1, 0x685b, 0xe8a0, 0x685a, + 0xe8a0, 0xcc7b, 0xe89f, 0xe8a2, 0xe87e, 0xe8a4, 0xe8a5, 0x363e, + 0xe855, 0xe8a6, 0x6885, 0x6ad7, 0xee15, 0xe89e, 0xe8a7, 0xe801, + 0xe802, 0xe803, 0xe807, 0xe805, 0xe806, 0x6808, 0xeb1a, 0xe80a, + 0xe811, 0xe867, 0xe813, 0xe80e, 0xe812, 0xe80c, 0xe80f, 0xe810, + 0x6871, 0xead7, 0xe818, 0xe817, 0x681a, 0xe838, 0xe821, 0x682c, + 0xe830, 0xe832, 0xe81c, 0xbf41, 0xc1b2, 0xe826, 0x6824, 0xe825, + 0xe83b, 0xe82e, 0x4a68, 0x6839, 0x683a, 0xe83d, 0xe837, 0x4a4e, + 0xe834, 0xe846, 0xe84c, 0xe852, 0xe84e, 0xe853, 0x684f, 0xe854, + 0xe84d, 0xe873, 0xe862, 0x685a, 0xe85b, 0xe859, 0xe865, 0xce87, + 0xe86b, 0xe86c, 0xe870, 0xe874, 0x1e30, 0x21e8, 0x21ec, 0x21ee, + 0x5af7, 0x5bbd, 0x68cc, 0xe8ce, 0xe8d0, 0x68b7, 0x68c6, 0x68c8, + 0xe8d1, 0xe8d2, 0xa3f0, 0xa22e, 0xe8d3, 0x68ae, 0x68c6, 0xe8c8, + 0xe8d4, 0xe8cf, 0xe8d6, 0xe8d5, 0xe8d7, 0x68c4, 0xe8d8, 0x68c3, + 0xe8d8, 0x68ae, 0x68b7, 0x68c7, 0x68c8, 0xe8d9, 0xe8c6, 0x68ae, + 0x68b7, 0x68c6, 0xe8da, 0x21e8, 0x21ec, 0x21ee, 0x68a8, 0xe8ce, + 0x1e30, 0x21e8, 0x21ec, 0x21ee, 0x68a8, 0xe8cc, 0xe8ba, 0xe8ad, + 0xe8ae, 0xe8af, 0xe8b6, 0xe8b8, 0xe8bc, 0xe8bb, 0xe8c0, 0x68c3, + 0xe8c4, 0xe8c6, 0xe8c8, 0xe8de, 0xcffb, 0xe8db, 0x25b0, 0x68e0, + 0xe963, 0x25b0, 0x68df, 0xe963, 0xe910, 0xe965, 0xe964, 0xe966, + 0xe957, 0xe968, 0xe96a, 0x49d7, 0xe96b, 0xe90a, 0xe96c, 0x68f2, + 0xe96e, 0x68f0, 0xe96d, 0xe8ef, 0x68ee, 0xe96e, 0xe974, 0xe99d, + 0xe972, 0xe971, 0xe970, 0xe973, 0xe97a, 0xe978, 0x6920, 0xe97c, + 0x645c, 0x695f, 0xe977, 0x217b, 0x4faa, 0xe8ec, 0xe975, 0xe95c, + 0xe979, 0xe97b, 0xe8e1, 0xe97d, 0x6927, 0xe981, 0xe97f, 0xe982, + 0xe97e, 0x1f59, 0xe980, 0xd0b4, 0xe984, 0xe983, 0xe96f, 0xe18a, + 0x6905, 0xe97c, 0xe985, 0x2582, 0x6912, 0x6935, 0xe981, 0x5218, + 0xe986, 0xccca, 0xccc7, 0xe967, 0xe959, 0x2582, 0xe927, 0xe989, + 0xe987, 0xe967, 0xe98e, 0xccd5, 0xe969, 0xe988, 0xe98f, 0xe98a, + 0xe98c, 0xe98d, 0xe992, 0xe990, 0xe991, 0xe993, 0xe988, 0xe994, + 0xd1b3, 0xcce6, 0xe965, 0xe976, 0xe8e8, 0xe934, 0xe90d, 0xe98b, + 0x645c, 0x6909, 0xe977, 0xe995, 0x25b0, 0x68df, 0xe8e0, 0xe8e3, + 0x68e2, 0xe951, 0xe8e5, 0x6933, 0xe939, 0xe8e9, 0xe93c, 0xe8ea, + 0xe8eb, 0xe8ed, 0xe8ef, 0x68ee, 0xe8f2, 0xe91e, 0xe8fe, 0xe8fd, + 0xe8fc, 0xe8ff, 0xe8f4, 0xe90c, 0xe952, 0x6909, 0xe95f, 0xe904, + 0xe90e, 0xe903, 0xe90f, 0x6905, 0xe920, 0xe911, 0xe916, 0xe913, + 0x1f59, 0xe918, 0x6912, 0xe927, 0xe915, 0xe91c, 0xe91b, 0xe921, + 0xe928, 0xe937, 0x693d, 0xe94b, 0xe936, 0xe93f, 0xe95e, 0xe941, + 0xe943, 0xe93a, 0xe93e, 0xe948, 0xe949, 0xe945, 0xe94a, 0xe94c, + 0xe962, 0xe8f6, 0xe99f, 0xe99e, 0xea6c, 0xea6d, 0xa1af, 0x69c4, + 0xea6e, 0xea5d, 0xea70, 0xea6f, 0xea72, 0xce36, 0x6a62, 0xea74, + 0xea73, 0x69b1, 0xea6e, 0x6a5b, 0xea7f, 0x357a, 0x69c8, 0x6a45, + 0xea71, 0x357a, 0x69c6, 0x6a45, 0xea71, 0xea7b, 0xea7d, 0xea79, + 0xea75, 0xea7e, 0xea80, 0xea78, 0xea76, 0x69de, 0xea7c, 0x69dd, + 0xea7c, 0xea77, 0x208c, 0x4f75, 0xea82, 0xea88, 0xea87, 0xea73, + 0xea83, 0xea86, 0x6a2e, 0xea51, 0xea8e, 0xea8f, 0xea8b, 0xea8d, + 0xea93, 0xea92, 0xea91, 0xea90, 0x6a13, 0x6a57, 0xea8c, 0x6a37, + 0xea9a, 0x6a10, 0x6a57, 0xea8c, 0xea9b, 0xea97, 0xea99, 0xea52, + 0xea9e, 0xea98, 0x69f5, 0x6a51, 0xea9d, 0xd17e, 0xea7a, 0x6a12, + 0xea9a, 0xea9f, 0xea47, 0xeaa1, 0xd4e6, 0xea9c, 0xea96, 0xeaa0, + 0xeaa2, 0x357a, 0x69c6, 0x69c8, 0xea71, 0xea3a, 0xea85, 0xea95, + 0xea81, 0xeaa3, 0x69f5, 0x6a2e, 0xea9d, 0xea28, 0xea84, 0x6a10, + 0x6a13, 0xea8c, 0xb0ca, 0x69c5, 0xea7f, 0xe9b2, 0xeaa4, 0x69bf, + 0xea74, 0xeaa7, 0x560e, 0xeaa5, 0xeaa6, 0xbb22, 0xea8a, 0xea89, + 0xe9ac, 0xe9ad, 0x69b1, 0xe9c4, 0xe9b4, 0xe9b3, 0x357a, 0x69c6, + 0x69c8, 0xea45, 0xe9b9, 0x69c1, 0xe9ee, 0x69bf, 0xea62, 0xe9d4, + 0xe9db, 0xe9df, 0xe9d9, 0xe9d2, 0xea36, 0xe9d0, 0x69dd, 0xe9de, + 0xe9d1, 0xe9d5, 0x69c5, 0xea5b, 0xe9d8, 0xea4d, 0x208c, 0x4f75, + 0xe9e1, 0xe9f0, 0xea55, 0xea4a, 0xe9f1, 0xe9ed, 0xe9e2, 0xea6b, + 0xea6a, 0xea01, 0x6a10, 0x6a13, 0xea57, 0xea02, 0xe9f8, 0xe9ff, + 0xea0f, 0xea0e, 0xea0d, 0xea05, 0xea4c, 0xea42, 0xea19, 0x66b2, + 0xea2d, 0xea24, 0x6a12, 0xea37, 0xea16, 0xea41, 0x6a2e, 0xea51, + 0xea2b, 0xea38, 0xea43, 0xea3e, 0xea44, 0xea4f, 0xea5f, 0x560e, + 0xea65, 0xea66, 0xea64, 0xd0ae, 0x1f53, 0x5eb0, 0x5ec6, 0xead4, + 0xeca0, 0x51b8, 0xead3, 0xeacf, 0xd180, 0xead6, 0xead5, 0xeac5, + 0xd10f, 0x51b8, 0xeac4, 0x1f53, 0x5eb0, 0x5ec6, 0xeab5, 0x51cf, + 0xeacc, 0xeacb, 0x6871, 0x6885, 0xee15, 0xead9, 0xead8, 0x1eff, + 0xaf77, 0xeaf9, 0xeaef, 0x6b02, 0xeb22, 0x23d1, 0xeaee, 0xe83e, + 0x23d1, 0xeaea, 0xeae5, 0x1f5b, 0xaf7f, 0xeae4, 0xa243, 0x6ae9, + 0x6b13, 0xeb22, 0xb77e, 0xd0e1, 0x6b02, 0xeb22, 0xe87b, 0xeb23, + 0x6ae9, 0x6b02, 0xeb13, 0xeb1b, 0x3597, 0x65d8, 0x6b26, 0x6b2a, + 0xeb2d, 0x3597, 0x65d8, 0x6b25, 0x6b2a, 0xeb2d, 0x6599, 0xe5f9, + 0xa4c4, 0xe60b, 0x3597, 0x65d8, 0x6b25, 0x6b26, 0xeb2d, 0xe61a, + 0x3597, 0x65d8, 0x6b25, 0x6b26, 0xeb2a, 0xe604, 0x3b1d, 0x60c1, + 0xeb31, 0x3b1d, 0x60c1, 0xeb30, 0xeb39, 0xeb36, 0x1ffc, 0xcca5, + 0xac2c, 0xeb58, 0xeb4e, 0x573d, 0xeb49, 0x21f2, 0x2c32, 0x2c34, + 0x2c36, 0xac37, 0x1e11, 0xe19c, 0xeb47, 0xec7c, 0xec7d, 0xec7e, + 0xec6e, 0xebbb, 0xec80, 0xeeff, 0xec81, 0x6c78, 0xec88, 0xec24, + 0xec82, 0xec7f, 0xec84, 0xec85, 0xec86, 0x6bdb, 0xecb7, 0xec8c, + 0xec89, 0xec8f, 0xec87, 0xebf9, 0xec90, 0xec8d, 0xec8b, 0xec8a, + 0xec92, 0xec98, 0x6bd7, 0x6c76, 0xec9e, 0xec95, 0xec96, 0x6bb7, + 0xebf7, 0xec94, 0xec9b, 0xec91, 0x2c1f, 0x2c20, 0x5d7b, 0x6c7b, + 0xec9c, 0xec93, 0xecaa, 0x6ba7, 0xebf7, 0xec9d, 0xeb66, 0xebd8, + 0xeca7, 0xeca0, 0x6c00, 0xeca9, 0xeca4, 0x6bcb, 0xeca8, 0xebca, + 0xecac, 0xecbb, 0xecaf, 0xecad, 0x6b9d, 0xec76, 0xebbe, 0x6b89, + 0xecb7, 0xecb4, 0xecb1, 0xecb5, 0xecb2, 0xecb3, 0xecb8, 0xecae, + 0xecb0, 0xecb6, 0xecba, 0xec3a, 0x6ba7, 0x6bb7, 0xecc0, 0xeb8f, + 0xecab, 0xecca, 0x6bc7, 0xeca9, 0xecc8, 0xec97, 0xecc2, 0x6c28, + 0xecbd, 0xecc7, 0x6c0d, 0xecc5, 0x6c0c, 0xecc5, 0xecbe, 0x6c77, + 0xecc4, 0xecc6, 0xecc3, 0x6c2e, 0xecc1, 0xecd2, 0xecd1, 0xeccb, + 0xeca5, 0xeb73, 0x6c5e, 0xeccf, 0x6c08, 0xecce, 0xecd0, 0xeccd, + 0xec1b, 0xeca2, 0x6ccc, 0xef07, 0xecd3, 0xecd8, 0xeca6, 0xeca3, + 0x6bf5, 0xecb9, 0xecd7, 0xecdb, 0xecd4, 0xecc9, 0xecd9, 0xecd5, + 0x6cd6, 0x6f08, 0xef9e, 0xecdf, 0xecdd, 0xecdd, 0xecdc, 0xecde, + 0xec9f, 0xecbc, 0xec25, 0xec8e, 0xec99, 0xece3, 0xece1, 0xece2, + 0xecbf, 0xec9a, 0xeb63, 0xece0, 0x6b9d, 0x6bd7, 0xec9e, 0x6c10, + 0xecc4, 0x6b72, 0xec88, 0xeca1, 0x2c1f, 0x2c20, 0x5d7b, 0x6bae, + 0xec9c, 0xeb5a, 0xeb5b, 0xeb62, 0xeb77, 0xeb68, 0xeb6f, 0xeb74, + 0xeb7a, 0xeb81, 0xeb83, 0xeb8e, 0x6b72, 0xec78, 0xeb8b, 0xeb93, + 0xeb92, 0xeb8a, 0x56ab, 0xeb91, 0xec5f, 0xeb8d, 0xeb90, 0xebad, + 0xeb9a, 0xebb3, 0xebaa, 0xeb9e, 0xeba6, 0xec02, 0xeb9c, 0xec60, + 0xec6d, 0xebab, 0x2c1f, 0x2c20, 0x5d7b, 0x6bae, 0xec7b, 0xebba, + 0x6b9d, 0xec76, 0xec58, 0x6abe, 0xebc1, 0xec7a, 0xec31, 0xec39, + 0xebc9, 0xec23, 0xec37, 0xebc0, 0xebca, 0x6bc7, 0xec00, 0xebb6, + 0xebfd, 0xebd2, 0xebd6, 0xebea, 0xebd5, 0xebeb, 0xebe1, 0xebe4, + 0xebe7, 0xebdd, 0xebe2, 0xebf0, 0x6b89, 0xebdb, 0xebe8, 0xec3a, + 0xebf4, 0xebd4, 0xec5d, 0xec08, 0xec0f, 0xec68, 0xebf7, 0xec1b, + 0xec03, 0xec13, 0x6c10, 0xec77, 0x6c0c, 0xec0d, 0xec12, 0xec09, + 0xec01, 0xec42, 0xebff, 0xec20, 0x6c32, 0xef07, 0xec2d, 0xec28, + 0xec25, 0xec29, 0xec1f, 0xec1c, 0xec33, 0xec3e, 0x51a4, 0xec48, + 0x6c49, 0xef08, 0xec3b, 0xec35, 0xec45, 0xec3c, 0xec56, 0x6c53, + 0xec54, 0xec57, 0xec52, 0xec6f, 0xec64, 0xec67, 0xec63, 0x2c4c, + 0xee1f, 0x21eb, 0xecec, 0xee20, 0x66c1, 0xed08, 0xece7, 0xee24, + 0xa1e4, 0xee23, 0xee22, 0xe6c7, 0xee29, 0xee28, 0x66c1, 0xeceb, + 0x6d76, 0xee26, 0x6dd7, 0xee25, 0xee30, 0xee35, 0xee33, 0x6e1c, + 0xee32, 0xee2e, 0x6d44, 0xee31, 0xee2a, 0xee2f, 0xee2d, 0x53ba, + 0xedaf, 0xee38, 0xee39, 0xedc3, 0xee3b, 0xee3f, 0xedfa, 0xee3d, + 0xee3a, 0xee3c, 0xed1f, 0xee40, 0xee43, 0xee46, 0xee41, 0xedaa, + 0xee48, 0x6d5e, 0xee45, 0x6d5d, 0xee45, 0xee44, 0xee49, 0xee4c, + 0xee4f, 0xee50, 0xee4e, 0xe6d5, 0xee4a, 0x6d09, 0xee26, 0xee53, + 0x6da4, 0xee4d, 0x6dab, 0xee2b, 0xee51, 0xee52, 0x66de, 0x6dc4, + 0xee21, 0xee4b, 0xee59, 0xee55, 0xee57, 0xee56, 0xed7e, 0xee5b, + 0xee5c, 0xed59, 0x6d87, 0xee2b, 0xee27, 0x53ba, 0xed2c, 0xee5f, + 0x2bc9, 0x66ba, 0x674d, 0x674e, 0x674f, 0x6e16, 0xee64, 0xe6db, + 0xee60, 0xee61, 0xee58, 0xee63, 0xee5a, 0xee5a, 0xee62, 0xee5e, + 0xed33, 0x66de, 0x6d8f, 0xee21, 0xedcf, 0xedc9, 0xedc8, 0xee5d, + 0xedc6, 0xee67, 0xee65, 0x6d0e, 0xee25, 0xee37, 0xee68, 0xee36, + 0xee6a, 0xee54, 0xee69, 0xc1d5, 0xee6b, 0x6df4, 0xee47, 0x6df3, + 0xee47, 0xee6c, 0xee70, 0x6d3c, 0xee6d, 0xee34, 0xee0a, 0xee6f, + 0xedff, 0xee71, 0xd3ba, 0xee72, 0x6871, 0x6ad7, 0xee2c, 0x2bc9, + 0x66ba, 0x674d, 0x674e, 0x674f, 0x6db4, 0xee64, 0xee74, 0xee66, + 0x66da, 0xee73, 0xed1d, 0xee42, 0xee3e, 0x2c4c, 0xece5, 0xece9, + 0x66de, 0x6d8f, 0xedc4, 0xecf6, 0xecf4, 0xecf2, 0x6d0e, 0xedd7, + 0x6d09, 0xed76, 0xedac, 0xed07, 0xed06, 0xed23, 0x6d87, 0xedab, + 0xee15, 0xed28, 0xed1e, 0xed26, 0xed12, 0xed1f, 0xed1d, 0xed1b, + 0xedfd, 0xed15, 0xede5, 0xedd9, 0xed2f, 0xed30, 0xed42, 0xed34, + 0xed43, 0xed3f, 0xee1e, 0xed3b, 0xed50, 0xed53, 0xee1d, 0xed51, + 0xed60, 0x6d5d, 0xed5e, 0xed52, 0x6df3, 0xedf4, 0xed5c, 0xed61, + 0xed72, 0xed93, 0xed6a, 0xed7e, 0xed6f, 0xed6c, 0xed6e, 0xed89, + 0xed8a, 0xed77, 0xedeb, 0xed98, 0xeda1, 0xed9a, 0xedbb, 0xed96, + 0x6dbf, 0xedc0, 0xeda5, 0xeda9, 0xedca, 0xedc2, 0xedb2, 0xedb9, + 0xedba, 0xedc1, 0xedbc, 0x2bc9, 0x66ba, 0x674d, 0x674e, 0x674f, + 0x6db4, 0xee16, 0xedd6, 0xee1a, 0xedd3, 0xedda, 0xedef, 0xede6, + 0xedf2, 0xedf8, 0xedfa, 0xee07, 0xedf9, 0xee0c, 0xee0f, 0xee1b, + 0xee18, 0x2364, 0xa877, 0x4877, 0x48b1, 0xee7c, 0x24b8, 0xe18e, + 0xee7e, 0xc877, 0x4877, 0x48b1, 0xee78, 0x2869, 0xc6d0, 0xee7a, + 0xee85, 0xeea4, 0xee83, 0xee8f, 0xee87, 0x1e3d, 0xaa6f, 0xc350, + 0x4c97, 0xee84, 0xeea6, 0xeea5, 0x6eac, 0xeeb8, 0x4cc6, 0x6762, + 0x6eab, 0x6eb5, 0xeeba, 0x4cc6, 0x6762, 0x6eaa, 0x6eb5, 0xeeba, + 0x6ea9, 0xeeb8, 0xa305, 0x36f2, 0x4cac, 0x6eb4, 0xeeb9, 0x36f2, + 0x4cac, 0x6eaf, 0xeeb9, 0x4cc6, 0x6762, 0x6eaa, 0x6eab, 0xeeba, + 0x6ea9, 0xeeac, 0x36f2, 0x4cac, 0x6eaf, 0xeeb4, 0x4cc6, 0x6762, + 0x6eaa, 0x6eab, 0xeeb5, 0x45f2, 0x45f3, 0xd534, 0x1e48, 0x2c1b, + 0x2e85, 0xeebd, 0x1e48, 0x2c1b, 0x2e85, 0xeebc, 0xeec4, 0x48fa, + 0xeec3, 0xeecc, 0xeec9, 0xcc98, 0xeed2, 0xeed1, 0xeed9, 0xeed8, + 0xeef1, 0x294c, 0xc0b9, 0xeef6, 0xeeed, 0xa15a, 0xeef7, 0xeef2, + 0xeee4, 0xeedb, 0xeeea, 0xe709, 0xeee1, 0xeee9, 0xd8ae, 0xeefe, + 0xeefd, 0x6b6d, 0xef0b, 0xef0c, 0xd6d9, 0x6c32, 0xeccc, 0x6c49, + 0x6cd6, 0xef9e, 0xef0d, 0xeeff, 0xef02, 0xef09, 0xef11, 0xef0e, + 0xe3a1, 0x46b7, 0xc6bc, 0xa1ac, 0x6780, 0xe789, 0xef21, 0xef20, + 0xdc82, 0xef39, 0xef34, 0xa5c5, 0x1e9d, 0x3589, 0x358a, 0xef50, + 0x358b, 0xb58e, 0x5cf7, 0xdd4d, 0x67f2, 0xef51, 0x1e9d, 0x3589, + 0x358a, 0xef4a, 0x67f2, 0xef4f, 0x3b6f, 0xef7f, 0xef54, 0x6f53, + 0xef80, 0xef81, 0xef82, 0xef85, 0xef70, 0xef87, 0xef83, 0xef86, + 0x6f62, 0xef84, 0x6f61, 0xef84, 0xa1fa, 0xef88, 0x256e, 0x2699, + 0xa6d3, 0xa4ac, 0x6f71, 0xef8a, 0xef89, 0xef5a, 0xef6a, 0xef8b, + 0xd16d, 0xef8c, 0x3b6f, 0xef52, 0xef54, 0xef55, 0xef57, 0xef5f, + 0x6f61, 0xef62, 0xef59, 0xef60, 0xef5c, 0xef66, 0xef6c, 0xef6a, + 0xef72, 0xef77, 0x4adc, 0x6f92, 0xef99, 0xa390, 0xae9e, 0x4adc, + 0x6f8d, 0xef99, 0xef9a, 0xef9b, 0x6f8d, 0xef92, 0xef94, 0xef95, + 0x1e80, 0xef9f, 0x49cb, 0x49cc, 0xca50, 0x6c49, 0xef08, 0x1e80, + 0xef9c, 0x248a, 0x248c, 0xb0d2, 0x2401, 0xcc72, +}; + +static const short cjk_variants_indx[0x5200] = { + /* 0x4e00 */ + 4, -1, -1, -1, 5, 6, -1, 7, + -1, 8, 10, 11, 12, -1, 13, -1, + 14, 16, 19, 20, -1, -1, 22, 24, + 26, -1, 28, 29, 33, 34, -1, 36, + 38, 40, 42, 44, 45, 47, 49, 52, + -1, -1, 53, 56, 59, -1, -1, -1, + 60, -1, 66, 67, 68, -1, -1, -1, + -1, -1, 69, -1, -1, 71, 73, -1, + -1, 76, 77, 79, 81, 83, 85, -1, + 87, 92, -1, -1, 93, -1, -1, -1, + 94, 96, -1, -1, 100, 101, -1, 103, + 105, -1, 107, -1, -1, -1, -1, -1, + 110, 111, -1, -1, -1, -1, 115, -1, + 116, -1, -1, -1, -1, -1, -1, -1, + 118, 119, -1, -1, -1, -1, -1, -1, + -1, 121, -1, -1, -1, -1, 124, -1, + 128, 130, 133, -1, -1, -1, 135, -1, + 137, 138, 139, 141, 143, -1, 144, 147, + 151, 153, -1, -1, 155, -1, 156, 157, + 161, 162, 163, -1, 165, 167, 171, 173, + -1, 174, -1, -1, -1, -1, -1, 176, + -1, 178, -1, 182, 183, -1, -1, 184, + 185, 186, 187, -1, -1, 188, -1, -1, + 189, -1, 190, 191, -1, -1, 192, 194, + -1, 195, 196, -1, -1, 199, 201, 202, + -1, 203, -1, -1, 204, -1, 207, 209, + 210, 212, -1, 215, -1, -1, -1, -1, + 217, 218, -1, -1, -1, 220, 221, -1, + -1, -1, 222, -1, -1, -1, -1, 223, + -1, -1, 227, -1, 228, 229, 230, -1, + -1, -1, -1, -1, -1, -1, -1, 232, + -1, -1, 234, -1, 236, 237, 239, 240, + /* 0x4f00 */ + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 245, -1, -1, -1, -1, -1, 247, 248, + 251, 252, 253, 254, 255, 256, 259, 262, + 263, 265, -1, 266, 267, 268, 269, 270, + -1, -1, 271, 273, -1, -1, 275, -1, + -1, 276, 279, -1, -1, 282, -1, 283, + -1, -1, -1, -1, 284, -1, -1, -1, + 285, -1, 286, -1, -1, -1, -1, 287, + 288, -1, -1, -1, -1, -1, 289, -1, + -1, -1, -1, 290, 295, -1, -1, -1, + -1, 296, -1, 298, 301, -1, 302, -1, + 303, -1, -1, 307, -1, 308, -1, -1, + -1, -1, 309, -1, -1, -1, -1, -1, + -1, 310, -1, -1, -1, 312, -1, 314, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 315, 316, -1, 318, -1, + -1, -1, -1, -1, 319, -1, 323, -1, + 324, -1, -1, -1, -1, -1, 325, -1, + -1, -1, -1, -1, -1, -1, -1, 326, + 328, 329, -1, 331, -1, 332, 333, 335, + 336, 337, 338, 339, 340, 341, -1, 343, + -1, -1, -1, -1, -1, -1, 344, 345, + -1, -1, -1, -1, -1, 346, -1, -1, + -1, 347, 348, -1, -1, -1, -1, 349, + -1, -1, 350, -1, 351, -1, 352, -1, + -1, -1, -1, -1, 353, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 355, 356, + 357, 358, 359, 360, -1, 361, 362, -1, + 363, 364, 365, 366, -1, 367, 369, -1, + -1, 371, 372, -1, -1, -1, -1, -1, + -1, -1, -1, 374, 378, 380, -1, -1, + /* 0x5000 */ + 382, -1, 383, 385, -1, 388, 389, -1, + 390, 391, 393, 394, -1, -1, 397, 398, + 399, 400, -1, -1, -1, -1, 401, -1, + -1, -1, -1, -1, -1, -1, 402, 403, + -1, -1, -1, 405, 407, -1, 408, -1, + -1, -1, -1, 410, -1, -1, -1, -1, + -1, -1, -1, 411, -1, -1, 412, -1, + -1, 413, 415, -1, 416, -1, 417, -1, + 418, -1, -1, -1, -1, -1, 419, 420, + -1, 421, -1, -1, -1, -1, -1, -1, + 422, -1, -1, -1, -1, -1, -1, -1, + 425, 426, 427, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 428, -1, -1, + -1, -1, 429, -1, 430, -1, -1, -1, + -1, -1, -1, -1, 432, 433, -1, 435, + 436, 437, 441, 444, -1, 445, 447, 448, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 449, 452, -1, -1, + -1, 453, -1, -1, -1, -1, 454, -1, + 455, 458, 462, -1, 464, -1, -1, -1, + 465, 467, 470, -1, 471, 472, -1, 473, + 474, 475, -1, -1, -1, 476, -1, 477, + -1, -1, -1, 478, 480, 481, -1, 482, + -1, 483, -1, -1, -1, -1, 484, -1, + 485, -1, 486, 487, 491, 492, -1, -1, + -1, 493, 494, -1, -1, 495, -1, -1, + -1, 498, -1, -1, -1, 499, -1, -1, + 500, -1, -1, -1, 501, -1, 502, 504, + -1, -1, -1, 505, -1, 506, -1, -1, + 507, 508, -1, 509, -1, 512, -1, -1, + -1, 513, 514, -1, 515, -1, -1, -1, + -1, 516, -1, -1, -1, -1, -1, -1, + /* 0x5100 */ + 518, 519, 520, -1, 521, -1, -1, -1, + 522, 523, -1, -1, -1, -1, 525, -1, + 526, -1, -1, -1, 527, 528, -1, -1, + 529, -1, -1, -1, -1, -1, 531, 534, + -1, -1, -1, -1, -1, -1, -1, 535, + -1, -1, 536, -1, -1, -1, -1, -1, + -1, -1, 537, -1, -1, -1, -1, 538, + -1, 539, 540, 541, 542, -1, -1, 543, + -1, -1, 545, -1, -1, -1, -1, 546, + -1, 547, 549, 551, 554, -1, 556, 557, + 561, 563, 565, -1, 567, -1, 568, 569, + 570, -1, 572, -1, 573, -1, -1, -1, + 574, -1, -1, -1, 575, -1, 576, 578, + -1, 579, 581, -1, -1, -1, -1, -1, + 582, -1, 583, 586, 591, -1, 592, -1, + -1, 593, -1, 595, -1, 597, 599, -1, + 600, 601, 602, 603, 604, 605, 606, -1, + 609, 610, 611, 613, 614, -1, 616, 618, + 619, 620, 621, -1, -1, -1, -1, 622, + -1, 623, -1, 625, 626, 627, -1, -1, + -1, -1, 629, 630, 631, -1, 632, -1, + 634, 635, 637, 639, 642, -1, -1, 644, + 645, 648, 649, 651, 652, 653, -1, -1, + -1, -1, 654, 655, -1, 656, -1, -1, + 657, -1, 659, 660, 661, 664, 665, -1, + 667, 668, -1, -1, -1, 669, -1, 670, + -1, 671, 672, 673, -1, -1, 674, -1, + -1, -1, -1, 676, 678, -1, 680, -1, + 684, 686, 688, 690, 692, 693, 694, -1, + 696, -1, -1, 701, 702, 707, 710, 715, + -1, 716, 717, 722, 723, -1, 726, 727, + -1, -1, 730, 732, -1, 734, 735, 736, + /* 0x5200 */ + 737, -1, 739, 741, 742, 743, -1, -1, + 745, -1, 747, -1, -1, 748, -1, -1, + -1, -1, 749, 752, 753, -1, -1, -1, + 754, 755, 756, 757, -1, -1, -1, -1, + 762, -1, -1, -1, -1, 763, 764, 767, + 770, -1, 773, 774, 776, 780, 781, -1, + -1, 782, -1, -1, 786, -1, 787, -1, + -1, 788, 789, -1, 790, 793, 794, 795, + 796, 797, 798, 800, 801, -1, -1, 802, + -1, -1, -1, 803, 806, 807, 808, 809, + 813, 815, -1, -1, -1, -1, -1, 823, + -1, 827, 831, 832, -1, 833, -1, -1, + -1, -1, -1, 834, 842, 844, 845, 847, + -1, 848, -1, -1, -1, -1, 849, -1, + 852, 853, -1, 861, 862, 863, -1, 868, + -1, 872, -1, -1, -1, -1, -1, 873, + -1, -1, -1, 874, 877, -1, -1, 878, + -1, 879, 880, -1, 881, 882, 890, -1, + 898, 901, 903, -1, 911, 919, -1, -1, + -1, -1, -1, -1, -1, 921, 923, 924, + -1, 926, 927, -1, -1, -1, -1, -1, + 928, -1, 931, 932, -1, -1, -1, -1, + -1, 935, 936, 937, 940, 943, -1, -1, + -1, 945, -1, -1, -1, -1, -1, 946, + -1, 947, -1, -1, 948, 949, -1, 951, + 952, -1, 953, 956, 959, -1, -1, -1, + -1, 961, -1, -1, -1, 965, 968, 970, + -1, 972, 973, 974, -1, 977, 978, -1, + 981, -1, 982, -1, 983, -1, 984, 985, + -1, 987, -1, -1, -1, -1, -1, -1, + -1, 988, 989, 992, -1, 995, -1, -1, + 996, -1, -1, 998, -1, -1, -1, -1, + /* 0x5300 */ + 999, -1, -1, 1000, 1002, 1004, 1005, -1, + -1, -1, 1008, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 1009, -1, 1011, 1012, -1, 1014, 1016, -1, + 1017, 1018, -1, -1, -1, -1, 1019, 1020, + 1021, 1023, -1, -1, -1, 1024, 1025, 1026, + -1, 1028, 1029, 1032, -1, -1, -1, -1, + 1035, -1, 1036, 1037, -1, -1, -1, -1, + 1039, -1, -1, 1040, -1, -1, 1041, 1042, + -1, 1046, -1, 1047, -1, 1049, 1050, 1053, + 1056, -1, 1057, 1058, 1060, 1063, 1065, -1, + 1067, -1, 1069, 1070, 1071, -1, -1, -1, + 1073, -1, 1074, -1, 1075, 1082, -1, 1084, + -1, -1, -1, 1085, -1, -1, 1087, 1088, + 1090, -1, -1, 1091, 1093, -1, -1, 1094, + 1096, 1097, -1, 1099, -1, 1100, -1, -1, + -1, -1, 1102, -1, 1105, 1106, 1108, 1114, + 1115, 1116, -1, 1117, 1119, 1120, 1121, -1, + 1122, -1, -1, 1123, -1, 1124, -1, -1, + 1126, 1130, 1131, 1132, -1, -1, -1, 1133, + 1134, 1136, 1137, 1138, 1139, -1, 1141, -1, + 1142, 1143, -1, -1, -1, 1145, 1146, 1147, + 1152, -1, 1154, 1155, 1157, 1158, 1159, 1160, + 1161, -1, 1164, 1165, -1, -1, 1166, 1168, + -1, 1170, 1172, 1175, 1178, 1181, 1184, 1185, + 1186, 1187, 1188, -1, 1189, 1190, 1193, 1194, + 1195, 1196, -1, 1200, -1, 1202, -1, -1, + 1203, 1205, -1, 1207, -1, -1, 1209, -1, + 1210, 1214, 1216, -1, -1, -1, -1, 1220, + -1, -1, 1223, 1226, -1, -1, -1, -1, + 1227, -1, -1, -1, -1, -1, 1232, 1236, + -1, 1237, -1, -1, -1, 1240, -1, -1, + /* 0x5400 */ + 1241, 1243, -1, 1245, -1, -1, -1, -1, + 1247, -1, 1248, -1, 1249, -1, 1251, -1, + -1, 1252, -1, 1254, -1, 1255, -1, 1256, + -1, -1, -1, -1, -1, 1257, 1258, 1259, + -1, -1, -1, -1, -1, -1, -1, -1, + 1262, -1, -1, -1, 1263, -1, -1, 1265, + -1, -1, -1, 1271, 1273, -1, 1275, -1, + -1, -1, -1, 1276, -1, 1277, -1, 1278, + -1, -1, 1279, -1, -1, -1, -1, -1, + 1280, 1282, 1284, -1, 1285, 1286, -1, -1, + 1287, 1288, 1289, 1290, -1, 1291, 1292, 1293, + 1294, 1297, 1299, 1300, 1301, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1302, + 1303, 1304, 1305, -1, -1, 1307, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1308, -1, -1, -1, + -1, -1, -1, -1, -1, 1311, -1, -1, + -1, -1, 1312, -1, 1315, -1, -1, 1318, + -1, -1, 1319, -1, -1, -1, -1, -1, + -1, 1321, -1, 1322, 1323, 1324, -1, -1, + -1, -1, -1, -1, 1325, -1, -1, -1, + -1, 1326, -1, -1, 1328, -1, -1, 1329, + -1, 1331, 1334, -1, -1, -1, -1, -1, + 1336, -1, -1, -1, 1338, 1340, -1, -1, + -1, -1, -1, -1, 1341, -1, -1, -1, + -1, -1, -1, -1, -1, 1343, -1, -1, + -1, 1344, 1348, 1349, 1350, 1351, -1, 1352, + -1, 1354, -1, -1, 1355, 1356, -1, 1357, + -1, 1358, -1, 1361, -1, -1, -1, -1, + -1, -1, -1, -1, 1362, -1, -1, -1, + -1, -1, 1363, -1, -1, -1, 1368, -1, + -1, -1, 1370, -1, -1, -1, -1, -1, + /* 0x5500 */ + 1371, -1, -1, -1, 1373, -1, -1, 1374, + -1, -1, -1, -1, -1, 1375, -1, -1, + 1376, -1, -1, -1, -1, 1377, 1378, -1, + 1382, -1, -1, 1388, -1, 1389, -1, -1, + 1390, -1, 1391, 1392, 1393, -1, -1, 1394, + -1, -1, -1, 1395, -1, -1, -1, -1, + -1, 1396, -1, -1, -1, -1, -1, -1, + 1397, -1, -1, -1, -1, -1, -1, -1, + 1398, -1, -1, -1, -1, -1, 1399, -1, + -1, -1, -1, -1, -1, -1, -1, 1400, + -1, -1, -1, 1401, 1407, -1, 1413, 1414, + -1, -1, -1, -1, -1, -1, 1415, 1419, + 1425, -1, -1, 1430, -1, -1, -1, 1433, + -1, -1, -1, -1, 1434, 1435, 1436, 1440, + 1441, -1, -1, -1, 1443, -1, -1, -1, + 1444, -1, 1445, -1, -1, -1, -1, -1, + 1446, -1, 1448, -1, 1450, -1, 1451, -1, + -1, -1, -1, -1, -1, -1, 1456, -1, + -1, 1458, 1460, -1, -1, -1, -1, -1, + -1, -1, 1463, -1, 1464, -1, 1467, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1468, 1469, 1470, 1472, -1, 1473, 1475, + 1477, -1, 1480, -1, -1, -1, 1481, 1483, + -1, -1, -1, 1485, -1, 1486, 1487, -1, + -1, -1, -1, -1, -1, 1488, 1489, 1490, + -1, -1, 1491, -1, -1, -1, 1492, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1493, -1, 1494, -1, -1, -1, + 1495, -1, -1, 1496, -1, 1497, -1, -1, + -1, 1498, -1, 1499, -1, -1, -1, -1, + -1, -1, -1, 1500, -1, -1, 1501, -1, + -1, 1502, -1, -1, -1, -1, -1, -1, + /* 0x5600 */ + -1, -1, -1, -1, -1, -1, 1503, -1, + -1, -1, 1505, -1, -1, 1506, -1, -1, + -1, 1507, -1, 1509, 1510, -1, 1511, 1512, + 1515, -1, -1, -1, 1516, -1, -1, -1, + -1, -1, -1, -1, 1517, -1, -1, -1, + 1518, 1519, -1, -1, -1, -1, 1521, 1522, + 1524, 1525, -1, -1, -1, 1526, -1, 1527, + 1528, -1, -1, -1, -1, 1529, -1, -1, + -1, 1530, 1531, -1, 1532, 1534, -1, -1, + -1, 1535, -1, -1, -1, -1, -1, -1, + 1537, -1, -1, 1538, -1, 1539, 1540, -1, + -1, -1, -1, 1542, 1544, 1545, -1, -1, + 1546, 1547, -1, -1, -1, 1548, 1549, -1, + 1550, -1, 1551, -1, -1, -1, -1, 1552, + -1, -1, 1553, -1, 1554, 1556, -1, -1, + 1559, 1560, -1, -1, -1, -1, 1561, -1, + 1562, -1, -1, -1, -1, -1, -1, 1563, + -1, -1, -1, -1, 1564, -1, -1, 1565, + 1566, -1, -1, -1, 1569, 1570, -1, -1, + -1, 1571, -1, -1, -1, -1, 1575, -1, + 1580, -1, 1581, 1582, -1, 1583, 1584, -1, + 1585, -1, -1, -1, -1, -1, 1586, -1, + -1, -1, 1587, 1588, 1589, -1, 1591, -1, + -1, -1, -1, 1592, -1, -1, -1, -1, + 1593, 1594, 1595, -1, -1, 1597, -1, -1, + 1598, 1599, 1601, -1, 1602, -1, -1, 1603, + -1, 1604, -1, 1605, -1, -1, -1, 1608, + 1611, 1617, -1, 1618, -1, -1, 1619, 1625, + 1626, -1, 1627, 1630, -1, -1, 1633, 1636, + -1, -1, 1637, -1, 1638, 1644, -1, 1647, + 1652, 1653, 1654, 1657, 1660, 1663, 1664, -1, + 1669, -1, -1, 1670, -1, 1675, 1680, -1, + /* 0x5700 */ + 1683, -1, -1, 1688, -1, -1, 1689, 1692, + 1693, -1, -1, 1694, -1, 1699, 1702, 1705, + -1, 1706, 1707, 1709, -1, -1, 1712, 1715, + 1718, -1, -1, -1, -1, 1720, -1, 1722, + -1, 1723, 1724, 1726, -1, -1, -1, 1727, + 1729, -1, -1, -1, 1730, 1731, -1, -1, + 1732, -1, -1, -1, -1, -1, -1, -1, + -1, 1735, 1736, -1, -1, 1738, -1, -1, + 1742, -1, 1743, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1745, + 1749, 1750, -1, 1751, 1752, -1, -1, 1755, + -1, 1758, 1759, 1760, 1766, 1767, 1769, 1771, + 1773, -1, -1, 1775, 1776, -1, 1777, 1778, + 1779, -1, -1, -1, -1, 1781, 1782, 1784, + 1786, -1, -1, 1787, -1, 1788, -1, -1, + 1790, -1, 1791, -1, -1, -1, -1, -1, + -1, -1, 1792, -1, 1793, 1794, 1795, 1796, + -1, -1, -1, 1797, -1, -1, -1, -1, + -1, -1, 1798, 1800, 1801, 1802, 1803, -1, + -1, -1, 1804, 1807, 1808, -1, -1, -1, + -1, 1809, 1810, -1, -1, -1, 1811, 1812, + 1813, 1814, -1, 1816, -1, 1817, -1, 1818, + -1, 1819, 1820, -1, 1821, -1, -1, -1, + -1, -1, -1, 1822, -1, -1, -1, -1, + 1824, -1, -1, -1, -1, -1, 1825, -1, + 1826, -1, 1827, -1, -1, -1, -1, -1, + -1, 1830, 1835, 1836, -1, -1, -1, -1, + 1837, 1838, 1840, -1, 1841, -1, 1843, -1, + -1, 1845, -1, -1, -1, -1, 1846, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1847, + -1, -1, -1, -1, 1848, 1851, -1, -1, + /* 0x5800 */ + -1, -1, 1852, 1853, -1, 1854, 1855, 1856, + -1, -1, 1857, -1, -1, -1, -1, -1, + -1, 1858, -1, -1, -1, 1859, 1861, -1, + -1, 1862, -1, -1, -1, 1863, -1, -1, + -1, -1, -1, -1, 1864, -1, 1866, -1, + -1, -1, -1, -1, -1, -1, -1, 1868, + 1871, 1873, -1, -1, 1874, -1, -1, -1, + -1, -1, 1876, -1, -1, -1, -1, -1, + -1, 1878, -1, -1, -1, -1, 1880, -1, + -1, -1, 1881, 1884, -1, 1885, -1, 1886, + 1887, 1888, 1889, -1, 1890, -1, -1, 1891, + -1, 1892, 1893, -1, -1, -1, -1, 1894, + -1, 1895, 1896, -1, 1897, -1, 1899, -1, + -1, 1900, -1, 1902, -1, -1, -1, -1, + -1, -1, 1903, -1, -1, 1905, -1, 1906, + -1, 1908, -1, -1, 1910, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1913, 1914, -1, 1915, -1, -1, -1, + -1, -1, -1, -1, -1, 1916, 1918, 1919, + -1, 1920, -1, -1, 1922, -1, 1924, -1, + -1, -1, 1925, -1, 1927, -1, -1, 1930, + -1, -1, -1, -1, -1, -1, 1931, 1933, + 1935, -1, -1, 1940, -1, 1942, 1947, -1, + 1948, -1, -1, 1949, -1, -1, 1950, -1, + -1, -1, -1, -1, 1951, -1, -1, 1953, + -1, -1, 1954, 1956, 1957, 1958, 1959, -1, + 1961, -1, -1, 1962, -1, -1, -1, -1, + 1964, 1966, 1967, -1, 1968, -1, 1973, 1975, + 1976, 1977, 1979, -1, 1980, 1981, -1, -1, + -1, 1984, 1986, -1, -1, -1, 1987, 1989, + 1991, 1992, 1993, 1995, -1, 1997, 1999, 2001, + 2003, 2004, 2005, 2007, 2009, 2010, -1, -1, + /* 0x5900 */ + 2012, -1, 2014, -1, 2015, 2017, -1, 2018, + -1, 2022, 2024, -1, -1, 2025, -1, 2028, + -1, -1, -1, 2029, 2030, -1, -1, -1, + 2031, -1, 2033, 2034, 2035, -1, -1, 2036, + 2037, -1, 2038, 2040, -1, 2042, -1, -1, + -1, 2043, -1, -1, 2046, 2047, -1, -1, + -1, -1, 2048, 2050, 2051, -1, 2052, -1, + 2053, 2054, 2055, -1, -1, -1, 2056, -1, + -1, 2057, 2060, -1, -1, -1, -1, 2061, + 2062, -1, -1, 2063, 2064, -1, -1, -1, + 2065, -1, -1, -1, 2066, -1, 2068, -1, + 2071, 2072, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2073, -1, 2075, + 2077, 2080, 2083, -1, 2084, -1, 2087, -1, + -1, -1, -1, -1, -1, -1, 2088, -1, + 2090, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2092, 2096, + 2098, -1, 2099, -1, -1, 2100, -1, -1, + -1, -1, 2102, -1, -1, -1, 2103, -1, + -1, 2104, -1, 2105, -1, 2106, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2110, 2111, 2112, 2114, -1, -1, -1, + -1, -1, -1, 2115, -1, -1, -1, 2118, + 2120, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2122, -1, + -1, 2123, 2124, 2125, -1, 2127, -1, -1, + 2128, -1, 2129, -1, -1, -1, -1, 2130, + -1, 2131, -1, -1, 2132, -1, -1, -1, + -1, -1, 2133, -1, -1, -1, 2134, 2136, + -1, -1, 2138, 2140, 2141, -1, 2142, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 2143, -1, -1, 2145, -1, -1, -1, -1, + /* 0x5a00 */ + -1, -1, -1, -1, 2146, 2147, 2148, 2149, + 2150, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2151, -1, -1, -1, -1, -1, + 2152, -1, -1, 2154, -1, -1, -1, 2156, + -1, -1, -1, -1, 2157, -1, 2161, -1, + -1, -1, -1, -1, -1, 2162, -1, 2163, + 2165, 2166, 2168, -1, 2169, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2171, + 2173, 2176, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 2177, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2178, -1, -1, 2179, -1, + -1, -1, -1, -1, 2181, 2182, -1, 2183, + -1, -1, -1, 2185, 2186, 2189, 2190, -1, + -1, -1, -1, -1, -1, -1, -1, 2191, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2193, 2195, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2196, + -1, -1, 2197, -1, -1, 2198, -1, 2199, + -1, -1, -1, -1, -1, -1, -1, -1, + 2201, -1, -1, -1, 2202, 2203, -1, 2204, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2206, -1, -1, -1, -1, + 2208, -1, 2209, -1, 2210, -1, -1, 2211, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2212, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2213, -1, -1, -1, 2214, 2215, -1, + -1, -1, 2217, 2219, -1, -1, -1, 2221, + /* 0x5b00 */ + 2222, -1, -1, 2224, -1, -1, -1, -1, + 2225, 2226, -1, 2227, 2228, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2229, -1, -1, -1, 2230, -1, -1, + -1, 2232, 2233, -1, 2235, -1, -1, -1, + -1, -1, 2236, -1, -1, 2238, -1, -1, + 2240, -1, 2243, -1, -1, -1, -1, 2244, + 2245, -1, -1, -1, -1, -1, 2246, -1, + -1, -1, -1, 2247, -1, -1, 2249, -1, + -1, -1, -1, -1, 2252, -1, -1, -1, + -1, -1, 2253, 2254, -1, -1, -1, -1, + -1, 2255, -1, -1, -1, -1, -1, -1, + 2256, -1, -1, -1, -1, -1, 2257, -1, + -1, -1, 2262, 2263, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 2264, -1, -1, -1, 2269, 2270, 2271, 2274, + -1, 2275, 2281, 2282, -1, -1, 2285, -1, + 2286, -1, 2287, -1, -1, 2288, -1, -1, + 2289, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2291, 2293, 2297, 2299, + 2301, 2302, -1, -1, -1, -1, -1, -1, + -1, 2304, 2305, 2306, -1, -1, 2307, -1, + -1, -1, -1, -1, 2308, -1, 2310, 2311, + -1, -1, -1, 2313, 2314, 2316, 2318, -1, + 2320, -1, -1, 2321, -1, -1, 2322, 2323, + 2325, 2327, -1, -1, 2334, 2335, -1, -1, + -1, -1, -1, 2341, -1, 2342, -1, 2348, + -1, -1, 2354, 2358, 2360, 2366, -1, 2367, + 2368, -1, 2370, -1, -1, -1, 2371, 2373, + -1, 2379, -1, 2381, 2383, -1, -1, -1, + -1, -1, -1, 2385, -1, 2389, 2390, -1, + -1, 2394, -1, 2396, 2397, -1, 2398, 2400, + /* 0x5c00 */ + -1, -1, 2402, -1, -1, 2404, 2407, 2408, + 2409, 2411, -1, 2412, -1, 2413, 2415, -1, + -1, -1, 2416, 2419, 2422, -1, -1, -1, + 2425, 2426, 2427, 2428, -1, 2432, 2435, 2436, + 2441, -1, 2446, 2449, 2450, 2452, 2453, 2454, + -1, 2457, -1, 2458, 2459, 2460, -1, -1, + -1, -1, 2463, -1, 2468, -1, 2473, 2478, + 2483, -1, -1, -1, -1, 2484, -1, -1, + 2487, -1, 2489, 2490, -1, 2491, 2492, -1, + -1, -1, 2493, -1, 2494, 2496, 2497, 2498, + -1, -1, -1, 2500, -1, -1, -1, -1, + -1, -1, -1, 2501, -1, -1, 2503, -1, + -1, 2504, 2505, -1, 2506, -1, 2507, -1, + 2508, -1, -1, -1, 2509, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2510, + 2511, 2512, 2516, -1, -1, 2517, -1, -1, + 2519, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2520, 2521, + 2522, -1, 2523, 2524, -1, -1, -1, -1, + -1, 2531, -1, -1, -1, -1, -1, -1, + -1, 2532, -1, -1, -1, 2538, -1, -1, + -1, -1, -1, 2539, 2540, -1, -1, -1, + -1, -1, -1, -1, -1, 2541, -1, 2542, + -1, -1, -1, 2543, 2544, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2545, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2546, -1, -1, + -1, 2547, -1, 2548, 2549, 2550, 2551, -1, + 2552, 2553, -1, -1, -1, -1, -1, 2554, + 2555, -1, -1, -1, 2556, 2557, 2560, -1, + -1, -1, -1, -1, -1, 2567, -1, -1, + /* 0x5d00 */ + -1, -1, 2568, 2569, 2570, -1, -1, 2571, + 2572, -1, -1, 2573, -1, 2575, 2576, -1, + -1, -1, -1, -1, -1, -1, 2579, 2580, + 2581, 2583, -1, -1, -1, -1, -1, -1, + -1, -1, 2585, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2586, 2587, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2589, -1, -1, -1, + 2590, -1, 2591, 2594, -1, -1, -1, 2597, + 2601, -1, 2604, -1, 2605, 2608, -1, -1, + 2609, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2611, + -1, -1, -1, 2612, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2613, -1, 2614, 2615, -1, -1, 2616, + -1, -1, -1, 2618, 2625, -1, -1, -1, + -1, -1, -1, -1, 2632, -1, -1, 2633, + -1, -1, -1, -1, -1, -1, -1, -1, + 2634, -1, 2635, -1, -1, -1, -1, 2636, + 2637, -1, -1, -1, -1, -1, 2638, -1, + -1, -1, 2639, 2640, 2643, -1, -1, -1, + 2645, 2648, 2655, -1, 2656, 2657, -1, -1, + -1, -1, -1, -1, -1, 2658, 2660, -1, + -1, -1, -1, 2663, 2664, -1, -1, -1, + -1, -1, 2667, 2668, 2669, -1, 2670, 2673, + -1, -1, -1, 2676, -1, 2677, -1, -1, + 2678, -1, 2679, 2680, -1, -1, -1, -1, + -1, 2681, -1, -1, -1, -1, -1, 2682, + 2683, -1, -1, -1, -1, 2684, -1, 2685, + -1, -1, 2686, 2687, -1, 2689, -1, 2690, + /* 0x5e00 */ + 2692, 2694, -1, 2697, -1, 2698, -1, -1, + 2699, -1, -1, 2700, -1, -1, -1, 2701, + 2702, 2703, 2704, -1, -1, 2705, -1, -1, + 2706, -1, 2707, -1, 2708, -1, -1, -1, + -1, -1, -1, -1, -1, 2710, 2711, 2713, + -1, -1, -1, 2714, -1, 2715, 2716, 2719, + 2721, 2724, -1, 2725, -1, -1, 2726, -1, + -1, -1, -1, 2728, 2729, 2730, -1, -1, + 2731, -1, 2732, 2734, -1, -1, -1, 2735, + 2738, -1, -1, -1, 2740, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2741, + 2742, -1, 2743, -1, -1, -1, -1, 2746, + -1, 2748, -1, 2749, 2751, -1, -1, -1, + -1, -1, -1, 2753, 2756, -1, -1, -1, + -1, -1, 2757, -1, 2760, -1, 2761, 2767, + 2768, 2769, 2771, -1, -1, -1, 2772, 2773, + -1, 2776, -1, 2778, 2780, 2782, 2786, -1, + -1, -1, 2787, -1, -1, -1, -1, -1, + 2788, 2789, -1, 2790, 2791, -1, -1, -1, + -1, 2793, -1, -1, -1, -1, 2794, 2795, + -1, -1, -1, -1, -1, -1, -1, 2797, + -1, -1, -1, 2798, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2799, 2803, -1, + -1, -1, 2804, 2809, 2810, 2811, -1, 2812, + -1, 2813, 2815, 2816, -1, -1, -1, -1, + 2818, -1, -1, -1, -1, -1, 2819, 2820, + 2822, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2824, 2825, -1, 2828, -1, 2829, + 2831, 2833, 2834, 2836, -1, -1, -1, -1, + -1, 2838, 2839, -1, 2840, -1, -1, -1, + 2841, -1, -1, 2844, -1, -1, -1, -1, + 2848, -1, -1, 2849, 2855, 2857, -1, -1, + /* 0x5f00 */ + 2863, 2864, 2871, 2872, 2873, -1, -1, -1, + -1, 2875, -1, -1, 2876, 2877, 2878, -1, + 2880, 2883, 2884, -1, 2885, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 2886, -1, -1, -1, -1, 2887, 2889, -1, + -1, -1, 2890, -1, -1, -1, -1, 2891, + -1, -1, -1, 2892, -1, 2893, -1, 2894, + -1, 2895, 2897, 2898, 2899, -1, 2900, -1, + -1, -1, -1, -1, -1, -1, 2902, -1, + 2903, -1, -1, -1, 2905, -1, 2906, -1, + 2907, 2908, 2909, 2912, 2914, 2915, -1, 2918, + -1, 2919, 2921, 2923, 2926, 2929, 2932, 2935, + 2936, -1, -1, -1, -1, 2938, 2939, -1, + 2940, 2941, -1, 2942, 2943, -1, -1, -1, + -1, -1, 2945, -1, 2946, -1, -1, 2947, + -1, -1, -1, 2950, -1, -1, -1, 2951, + 2953, 2955, -1, 2958, 2959, -1, -1, 2962, + 2963, -1, 2964, -1, 2965, -1, -1, 2966, + -1, 2967, -1, 2970, -1, 2972, -1, -1, + -1, -1, -1, -1, -1, -1, 2974, -1, + 2976, 2978, -1, 2979, 2981, -1, -1, -1, + -1, 2982, -1, -1, 2984, 2987, -1, -1, + 2988, 2989, -1, 2990, 2993, 2995, -1, 2997, + -1, 3000, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3001, 3002, -1, 3003, -1, + -1, -1, -1, -1, -1, -1, 3004, 3005, + -1, -1, -1, -1, -1, -1, -1, 3007, + -1, 3008, -1, -1, 3009, -1, -1, -1, + -1, -1, 3011, 3012, -1, -1, -1, 3013, + -1, 3014, -1, -1, -1, -1, -1, -1, + 3017, -1, -1, -1, -1, 3018, -1, -1, + -1, -1, -1, -1, -1, -1, 3019, -1, + /* 0x6000 */ + 3020, 3022, 3023, 3024, 3025, 3026, 3027, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3028, -1, 3029, -1, + -1, -1, -1, -1, 3030, 3031, -1, -1, + -1, -1, -1, 3032, -1, 3034, -1, -1, + -1, -1, 3035, -1, -1, -1, -1, -1, + -1, 3036, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3039, 3044, -1, -1, 3045, + -1, -1, -1, -1, -1, -1, 3046, -1, + -1, -1, -1, 3047, -1, -1, -1, -1, + -1, -1, 3048, 3049, -1, -1, 3051, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 3052, 3053, -1, -1, 3055, 3057, -1, -1, + -1, -1, 3058, -1, -1, -1, -1, -1, + -1, 3059, -1, 3061, 3062, 3065, 3066, -1, + 3070, 3071, 3072, 3073, 3074, 3076, 3077, 3078, + 3080, -1, -1, -1, -1, 3082, -1, -1, + -1, -1, 3084, 3089, -1, 3090, -1, -1, + -1, 3091, -1, 3092, -1, -1, 3093, -1, + -1, -1, -1, -1, -1, -1, 3095, 3096, + -1, -1, 3097, -1, 3098, -1, 3101, -1, + -1, 3103, 3105, 3108, 3109, 3110, -1, 3111, + -1, -1, -1, 3112, 3115, 3116, 3117, -1, + -1, -1, -1, -1, -1, 3118, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3120, -1, -1, -1, -1, -1, + -1, -1, 3122, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3125, -1, + 3127, 3128, -1, 3131, -1, 3132, -1, 3134, + 3135, 3136, -1, 3137, 3138, 3139, 3141, 3142, + -1, 3143, 3145, -1, -1, -1, -1, 3146, + -1, -1, -1, 3147, 3148, -1, -1, -1, + /* 0x6100 */ + -1, -1, 3149, -1, -1, -1, -1, -1, + 3151, -1, -1, -1, -1, -1, -1, -1, + -1, 3153, -1, -1, -1, -1, -1, -1, + -1, 3155, -1, 3156, 3157, -1, -1, -1, + 3158, 3159, -1, -1, 3160, -1, 3161, 3162, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3164, 3165, -1, -1, 3166, + -1, 3167, -1, -1, 3169, 3170, 3171, 3172, + -1, -1, 3173, -1, 3175, -1, -1, 3176, + -1, -1, -1, 3177, -1, 3178, 3179, -1, + -1, 3182, -1, -1, -1, -1, -1, -1, + 3184, 3185, 3187, -1, -1, -1, -1, 3189, + -1, -1, -1, 3191, 3192, -1, -1, -1, + -1, -1, 3193, 3194, -1, 3195, 3196, -1, + -1, -1, -1, 3197, 3198, -1, 3199, -1, + -1, -1, -1, -1, 3200, 3202, 3204, 3205, + -1, 3208, 3209, -1, -1, 3210, -1, 3211, + -1, -1, 3212, -1, -1, -1, -1, -1, + 3213, 3214, 3217, -1, 3218, -1, 3220, 3222, + 3223, 3226, 3229, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3230, 3231, -1, -1, + -1, 3234, -1, 3235, -1, -1, 3236, -1, + -1, -1, 3237, -1, -1, -1, 3238, -1, + -1, -1, -1, 3239, -1, -1, -1, -1, + -1, -1, -1, 3240, -1, -1, -1, 3241, + -1, 3242, -1, -1, 3244, 3245, -1, -1, + 3246, 3248, 3249, -1, 3251, -1, -1, -1, + -1, -1, -1, -1, 3252, -1, 3253, 3254, + -1, -1, -1, 3255, -1, -1, 3256, 3257, + 3258, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3259, -1, 3260, 3262, 3263, 3264, + 3266, -1, 3267, -1, 3268, 3270, 3271, 3272, + /* 0x6200 */ + 3273, -1, -1, -1, -1, -1, 3274, 3275, + -1, -1, -1, 3276, -1, -1, -1, 3277, + -1, -1, -1, -1, 3279, -1, -1, 3280, + 3281, -1, 3283, 3285, -1, 3286, 3288, -1, + -1, -1, -1, -1, -1, -1, 3289, 3291, + -1, 3292, -1, -1, 3293, -1, 3294, 3296, + 3298, -1, 3300, -1, -1, -1, 3302, 3304, + 3306, 3308, -1, 3309, 3310, -1, 3312, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3313, 3314, 3315, 3316, -1, + -1, 3318, -1, -1, -1, 3320, -1, 3321, + 3322, -1, -1, -1, -1, -1, 3324, -1, + 3325, -1, -1, 3326, -1, -1, -1, 3327, + 3328, 3330, 3332, 3333, 3334, -1, -1, 3335, + 3336, -1, -1, -1, -1, 3337, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3338, -1, -1, -1, -1, -1, + -1, 3340, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3341, 3342, 3343, 3344, 3345, 3347, + 3348, 3349, 3350, -1, 3351, 3352, -1, -1, + -1, -1, -1, -1, 3353, -1, -1, -1, + -1, -1, -1, -1, -1, 3354, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3357, -1, -1, 3358, -1, -1, + 3359, -1, -1, 3360, -1, -1, -1, 3361, + 3362, -1, -1, 3364, 3365, 3366, 3367, 3368, + -1, -1, -1, -1, 3369, 3370, 3371, 3372, + 3373, 3375, 3378, 3379, -1, 3380, 3381, 3382, + 3383, 3385, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3387, + /* 0x6300 */ + -1, -1, 3388, -1, 3389, -1, -1, -1, + -1, -1, 3391, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3393, 3396, 3397, 3398, 3399, 3400, 3401, + 3402, 3403, 3404, 3405, 3406, 3407, 3408, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3409, -1, 3411, + -1, -1, -1, -1, -1, 3412, 3413, 3414, + -1, 3415, -1, -1, -1, -1, 3418, -1, + -1, -1, -1, -1, -1, 3421, -1, 3422, + -1, -1, -1, -1, -1, -1, -1, 3423, + -1, -1, -1, -1, 3424, -1, 3425, 3426, + -1, 3427, 3428, 3429, -1, -1, -1, -1, + 3431, -1, -1, 3432, -1, -1, 3433, -1, + -1, -1, 3435, -1, 3437, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3438, + -1, -1, -1, 3440, 3442, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3443, + -1, 3444, -1, 3445, -1, -1, -1, -1, + -1, 3446, -1, -1, -1, 3447, -1, -1, + -1, -1, -1, -1, 3448, -1, -1, -1, + -1, -1, 3449, 3450, 3451, -1, -1, 3452, + 3453, -1, 3454, 3455, 3456, 3457, -1, -1, + 3458, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3459, 3460, -1, -1, -1, -1, -1, + -1, -1, 3461, 3462, -1, -1, -1, -1, + 3463, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3464, 3465, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3466, 3467, -1, -1, 3469, -1, 3470, + /* 0x6400 */ + 3471, 3472, 3473, 3474, -1, 3475, 3478, -1, + -1, -1, -1, -1, -1, 3479, -1, -1, + -1, -1, 3480, -1, 3481, -1, 3482, 3484, + -1, -1, -1, -1, 3485, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 3487, -1, -1, -1, -1, 3488, -1, -1, + -1, -1, 3489, -1, -1, -1, 3490, -1, + -1, -1, 3491, -1, -1, -1, 3493, -1, + -1, -1, 3494, -1, 3496, 3498, 3499, 3501, + 3503, -1, 3504, -1, -1, -1, -1, -1, + -1, 3505, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3506, -1, -1, 3507, + 3508, -1, -1, -1, -1, -1, -1, -1, + -1, 3511, -1, -1, -1, -1, -1, 3512, + -1, -1, -1, 3513, -1, -1, 3514, -1, + -1, -1, -1, 3515, -1, -1, -1, -1, + -1, -1, -1, 3516, 3518, -1, -1, -1, + 3519, -1, -1, -1, -1, -1, -1, 3520, + 3521, 3522, -1, 3523, -1, -1, -1, -1, + 3524, -1, 3525, -1, -1, -1, -1, 3526, + -1, 3527, -1, 3528, -1, 3529, 3531, 3532, + -1, -1, -1, 3535, -1, -1, -1, -1, + -1, -1, 3536, 3538, -1, 3539, -1, 3540, + 3541, 3542, 3545, 3546, -1, -1, 3547, 3548, + -1, 3549, -1, -1, 3550, -1, -1, 3551, + 3553, -1, 3555, 3557, -1, 3558, -1, -1, + -1, 3559, -1, -1, 3560, 3561, -1, -1, + -1, -1, 3563, -1, -1, -1, 3565, -1, + 3566, 3567, -1, 3568, -1, 3569, -1, 3570, + -1, -1, -1, -1, 3573, -1, -1, 3574, + 3575, 3576, 3577, -1, 3578, 3581, -1, 3582, + -1, -1, 3584, 3585, 3586, 3587, 3588, -1, + /* 0x6500 */ + 3589, -1, -1, -1, 3590, 3591, 3592, -1, + 3593, -1, 3594, -1, -1, -1, -1, 3595, + -1, -1, 3596, -1, 3597, -1, 3598, -1, + -1, 3599, -1, 3600, 3601, 3603, -1, 3605, + -1, -1, 3606, 3608, 3609, -1, -1, -1, + 3610, -1, 3611, 3614, 3615, -1, -1, -1, + -1, -1, -1, -1, 3617, 3618, 3619, 3620, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3621, + 3625, 3628, -1, -1, 3629, 3630, 3632, 3633, + -1, -1, -1, -1, -1, 3634, -1, 3636, + 3638, 3640, -1, 3641, -1, -1, 3643, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3644, -1, -1, -1, -1, -1, -1, + 3649, -1, -1, -1, -1, 3650, -1, 3651, + 3652, -1, 3653, -1, -1, -1, -1, -1, + -1, 3657, 3658, 3660, -1, 3661, 3666, -1, + 3671, 3676, 3680, 3684, 3686, 3688, 3689, -1, + -1, -1, -1, 3691, 3692, 3694, -1, 3695, + -1, -1, -1, -1, -1, -1, 3700, 3702, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3703, -1, -1, 3704, 3705, -1, -1, + -1, -1, 3706, -1, -1, 3707, -1, 3708, + -1, -1, -1, -1, 3709, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 3712, 3713, -1, -1, -1, -1, -1, -1, + -1, -1, 3714, -1, -1, -1, -1, 3715, + 3717, 3719, -1, 3721, -1, -1, -1, -1, + 3722, -1, -1, -1, -1, 3723, -1, 3724, + -1, -1, 3725, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3728, 3730, + 3733, 3734, 3736, -1, -1, -1, 3737, 3738, + /* 0x6600 */ + -1, -1, 3739, -1, -1, -1, -1, 3740, + -1, -1, 3742, -1, -1, -1, 3743, 3744, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3745, 3746, -1, -1, -1, -1, 3747, + -1, -1, -1, -1, -1, 3748, 3749, -1, + -1, -1, -1, -1, 3750, 3751, -1, 3752, + 3753, -1, -1, -1, -1, -1, -1, -1, + 3754, -1, -1, 3755, 3756, 3758, 3759, 3761, + -1, -1, 3763, 3765, 3766, -1, -1, -1, + -1, 3767, -1, 3768, -1, -1, -1, -1, + -1, -1, 3769, 3770, 3772, 3773, 3774, -1, + -1, -1, 3775, -1, -1, 3776, -1, 3778, + 3779, -1, -1, -1, 3780, -1, -1, -1, + 3781, 3782, -1, -1, -1, -1, 3783, -1, + -1, -1, -1, -1, 3784, -1, -1, -1, + -1, -1, -1, 3786, -1, -1, -1, -1, + 3787, 3788, 3790, 3791, -1, -1, -1, -1, + 3793, 3794, -1, -1, -1, -1, -1, -1, + -1, -1, 3795, -1, -1, -1, 3796, 3798, + 3803, -1, -1, -1, 3804, -1, -1, -1, + -1, -1, 3805, -1, 3806, -1, 3809, 3812, + 3813, -1, -1, 3814, -1, 3815, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 3817, -1, -1, -1, -1, -1, -1, -1, + -1, 3819, -1, -1, 3820, -1, 3821, 3825, + -1, 3826, -1, -1, 3828, 3832, -1, 3833, + -1, -1, -1, -1, -1, -1, 3834, -1, + -1, -1, -1, -1, -1, -1, -1, 3835, + 3836, -1, -1, -1, -1, -1, -1, -1, + 3838, -1, -1, -1, 3839, -1, -1, -1, + -1, -1, 3840, 3845, -1, 3846, -1, -1, + 3847, 3850, 3851, 3852, -1, 3854, 3855, -1, + /* 0x6700 */ + 3856, -1, 3857, 3859, -1, -1, -1, 3860, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3861, 3862, + -1, 3863, -1, 3864, -1, -1, 3865, 3866, + -1, -1, 3867, -1, -1, -1, -1, 3868, + -1, -1, -1, -1, 3869, 3871, 3872, 3873, + -1, 3875, -1, -1, 3876, 3878, 3879, -1, + -1, -1, 3880, -1, -1, -1, -1, -1, + 3882, -1, 3883, 3886, -1, -1, 3888, 3889, + -1, 3890, -1, -1, -1, -1, -1, -1, + -1, 3893, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 3894, 3895, -1, -1, 3896, 3897, 3898, -1, + 3899, 3900, -1, -1, -1, -1, -1, 3901, + 3903, 3904, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3905, 3911, + 3912, 3917, -1, -1, 3918, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3920, + -1, -1, 3921, -1, -1, -1, -1, -1, + -1, 3925, -1, -1, 3928, -1, 3929, -1, + -1, 3930, 3931, 3932, -1, 3933, 3934, 3935, + 3936, 3937, 3942, 3945, -1, 3946, -1, -1, + -1, 3947, -1, -1, 3950, -1, -1, -1, + -1, -1, -1, 3952, -1, -1, -1, -1, + -1, 3953, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3954, + -1, -1, -1, -1, -1, 3955, -1, 3956, + -1, -1, -1, -1, 3961, -1, -1, -1, + 3962, -1, -1, -1, -1, 3963, -1, -1, + -1, 3964, -1, -1, -1, -1, -1, -1, + 3966, -1, -1, 3967, -1, 3970, -1, -1, + -1, 3971, 3972, 3974, -1, 3975, 3976, 3978, + /* 0x6800 */ + 3979, 3980, -1, 3983, 3985, 3987, -1, 3988, + 3989, 3991, 3992, 3994, 3995, -1, 3997, 3999, + -1, 4001, -1, -1, -1, -1, 4002, 4004, + -1, -1, -1, -1, -1, -1, 4006, -1, + -1, -1, 4007, -1, -1, -1, -1, 4008, + -1, -1, -1, -1, -1, -1, -1, -1, + 4009, -1, -1, -1, -1, -1, -1, 4011, + 4013, -1, -1, -1, -1, -1, 4014, -1, + -1, -1, 4016, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4017, -1, -1, -1, + -1, 4019, 4020, -1, -1, -1, -1, -1, + 4021, -1, -1, -1, 4022, 4024, -1, 4025, + 4027, 4030, 4031, 4032, 4033, 4034, 4036, 4037, + 4038, 4039, 4040, -1, -1, -1, 4041, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4043, 4044, -1, 4047, -1, -1, 4048, + -1, 4049, -1, -1, 4051, 4052, -1, -1, + -1, -1, -1, -1, -1, 4054, -1, -1, + -1, -1, -1, -1, 4056, -1, -1, -1, + 4057, -1, -1, -1, -1, 4058, -1, 4059, + -1, -1, -1, -1, -1, 4060, 4065, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4067, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4069, -1, 4070, 4071, + 4072, -1, 4074, -1, 4075, -1, -1, -1, + -1, -1, 4076, 4080, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4084, 4085, 4086, + -1, -1, -1, -1, -1, -1, -1, 4087, + -1, -1, -1, -1, -1, 4088, -1, 4089, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4091, 4092, -1, -1, -1, 4094, -1, + -1, 4095, -1, -1, -1, -1, -1, -1, + /* 0x6900 */ + 4096, 4097, -1, -1, -1, -1, -1, -1, + -1, 4098, -1, -1, -1, -1, 4100, 4101, + -1, -1, -1, -1, -1, -1, -1, 4104, + 4106, 4107, -1, -1, 4108, -1, -1, 4110, + 4111, -1, 4112, -1, 4113, -1, -1, -1, + -1, -1, -1, 4114, -1, 4115, -1, -1, + 4116, -1, -1, -1, 4117, -1, 4118, -1, + -1, 4119, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4120, -1, -1, 4121, -1, -1, + -1, -1, -1, 4123, -1, 4124, -1, -1, + -1, 4125, 4126, -1, -1, -1, -1, -1, + 4127, 4128, -1, -1, -1, 4129, 4130, -1, + 4131, -1, 4132, 4133, -1, 4134, -1, -1, + -1, -1, -1, 4135, -1, 4137, -1, -1, + -1, -1, -1, -1, 4138, 4139, -1, 4141, + -1, -1, -1, -1, 4142, 4143, 4144, 4145, + 4146, 4147, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4149, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4150, -1, + 4152, -1, 4153, -1, -1, -1, 4154, -1, + -1, -1, 4156, -1, 4157, -1, -1, -1, + -1, -1, -1, -1, 4158, -1, -1, 4159, + -1, -1, -1, -1, -1, -1, -1, 4160, + 4161, -1, -1, 4163, -1, 4164, -1, -1, + -1, 4165, -1, 4167, 4168, 4170, -1, 4172, + 4174, 4176, 4177, 4178, -1, -1, 4180, 4181, + 4182, -1, -1, -1, 4183, -1, -1, 4184, + 4185, -1, -1, -1, -1, -1, -1, -1, + -1, 4186, -1, 4187, -1, -1, 4188, -1, + -1, 4189, -1, -1, -1, -1, -1, -1, + /* 0x6a00 */ + -1, 4190, 4191, 4193, -1, 4194, -1, -1, + -1, -1, 4195, -1, -1, -1, -1, -1, + 4196, 4197, 4199, 4200, -1, -1, -1, -1, + -1, 4201, -1, -1, -1, -1, 4202, -1, + -1, -1, -1, 4203, -1, -1, -1, -1, + -1, 4205, 4207, -1, -1, -1, -1, 4209, + -1, 4211, -1, 4213, -1, -1, -1, 4214, + 4218, 4220, 4221, -1, -1, 4222, -1, 4223, + -1, -1, -1, 4224, -1, -1, -1, -1, + 4226, -1, 4227, 4228, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4230, + -1, -1, 4231, -1, -1, -1, -1, -1, + -1, -1, -1, 4233, -1, -1, 4235, -1, + 4238, 4239, -1, -1, -1, -1, -1, -1, + -1, 4240, -1, -1, 4243, -1, -1, -1, + -1, 4244, -1, 4245, -1, -1, 4246, -1, + -1, 4247, -1, -1, -1, -1, -1, 4248, + 4250, -1, -1, -1, 4251, -1, -1, 4252, + 4254, -1, -1, -1, 4255, 4256, -1, 4257, + -1, -1, 4258, 4260, -1, -1, -1, -1, + -1, 4261, 4262, -1, -1, -1, 4264, 4265, + -1, 4267, -1, 4271, -1, -1, -1, -1, + 4272, -1, -1, 4273, -1, -1, -1, -1, + 4274, 4278, 4279, 4280, -1, -1, -1, -1, + 4281, -1, -1, -1, 4282, -1, 4283, -1, + -1, -1, -1, 4285, 4287, 4288, -1, -1, + -1, -1, 4289, 4290, -1, 4291, 4292, 4293, + -1, -1, -1, -1, -1, 4295, -1, 4296, + 4297, -1, 4298, -1, 4299, -1, -1, -1, + -1, -1, -1, 4300, -1, -1, -1, -1, + 4301, -1, 4302, 4303, -1, 4305, -1, -1, + /* 0x6b00 */ + -1, -1, -1, -1, 4306, 4308, -1, -1, + -1, 4309, 4313, -1, -1, -1, -1, 4315, + -1, 4316, 4317, -1, -1, -1, 4319, 4320, + -1, -1, -1, -1, -1, 4322, 4325, -1, + 4327, -1, 4329, 4333, 4336, -1, -1, 4337, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4338, -1, -1, 4339, -1, -1, + -1, -1, -1, 4340, -1, 4341, 4342, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4343, -1, 4344, -1, + 4346, -1, -1, 4347, -1, -1, 4349, -1, + 4352, -1, -1, 4353, -1, 4355, -1, 4356, + -1, 4357, -1, -1, -1, 4359, -1, -1, + 4361, 4363, -1, -1, 4365, -1, 4366, 4369, + -1, -1, 4371, 4375, 4379, -1, -1, 4382, + 4385, 4388, 4389, -1, 4390, -1, 4392, 4396, + 4400, 4401, -1, -1, -1, -1, -1, 4405, + -1, -1, -1, 4406, -1, -1, -1, -1, + -1, -1, 4407, 4408, -1, -1, -1, -1, + 4409, -1, 4410, -1, -1, -1, 4411, -1, + -1, 4412, -1, -1, 4413, -1, -1, -1, + -1, -1, -1, 4414, -1, -1, 4415, 4416, + -1, 4417, 4419, -1, 4421, -1, -1, 4422, + -1, -1, 4423, 4424, 4426, -1, -1, -1, + 4428, 4429, 4432, -1, -1, -1, 4433, -1, + -1, 4434, -1, -1, -1, -1, 4436, 4437, + -1, -1, -1, 4438, 4440, 4441, -1, 4442, + 4443, 4444, -1, -1, -1, -1, -1, 4445, + -1, 4446, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4447, -1, 4448, -1, + -1, -1, -1, -1, -1, 4449, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4450, + /* 0x6c00 */ + -1, -1, 4451, -1, -1, -1, -1, 4453, + 4454, -1, 4456, -1, 4457, -1, -1, -1, + -1, -1, -1, -1, 4458, -1, -1, 4461, + -1, -1, -1, 4464, -1, -1, -1, -1, + -1, -1, 4465, 4466, -1, -1, -1, -1, + -1, 4469, -1, 4470, 4471, -1, -1, -1, + -1, -1, 4472, 4473, 4474, 4476, -1, 4478, + -1, -1, 4481, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4483, + -1, 4487, -1, -1, -1, -1, 4488, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4489, 4491, -1, -1, -1, -1, -1, + -1, 4493, -1, -1, 4495, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4496, 4497, -1, -1, -1, + -1, 4498, 4499, 4500, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 4501, 4503, -1, -1, -1, -1, -1, -1, + -1, -1, 4504, -1, -1, -1, 4505, 4506, + -1, -1, -1, -1, -1, -1, -1, 4507, + -1, 4508, 4513, 4515, 4516, 4517, 4518, 4519, + 4520, 4521, 4522, -1, -1, -1, 4524, -1, + -1, 4525, 4526, -1, -1, 4527, -1, -1, + -1, -1, -1, -1, -1, -1, 4528, -1, + -1, 4529, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4530, -1, -1, + -1, -1, -1, 4532, -1, 4533, 4534, -1, + -1, -1, -1, -1, -1, 4535, -1, -1, + 4536, -1, 4537, -1, -1, -1, -1, 4539, + 4540, -1, -1, -1, -1, -1, 4541, 4542, + 4544, -1, 4545, 4546, 4547, 4550, 4552, -1, + /* 0x6d00 */ + -1, 4553, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4554, -1, -1, -1, + -1, -1, 4555, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4556, + -1, -1, -1, -1, -1, -1, 4557, -1, + -1, -1, -1, -1, 4558, -1, -1, -1, + 4559, -1, -1, 4560, 4561, 4562, 4563, 4564, + 4565, 4566, 4567, 4568, -1, 4569, 4570, 4572, + 4574, 4575, 4576, 4577, 4578, 4579, -1, -1, + -1, -1, -1, -1, 4580, -1, -1, -1, + -1, -1, -1, 4583, -1, -1, -1, 4584, + -1, 4587, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4588, -1, -1, 4589, -1, -1, -1, + -1, -1, 4590, -1, -1, 4592, -1, 4593, + -1, 4594, -1, -1, 4595, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4596, -1, + -1, 4598, -1, 4600, 4601, 4603, 4604, 4605, + 4606, 4607, 4608, 4609, 4610, -1, 4611, 4612, + 4614, 4615, -1, -1, -1, -1, -1, 4619, + -1, -1, -1, -1, -1, -1, -1, -1, + 4620, -1, -1, -1, 4621, -1, -1, -1, + 4622, -1, -1, -1, 4623, -1, -1, -1, + -1, -1, -1, 4624, -1, -1, -1, -1, + -1, -1, 4625, -1, -1, -1, -1, -1, + -1, -1, 4626, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4628, -1, -1, + 4629, -1, 4631, 4632, -1, -1, -1, -1, + -1, -1, -1, 4634, -1, 4635, 4638, -1, + 4639, -1, 4640, 4641, -1, -1, -1, -1, + /* 0x6e00 */ + -1, -1, -1, -1, -1, 4642, -1, 4643, + 4644, 4646, 4647, 4650, 4654, 4655, 4656, -1, + 4658, 4659, -1, 4660, 4664, 4665, 4668, 4669, + -1, 4670, -1, 4671, -1, -1, -1, -1, + -1, -1, 4672, -1, -1, -1, 4673, -1, + -1, 4674, -1, -1, 4675, -1, -1, -1, + -1, -1, -1, -1, 4676, -1, -1, -1, + 4677, -1, -1, -1, -1, -1, 4679, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4680, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4681, -1, + -1, -1, -1, -1, -1, -1, -1, 4682, + -1, -1, -1, -1, -1, -1, -1, 4683, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4684, 4685, 4686, 4687, 4688, + 4690, 4692, 4693, 4694, -1, 4695, -1, 4696, + -1, 4697, -1, -1, 4698, -1, -1, -1, + 4701, -1, -1, -1, -1, 4702, 4704, -1, + -1, -1, -1, -1, 4706, 4707, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4708, 4712, -1, -1, 4713, 4714, + -1, -1, -1, 4716, -1, -1, 4717, -1, + -1, -1, -1, -1, 4719, -1, -1, -1, + -1, -1, -1, -1, 4721, 4722, -1, -1, + -1, -1, -1, -1, 4723, -1, 4724, -1, + -1, -1, -1, -1, -1, -1, -1, 4725, + -1, 4726, 4728, 4729, -1, 4730, 4732, 4733, + 4736, 4737, 4739, -1, 4740, 4741, 4742, -1, + 4743, 4746, 4747, -1, 4748, -1, -1, 4750, + -1, -1, 4751, -1, -1, -1, -1, 4752, + 4755, -1, -1, 4757, -1, -1, 4758, 4759, + /* 0x6f00 */ + -1, 4761, -1, -1, 4762, -1, 4763, -1, + -1, -1, 4764, -1, -1, -1, -1, -1, + -1, 4765, -1, 4766, -1, -1, -1, -1, + -1, -1, 4767, -1, -1, -1, -1, -1, + -1, -1, 4768, 4769, -1, -1, -1, 4770, + -1, -1, -1, 4773, 4774, -1, -1, -1, + -1, 4775, 4776, -1, -1, -1, -1, -1, + 4777, -1, -1, -1, -1, -1, -1, 4778, + -1, 4779, -1, -1, 4780, 4781, 4782, 4783, + -1, -1, -1, 4784, -1, 4785, -1, -1, + -1, 4786, -1, -1, 4789, -1, -1, -1, + -1, 4791, -1, 4792, 4794, -1, -1, -1, + -1, -1, -1, -1, 4796, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4797, + 4798, -1, -1, -1, 4799, -1, -1, 4800, + -1, -1, -1, -1, -1, -1, -1, 4801, + 4802, 4806, 4810, -1, 4813, -1, 4816, 4817, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4818, -1, -1, 4819, -1, -1, 4820, + -1, -1, 4821, 4822, 4825, -1, -1, 4826, + 4828, -1, -1, 4829, 4830, -1, 4832, -1, + -1, 4833, -1, -1, -1, -1, 4834, -1, + 4835, 4836, -1, 4837, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4838, -1, 4839, -1, -1, -1, 4840, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4841, 4843, -1, 4844, 4845, -1, -1, + 4847, -1, 4848, 4850, 4852, -1, -1, 4853, + -1, -1, -1, -1, 4855, -1, -1, -1, + -1, -1, -1, 4856, -1, -1, -1, -1, + 4857, 4858, -1, 4861, -1, 4863, 4866, -1, + -1, -1, 4868, -1, 4869, -1, 4870, -1, + /* 0x7000 */ + -1, -1, 4871, -1, -1, 4874, 4875, -1, + -1, 4877, -1, 4878, -1, -1, -1, 4880, + -1, -1, -1, 4881, -1, 4884, -1, -1, + 4885, -1, -1, -1, -1, 4886, -1, 4887, + 4888, -1, -1, -1, -1, -1, 4889, 4890, + 4892, -1, -1, -1, 4894, -1, -1, 4896, + 4897, -1, 4898, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4900, -1, + -1, -1, -1, 4901, 4902, -1, -1, -1, + -1, -1, -1, 4903, 4905, -1, 4906, 4908, + -1, 4909, -1, -1, 4910, 4912, -1, -1, + 4913, -1, -1, -1, -1, 4914, -1, -1, + -1, -1, -1, 4915, 4916, -1, -1, 4917, + -1, -1, -1, -1, -1, 4918, 4919, 4921, + -1, -1, -1, -1, -1, 4922, 4925, -1, + -1, -1, -1, 4927, -1, 4929, 4931, 4933, + 4934, 4935, -1, -1, -1, -1, -1, -1, + -1, 4938, -1, -1, -1, 4941, 4943, 4944, + -1, -1, -1, -1, -1, -1, -1, 4945, + -1, -1, -1, -1, 4947, 4948, -1, -1, + -1, -1, -1, -1, 4949, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4954, 4957, + 4958, -1, -1, -1, -1, -1, -1, -1, + -1, 4959, 4960, -1, 4962, 4965, -1, -1, + -1, 4966, 4967, 4970, -1, -1, -1, -1, + -1, -1, 4971, -1, -1, -1, -1, 4972, + -1, -1, -1, -1, -1, -1, 4973, -1, + -1, -1, -1, 4975, -1, -1, -1, 4976, + -1, -1, -1, -1, -1, -1, 4977, 4978, + 4980, 4982, -1, 4983, 4984, 4985, -1, -1, + -1, 4986, -1, -1, 4987, -1, -1, -1, + -1, -1, -1, -1, -1, 4988, 4989, -1, + /* 0x7100 */ + -1, -1, -1, -1, -1, -1, -1, 4991, + 4992, -1, 4996, -1, -1, -1, -1, 4997, + -1, -1, -1, -1, 4998, 5000, 5001, -1, + 5002, -1, 5003, -1, -1, -1, -1, -1, + -1, 5005, -1, -1, -1, -1, 5006, -1, + -1, -1, -1, -1, -1, 5007, -1, -1, + 5008, -1, -1, 5010, -1, -1, -1, -1, + -1, -1, -1, -1, 5011, -1, -1, -1, + -1, -1, -1, -1, -1, 5013, -1, -1, + -1, 5014, -1, -1, -1, -1, -1, -1, + -1, 5017, 5018, -1, -1, 5019, 5023, 5024, + -1, 5025, -1, -1, -1, -1, -1, -1, + -1, -1, 5026, -1, -1, 5028, -1, 5029, + -1, 5033, -1, -1, 5034, -1, 5036, -1, + -1, -1, -1, -1, 5037, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 5039, -1, + -1, -1, -1, -1, -1, 5041, -1, -1, + 5043, -1, -1, -1, -1, -1, -1, 5047, + -1, -1, 5048, -1, 5049, -1, -1, 5051, + -1, 5052, -1, -1, -1, -1, -1, -1, + -1, -1, 5056, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5057, 5058, 5059, -1, -1, -1, -1, + -1, 5060, 5061, -1, -1, -1, 5062, -1, + -1, 5063, -1, -1, 5065, -1, -1, -1, + 5067, -1, -1, -1, 5068, -1, 5070, -1, + 5071, -1, 5073, 5075, -1, 5077, -1, 5078, + -1, 5081, -1, -1, 5082, -1, -1, 5083, + -1, -1, -1, -1, -1, -1, 5085, -1, + -1, -1, -1, -1, 5086, 5087, -1, -1, + -1, -1, -1, 5088, 5092, -1, -1, -1, + -1, -1, -1, 5093, 5094, -1, 5095, 5096, + /* 0x7200 */ + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 5097, -1, -1, + 5098, -1, -1, -1, -1, -1, -1, 5099, + -1, -1, -1, 5101, -1, -1, -1, -1, + -1, -1, -1, -1, 5104, -1, -1, -1, + -1, -1, -1, -1, -1, 5107, -1, -1, + -1, 5108, 5109, -1, 5111, -1, -1, 5112, + -1, -1, 5113, -1, 5114, -1, 5115, 5118, + 5119, -1, -1, 5120, -1, 5121, 5122, -1, + -1, -1, -1, 5123, -1, 5124, 5125, -1, + -1, -1, -1, 5129, -1, 5130, -1, -1, + 5134, -1, -1, 5135, 5136, -1, -1, -1, + 5137, -1, -1, -1, -1, -1, 5138, -1, + -1, -1, -1, 5140, -1, -1, -1, -1, + -1, -1, -1, -1, 5142, 5143, -1, -1, + -1, -1, 5144, -1, -1, 5146, -1, -1, + -1, 5147, 5148, -1, -1, -1, -1, 5149, + -1, -1, 5150, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 5151, -1, + -1, -1, -1, 5152, -1, -1, -1, -1, + 5154, -1, 5156, -1, -1, -1, -1, 5157, + -1, -1, -1, -1, 5159, 5160, 5161, -1, + -1, -1, 5162, -1, 5163, -1, 5165, 5166, + 5167, 5168, -1, -1, -1, -1, -1, -1, + 5169, -1, 5170, -1, -1, -1, -1, -1, + 5172, 5173, -1, -1, 5174, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 5175, 5176, -1, + -1, -1, 5177, -1, -1, 5178, -1, -1, + -1, -1, -1, -1, 5179, 5180, 5181, 5182, + 5183, 5184, 5185, -1, -1, -1, -1, -1, + 5186, 5188, -1, -1, -1, 5189, 5190, -1, + /* 0x7300 */ + -1, -1, 5191, 5192, -1, -1, -1, 5193, + -1, -1, 5194, -1, -1, 5195, 5197, -1, + -1, -1, -1, -1, -1, 5199, -1, -1, + 5200, 5201, -1, -1, -1, -1, -1, 5202, + -1, 5204, -1, -1, -1, -1, -1, -1, + 5205, 5206, 5207, 5208, 5209, -1, 5210, 5211, + -1, -1, 5212, -1, -1, 5213, 5214, -1, + -1, -1, -1, 5215, -1, -1, -1, 5216, + -1, 5218, -1, -1, 5219, 5220, -1, -1, + -1, -1, -1, -1, -1, 5221, 5222, 5225, + 5226, -1, -1, -1, -1, -1, -1, -1, + 5227, 5228, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5229, -1, -1, 5231, -1, + 5232, -1, 5233, 5234, -1, 5236, 5237, -1, + 5238, 5239, 5240, -1, -1, 5241, -1, 5243, + 5244, -1, 5246, 5247, 5248, -1, 5249, -1, + 5250, 5251, -1, 5252, -1, 5254, -1, 5255, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5256, -1, -1, -1, -1, -1, -1, + -1, 5257, 5258, 5259, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 5260, 5262, -1, -1, -1, -1, 5263, 5264, + 5265, 5266, -1, 5267, -1, -1, -1, -1, + -1, -1, 5268, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5269, -1, 5272, 5273, 5274, + 5276, 5277, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5278, -1, -1, 5280, -1, -1, -1, + -1, -1, 5284, -1, -1, -1, -1, -1, + 5285, 5286, 5288, -1, -1, -1, -1, 5289, + -1, -1, -1, -1, -1, -1, 5290, -1, + /* 0x7400 */ + -1, -1, -1, 5291, -1, 5292, -1, -1, + -1, 5293, -1, -1, -1, 5296, 5298, 5299, + 5300, 5302, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5304, -1, -1, 5305, -1, -1, -1, + -1, 5307, 5309, -1, 5310, -1, -1, 5311, + -1, -1, -1, -1, -1, -1, -1, 5312, + -1, -1, -1, 5313, -1, -1, -1, -1, + -1, -1, 5314, -1, -1, -1, -1, -1, + -1, 5315, -1, -1, -1, -1, -1, -1, + 5316, -1, -1, 5319, 5321, -1, -1, -1, + 5322, 5323, 5324, -1, -1, -1, -1, 5325, + 5326, -1, 5327, -1, 5328, -1, 5330, 5331, + 5332, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5333, -1, -1, -1, 5335, + -1, 5336, -1, -1, -1, -1, 5337, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5339, 5341, 5344, -1, -1, 5345, -1, + -1, -1, -1, 5346, -1, -1, -1, -1, + 5347, -1, -1, -1, -1, 5348, -1, -1, + 5349, -1, -1, -1, -1, 5350, -1, 5352, + -1, -1, -1, -1, -1, -1, -1, -1, + 5353, 5355, 5356, -1, 5357, -1, -1, 5358, + -1, -1, 5359, -1, 5360, -1, -1, -1, + -1, -1, 5362, -1, -1, -1, -1, -1, + -1, -1, -1, 5364, -1, -1, -1, -1, + 5365, -1, -1, -1, -1, -1, 5366, 5367, + -1, -1, -1, -1, -1, -1, 5368, 5370, + -1, -1, -1, -1, -1, -1, -1, -1, + /* 0x7500 */ + -1, 5371, -1, -1, -1, -1, 5373, -1, + -1, -1, -1, -1, 5374, -1, 5375, -1, + -1, -1, -1, -1, -1, 5378, 5379, -1, + -1, -1, -1, -1, -1, -1, 5381, -1, + 5384, -1, 5385, 5387, -1, -1, 5389, -1, + -1, -1, -1, -1, -1, -1, -1, 5392, + -1, -1, -1, -1, -1, 5398, -1, 5399, + -1, -1, 5400, 5402, 5407, 5409, -1, -1, + -1, -1, 5410, -1, 5411, 5413, 5414, -1, + -1, -1, 5418, -1, 5419, 5421, 5423, -1, + -1, 5424, 5425, -1, -1, -1, -1, -1, + -1, 5429, 5431, -1, -1, 5432, 5437, -1, + 5441, 5442, 5443, -1, -1, 5444, -1, 5445, + 5446, -1, 5447, 5448, -1, -1, -1, -1, + 5450, 5451, -1, 5453, 5457, 5458, 5460, -1, + -1, -1, 5461, 5462, -1, -1, -1, -1, + -1, -1, 5463, -1, -1, 5467, 5469, 5470, + -1, 5471, 5475, -1, -1, -1, 5479, 5481, + -1, -1, -1, -1, -1, -1, 5483, 5484, + -1, -1, -1, -1, -1, -1, -1, 5485, + 5486, 5487, -1, 5488, -1, -1, -1, -1, + -1, -1, -1, -1, 5489, 5490, 5491, 5492, + -1, 5493, -1, -1, 5495, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 5496, + 5497, 5498, -1, -1, -1, -1, -1, -1, + -1, -1, 5499, -1, -1, -1, 5500, -1, + -1, 5504, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 5505, 5506, 5507, 5508, -1, -1, 5509, -1, + -1, -1, 5510, 5512, 5515, -1, -1, -1, + -1, 5516, 5517, -1, -1, -1, 5518, -1, + /* 0x7600 */ + -1, -1, 5519, -1, -1, 5523, 5524, -1, + -1, 5525, -1, 5527, -1, 5528, -1, -1, + -1, -1, -1, 5529, -1, -1, 5530, 5531, + 5532, -1, -1, -1, -1, -1, 5533, -1, + -1, 5534, -1, -1, 5535, -1, 5536, 5537, + -1, -1, 5538, 5539, -1, -1, 5540, -1, + -1, -1, 5541, -1, -1, -1, -1, -1, + -1, -1, 5542, 5543, -1, -1, 5545, 5546, + -1, -1, 5547, -1, 5548, 5550, 5551, 5552, + -1, 5553, -1, -1, -1, -1, -1, -1, + -1, -1, 5554, -1, -1, 5556, -1, -1, + 5558, -1, -1, -1, -1, -1, 5559, 5560, + -1, 5561, 5562, 5563, 5564, 5565, -1, 5566, + -1, 5567, -1, 5568, 5569, 5570, 5571, 5572, + 5573, 5576, 5577, -1, 5578, 5579, -1, -1, + -1, -1, 5580, 5590, 5591, -1, -1, -1, + -1, 5593, 5595, 5597, -1, -1, -1, -1, + 5598, -1, -1, 5601, -1, 5602, 5604, -1, + 5605, 5606, -1, -1, -1, -1, -1, -1, + -1, -1, 5607, -1, -1, -1, 5609, -1, + -1, 5610, -1, -1, -1, 5611, -1, -1, + 5613, -1, -1, -1, -1, -1, -1, -1, + 5614, 5616, 5617, -1, -1, -1, -1, 5619, + 5620, 5622, 5624, -1, 5625, -1, -1, -1, + -1, 5626, -1, 5627, -1, -1, -1, 5629, + 5630, -1, -1, 5631, 5634, 5635, -1, 5636, + 5637, 5639, -1, -1, -1, -1, 5641, 5643, + 5644, 5645, -1, -1, 5646, -1, 5647, -1, + -1, 5648, -1, 5649, 5651, -1, -1, 5652, + -1, -1, 5653, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + /* 0x7700 */ + -1, -1, -1, -1, -1, -1, 5655, -1, + -1, 5657, -1, -1, 5658, 5660, 5661, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 5663, -1, -1, -1, -1, -1, 5664, 5665, + -1, -1, -1, -1, -1, 5666, 5667, -1, + -1, -1, -1, 5668, 5669, -1, -1, 5670, + -1, -1, -1, -1, -1, -1, -1, 5672, + -1, -1, -1, -1, -1, -1, 5673, -1, + 5676, 5677, 5678, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 5679, + 5680, 5681, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5682, -1, 5683, -1, + 5684, -1, -1, -1, 5685, 5686, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5687, -1, -1, -1, -1, -1, 5688, + -1, -1, -1, -1, -1, 5690, 5691, 5692, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 5693, -1, -1, -1, 5694, -1, + 5695, -1, -1, -1, -1, -1, 5696, -1, + 5697, -1, 5698, -1, -1, -1, -1, -1, + -1, 5699, 5700, -1, -1, 5701, -1, -1, + 5703, -1, -1, -1, -1, -1, 5704, -1, + -1, -1, -1, -1, 5705, -1, 5706, -1, + -1, 5710, -1, -1, -1, -1, -1, 5711, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 5712, 5713, -1, -1, -1, -1, + -1, 5714, 5715, -1, -1, -1, -1, -1, + -1, -1, 5716, -1, 5717, -1, 5719, 5720, + -1, -1, -1, 5722, -1, -1, -1, 5723, + -1, -1, -1, -1, 5724, -1, 5727, -1, + -1, -1, -1, -1, -1, -1, 5728, 5729, + /* 0x7800 */ + 5734, 5735, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 5736, -1, -1, 5737, 5738, 5741, + -1, -1, 5742, -1, 5743, -1, -1, -1, + -1, -1, -1, -1, -1, 5744, -1, 5745, + -1, -1, -1, -1, 5746, -1, -1, -1, + -1, -1, 5747, -1, -1, -1, -1, -1, + -1, -1, 5750, 5751, -1, -1, 5752, 5753, + 5758, 5759, -1, 5760, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 5761, 5762, 5763, + -1, 5764, 5765, -1, 5766, -1, -1, -1, + -1, -1, -1, -1, 5767, -1, -1, -1, + 5768, -1, 5769, -1, -1, -1, 5770, 5773, + -1, -1, -1, -1, -1, 5774, -1, 5775, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5778, -1, -1, -1, -1, -1, 5782, + -1, -1, -1, -1, -1, 5784, 5785, -1, + -1, -1, -1, -1, 5786, 5787, -1, 5790, + -1, -1, -1, 5793, 5794, -1, 5795, 5798, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5799, 5800, -1, -1, 5801, -1, 5802, + 5803, 5805, -1, -1, -1, -1, -1, -1, + 5807, -1, 5808, 5810, 5812, -1, -1, -1, + -1, 5813, -1, -1, -1, -1, -1, 5814, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5815, 5816, -1, 5817, -1, 5818, -1, + -1, -1, 5819, -1, -1, -1, -1, -1, + 5822, -1, -1, 5823, -1, -1, -1, 5824, + -1, -1, -1, -1, -1, -1, -1, 5825, + -1, -1, -1, -1, -1, -1, -1, 5826, + 5827, -1, 5828, -1, -1, 5829, -1, -1, + /* 0x7900 */ + 5830, -1, -1, -1, 5831, -1, 5832, -1, + 5835, -1, -1, -1, -1, -1, 5837, -1, + -1, -1, 5838, -1, -1, -1, -1, -1, + -1, 5839, -1, -1, -1, -1, -1, 5840, + 5843, -1, -1, -1, -1, -1, 5844, -1, + -1, -1, 5849, 5850, 5851, -1, 5852, -1, + -1, 5855, -1, -1, -1, -1, -1, -1, + -1, -1, 5856, 5857, 5858, -1, -1, 5859, + 5860, -1, -1, 5861, -1, 5862, -1, -1, + -1, -1, -1, -1, -1, -1, 5863, -1, + -1, -1, -1, -1, -1, 5864, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 5865, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 5866, + -1, -1, -1, -1, -1, 5867, -1, 5868, + 5869, -1, -1, -1, -1, -1, -1, 5870, + 5871, -1, -1, -1, 5872, 5873, -1, -1, + -1, -1, -1, -1, -1, 5874, 5875, -1, + -1, -1, -1, -1, -1, 5876, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5877, -1, -1, -1, -1, 5878, -1, + -1, 5879, 5880, -1, -1, -1, 5881, -1, + 5882, 5883, -1, -1, 5884, -1, -1, -1, + -1, -1, -1, 5885, -1, -1, -1, 5886, + -1, 5887, -1, 5888, -1, -1, 5889, 5890, + 5895, -1, 5896, 5897, 5902, 5905, -1, -1, + 5906, -1, -1, -1, 5907, 5909, 5910, 5911, + 5912, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 5913, + 5914, -1, -1, -1, -1, -1, -1, -1, + 5916, -1, -1, -1, -1, 5917, 5918, -1, + /* 0x7a00 */ + -1, 5919, -1, -1, -1, 5923, 5924, -1, + 5926, 5927, -1, -1, -1, -1, 5929, -1, + -1, -1, -1, -1, -1, -1, -1, 5930, + -1, -1, 5932, -1, 5934, -1, -1, 5935, + -1, -1, -1, 5936, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 5937, 5938, -1, + -1, 5939, 5941, 5942, -1, -1, -1, -1, + -1, -1, 5944, 5946, -1, -1, 5947, 5951, + 5955, -1, 5957, -1, -1, 5958, -1, -1, + -1, 5960, -1, -1, 5962, 5966, 5967, 5969, + 5971, 5974, -1, -1, -1, -1, -1, 5975, + -1, -1, -1, -1, -1, -1, 5976, -1, + 5978, 5979, 5980, 5981, -1, -1, -1, -1, + 5982, 5986, 5988, 5990, -1, 5991, -1, -1, + 5993, -1, -1, -1, -1, -1, -1, 5994, + -1, 5996, -1, -1, -1, 5997, -1, -1, + -1, 5998, -1, 5999, -1, -1, -1, -1, + -1, -1, 6000, -1, -1, 6001, 6002, -1, + -1, 6003, -1, 6005, -1, -1, -1, 6009, + -1, -1, -1, -1, 6013, 6014, -1, -1, + -1, -1, -1, -1, -1, 6015, 6016, -1, + -1, 6017, 6018, -1, 6019, 6020, 6022, 6024, + 6026, -1, -1, 6028, -1, 6029, 6030, -1, + -1, -1, 6032, 6033, -1, -1, -1, -1, + -1, -1, -1, 6037, 6039, 6040, 6041, 6043, + 6044, -1, 6046, -1, -1, -1, -1, -1, + -1, -1, 6047, -1, -1, -1, 6048, -1, + -1, -1, 6050, -1, 6051, 6053, 6056, -1, + -1, -1, 6058, -1, -1, -1, -1, -1, + -1, 6059, 6061, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 6063, -1, + 6065, -1, -1, -1, -1, -1, 6067, -1, + /* 0x7b00 */ + -1, -1, -1, 6068, -1, -1, -1, -1, + -1, -1, -1, 6069, -1, -1, -1, -1, + -1, 6071, -1, -1, 6073, 6074, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 6075, + -1, -1, -1, -1, -1, -1, -1, 6076, + 6082, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 6083, 6085, -1, + -1, -1, 6086, -1, 6088, -1, 6090, -1, + -1, -1, -1, -1, -1, 6091, 6092, -1, + -1, -1, -1, 6093, -1, 6094, -1, 6096, + 6098, 6099, -1, -1, -1, -1, 6100, -1, + 6104, 6105, 6106, 6107, 6108, 6109, 6110, -1, + -1, -1, -1, -1, -1, -1, -1, 6114, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 6115, -1, -1, -1, -1, -1, -1, + -1, 6116, 6117, -1, 6118, -1, 6119, 6122, + 6123, -1, 6124, -1, -1, -1, 6125, 6126, + -1, -1, -1, 6129, -1, 6130, -1, 6131, + -1, -1, 6132, 6133, -1, -1, -1, -1, + -1, -1, 6134, -1, -1, -1, -1, -1, + -1, -1, -1, 6135, -1, -1, 6139, 6141, + 6142, 6143, 6144, 6145, 6146, -1, -1, -1, + 6147, -1, 6149, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 6150, -1, -1, -1, 6151, -1, 6153, -1, + -1, 6154, -1, 6155, -1, -1, -1, 6157, + -1, 6158, -1, 6159, 6160, -1, -1, 6161, + -1, -1, -1, 6162, -1, -1, -1, -1, + 6163, 6165, -1, -1, 6166, -1, 6167, -1, + -1, 6168, 6171, -1, -1, 6172, 6174, 6175, + -1, 6176, 6177, 6178, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + /* 0x7c00 */ + 6179, 6181, -1, -1, 6183, -1, 6185, -1, + -1, -1, -1, -1, -1, 6186, -1, -1, + -1, 6187, 6189, -1, 6190, -1, 6192, 6193, + 6195, -1, -1, -1, -1, -1, 6196, -1, + 6197, 6198, -1, 6199, -1, -1, -1, -1, + -1, -1, 6200, 6201, -1, -1, -1, -1, + -1, 6203, -1, -1, -1, -1, -1, 6205, + -1, 6206, -1, -1, -1, 6207, 6208, -1, + 6209, 6211, -1, 6212, -1, -1, 6213, -1, + -1, -1, -1, -1, 6214, -1, -1, 6215, + 6217, -1, 6218, -1, 6219, 6221, 6222, -1, + 6224, 6226, -1, 6227, 6228, -1, -1, 6229, + 6230, -1, -1, -1, 6232, -1, -1, -1, + -1, 6234, 6235, -1, 6236, 6237, 6239, -1, + -1, -1, 6240, -1, 6242, -1, -1, -1, + -1, -1, -1, 6243, 6244, -1, -1, -1, + -1, -1, -1, 6245, -1, -1, -1, 6246, + -1, -1, -1, 6248, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 6249, + 6250, -1, -1, 6251, 6253, 6254, -1, -1, + -1, -1, -1, -1, 6255, 6256, 6258, 6259, + -1, -1, 6263, -1, 6264, -1, 6268, -1, + -1, -1, -1, 6269, -1, 6271, -1, -1, + -1, 6272, 6273, -1, -1, 6274, -1, -1, + -1, 6275, -1, -1, -1, -1, 6276, 6281, + -1, 6282, 6283, -1, -1, -1, -1, -1, + -1, -1, -1, 6284, -1, 6286, -1, -1, + -1, -1, 6287, -1, -1, 6291, 6292, -1, + 6293, -1, -1, -1, -1, -1, 6295, 6296, + -1, -1, -1, -1, -1, -1, -1, -1, + 6297, -1, 6299, -1, 6300, -1, 6301, -1, + 6302, 6306, 6308, 6309, 6313, -1, 6315, 6317, + /* 0x7d00 */ + 6319, -1, 6320, -1, 6321, 6322, 6323, 6324, + 6325, 6326, -1, 6327, -1, 6328, -1, -1, + 6329, -1, -1, 6330, 6331, 6332, 6333, 6334, + 6335, 6337, 6339, 6340, 6341, 6342, -1, -1, + -1, 6344, -1, 6345, -1, 6346, -1, 6347, + -1, -1, -1, -1, 6348, -1, 6350, 6352, + 6356, 6357, 6358, 6359, -1, 6360, -1, -1, + -1, 6361, 6362, -1, 6363, -1, -1, 6364, + 6365, -1, 6366, 6367, 6368, 6369, 6370, -1, + 6372, -1, -1, 6373, 6374, 6376, 6377, 6378, + 6379, -1, -1, -1, -1, 6380, 6383, -1, + -1, -1, 6384, 6385, -1, 6387, 6389, -1, + -1, 6390, 6391, -1, 6392, 6396, 6397, -1, + 6398, -1, -1, -1, -1, -1, -1, -1, + 6399, 6400, 6402, 6404, -1, 6405, 6407, 6410, + 6411, 6413, -1, -1, -1, -1, -1, -1, + -1, 6414, 6415, 6417, -1, -1, 6418, -1, + 6419, 6420, -1, 6421, 6422, -1, -1, 6423, + -1, 6424, -1, 6426, -1, -1, -1, 6428, + -1, 6429, 6431, -1, 6434, -1, 6435, -1, + 6436, -1, 6438, 6440, -1, -1, -1, -1, + -1, -1, -1, 6441, 6445, 6446, -1, 6447, + 6448, 6449, 6450, 6451, 6453, 6455, -1, 6456, + 6457, 6458, 6459, 6460, -1, 6461, 6463, 6464, + -1, -1, -1, -1, 6465, -1, -1, 6466, + -1, -1, 6467, 6468, -1, 6469, -1, 6470, + 6474, 6475, 6477, -1, 6479, 6480, 6481, 6483, + 6484, 6485, 6486, -1, 6490, 6491, 6492, -1, + 6493, 6494, -1, 6496, -1, 6498, 6499, -1, + 6500, 6501, 6502, 6503, 6507, -1, -1, 6508, + -1, 6509, 6510, -1, 6511, -1, 6512, -1, + -1, 6513, -1, 6514, 6515, -1, -1, -1, + /* 0x7e00 */ + -1, 6517, -1, -1, 6519, -1, -1, -1, + 6521, 6522, 6523, 6524, -1, -1, -1, -1, + 6525, 6526, -1, -1, -1, 6527, -1, 6529, + 6530, -1, -1, 6533, -1, 6534, 6535, 6536, + -1, -1, -1, 6537, -1, -1, 6539, 6541, + 6543, -1, -1, 6544, -1, 6545, 6546, -1, + -1, 6547, 6549, -1, 6552, 6553, 6554, 6556, + -1, 6557, -1, -1, -1, 6558, 6563, -1, + -1, 6564, -1, 6565, -1, 6567, 6569, -1, + 6570, -1, 6571, 6574, -1, 6577, -1, -1, + -1, -1, 6579, -1, 6580, 6581, 6582, -1, + -1, 6584, 6585, 6586, -1, -1, 6587, -1, + -1, 6588, 6590, -1, 6591, -1, 6592, -1, + -1, 6593, 6595, 6597, -1, 6600, 6603, 6605, + 6606, -1, -1, 6609, -1, -1, -1, -1, + -1, 6610, -1, -1, 6611, 6613, 6614, 6615, + -1, -1, 6616, 6617, -1, -1, -1, 6618, + 6619, 6620, 6622, -1, 6624, 6627, 6628, 6631, + -1, -1, 6633, 6635, 6636, -1, 6637, -1, + 6640, -1, -1, -1, 6642, 6643, -1, 6646, + 6648, 6649, 6650, 6651, 6652, 6656, 6657, 6658, + 6659, 6660, 6662, 6663, 6664, 6665, 6666, 6667, + 6668, 6669, 6670, 6671, 6672, 6673, 6675, 6676, + 6677, 6678, 6679, 6680, 6681, 6682, 6683, 6684, + 6688, 6689, 6691, 6692, 6693, 6694, 6695, 6696, + 6697, 6698, 6699, 6700, 6701, 6702, 6703, 6704, + 6706, 6707, 6708, 6709, 6710, 6711, 6713, 6714, + 6715, 6717, 6718, 6719, 6720, 6721, 6724, 6725, + 6727, 6728, 6729, 6730, 6733, 6734, 6735, 6737, + 6739, 6740, 6741, 6743, -1, 6744, 6746, 6747, + 6748, 6749, 6750, 6751, 6753, 6754, 6756, 6757, + 6759, 6761, 6762, 6763, 6764, 6765, 6766, 6767, + /* 0x7f00 */ + 6769, 6770, 6771, 6772, 6773, 6774, 6775, 6776, + 6777, 6778, 6779, 6781, 6782, 6783, 6784, 6785, + 6786, 6790, 6791, 6792, 6793, 6794, 6795, 6796, + 6797, 6799, 6800, 6801, 6802, 6803, 6804, 6805, + 6806, 6808, 6809, 6810, 6811, 6812, 6813, 6814, + 6817, 6818, 6819, 6820, 6822, 6823, 6824, 6825, + 6826, 6828, 6829, 6830, 6831, 6832, 6834, 6837, + 6838, 6839, 6840, 6842, 6843, 6845, 6848, -1, + -1, -1, 6850, -1, -1, -1, -1, 6852, + 6853, -1, -1, -1, 6858, -1, 6860, -1, + 6865, 6867, 6870, 6872, -1, -1, -1, 6874, + -1, -1, 6877, -1, -1, -1, -1, -1, + -1, -1, 6879, -1, -1, -1, -1, -1, + -1, -1, 6880, -1, -1, -1, -1, -1, + 6882, -1, -1, -1, 6884, 6885, 6888, 6889, + 6890, -1, -1, -1, -1, -1, -1, -1, + 6892, 6893, -1, 6895, -1, 6897, 6898, 6899, + 6902, -1, 6906, 6907, 6908, -1, -1, -1, + 6909, 6910, -1, -1, -1, -1, -1, 6911, + -1, -1, -1, -1, -1, -1, -1, 6912, + -1, 6913, -1, 6914, 6915, 6916, -1, -1, + 6917, 6918, 6919, -1, -1, -1, 6921, -1, + -1, -1, -1, -1, 6922, -1, 6924, -1, + -1, 6926, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 6927, 6929, 6931, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 6932, -1, -1, -1, -1, -1, + 6933, 6934, 6935, -1, -1, -1, -1, -1, + 6936, -1, -1, -1, 6937, -1, -1, -1, + -1, -1, -1, 6939, 6940, -1, -1, -1, + -1, 6941, -1, 6942, -1, -1, -1, -1, + -1, 6943, 6944, 6945, -1, 6947, -1, -1, + /* 0x8000 */ + 6948, -1, -1, 6949, -1, -1, -1, 6950, + 6951, -1, 6952, 6953, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 6954, -1, -1, + 6955, -1, -1, -1, 6956, -1, -1, -1, + -1, 6957, 6958, -1, 6959, -1, -1, 6960, + 6961, -1, -1, -1, 6963, -1, 6964, -1, + 6965, -1, -1, -1, -1, -1, -1, -1, + 6966, -1, -1, 6967, 6968, 6969, -1, -1, + 6970, -1, 6973, 6974, -1, -1, -1, -1, + -1, -1, -1, 6975, 6976, 6979, -1, -1, + -1, -1, -1, -1, 6980, -1, 6982, -1, + -1, -1, -1, -1, -1, -1, 6984, 6985, + -1, 6987, -1, -1, -1, -1, 6990, -1, + 6993, 6995, 6996, 6999, -1, 7000, 7002, 7003, + 7007, -1, 7010, 7011, 7012, 7014, 7015, 7016, + -1, 7019, -1, -1, -1, 7020, 7022, -1, + -1, -1, -1, 7023, -1, 7025, -1, 7027, + 7028, 7029, -1, -1, -1, -1, 7030, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 7031, 7033, -1, -1, 7034, -1, -1, 7035, + -1, -1, -1, -1, 7036, -1, 7037, 7038, + -1, 7040, 7041, -1, 7043, -1, -1, -1, + -1, -1, -1, 7044, -1, -1, 7045, 7046, + 7047, 7048, -1, -1, 7051, -1, 7053, -1, + -1, -1, -1, -1, 7055, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 7056, -1, 7057, -1, -1, -1, + -1, 7058, -1, -1, -1, -1, -1, 7060, + 7061, -1, 7062, 7063, -1, 7065, -1, -1, + -1, -1, -1, -1, -1, -1, 7066, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + /* 0x8100 */ + -1, -1, -1, 7067, -1, 7069, 7071, 7073, + 7074, 7075, -1, 7076, -1, 7078, -1, 7079, + 7082, 7083, -1, 7085, 7086, -1, -1, 7087, + -1, -1, 7088, 7090, -1, -1, -1, -1, + -1, -1, -1, 7092, -1, -1, -1, -1, + -1, 7093, -1, 7094, -1, -1, -1, -1, + -1, 7095, -1, 7096, -1, 7099, 7100, -1, + 7101, 7102, 7104, -1, -1, -1, 7106, -1, + -1, -1, -1, -1, -1, -1, 7107, -1, + -1, -1, 7108, -1, 7110, -1, 7111, -1, + -1, -1, -1, -1, -1, -1, 7112, 7113, + 7114, -1, -1, -1, -1, -1, -1, 7115, + -1, 7116, -1, -1, -1, -1, 7117, -1, + -1, -1, -1, 7120, -1, 7121, 7122, -1, + -1, -1, -1, 7123, -1, -1, -1, -1, + 7125, -1, -1, 7127, -1, 7128, 7129, -1, + 7130, -1, 7131, 7132, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 7133, 7134, -1, 7135, -1, 7137, -1, -1, + -1, -1, 7138, -1, -1, -1, -1, -1, + 7139, -1, -1, 7140, 7141, -1, -1, -1, + -1, 7142, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 7143, -1, -1, -1, -1, + 7144, -1, -1, 7146, -1, 7150, 7152, 7153, + 7154, -1, -1, 7155, -1, -1, -1, -1, + 7157, 7159, -1, 7160, -1, 7161, -1, 7162, + -1, -1, -1, 7164, -1, -1, -1, -1, + 7166, 7168, 7169, -1, 7170, -1, 7171, 7172, + 7174, -1, 7175, -1, -1, 7176, -1, -1, + 7177, -1, -1, -1, -1, 7178, -1, -1, + 7179, -1, -1, -1, 7180, -1, -1, -1, + -1, -1, 7181, -1, -1, -1, -1, -1, + /* 0x8200 */ + -1, -1, -1, -1, -1, -1, 7183, 7184, + 7185, 7186, 7189, -1, -1, 7190, 7192, -1, + 7193, -1, -1, 7194, -1, -1, 7195, 7198, + 7201, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 7202, -1, -1, -1, -1, + -1, 7203, -1, -1, -1, -1, 7204, -1, + 7206, 7207, -1, -1, -1, 7208, 7209, -1, + -1, 7210, -1, 7211, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 7213, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 7214, -1, -1, -1, -1, -1, -1, + -1, -1, 7215, 7216, 7218, -1, 7219, -1, + -1, -1, 7220, 7222, -1, -1, -1, -1, + 7224, 7225, -1, 7227, -1, -1, 7231, 7235, + 7239, 7240, 7241, -1, -1, -1, -1, -1, + -1, -1, 7246, -1, -1, -1, -1, -1, + 7247, -1, -1, 7249, 7250, -1, -1, -1, + -1, -1, -1, -1, 7251, -1, -1, 7252, + -1, -1, -1, -1, 7253, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 7254, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 7255, 7256, -1, -1, -1, -1, -1, + 7257, -1, -1, 7264, -1, -1, -1, -1, + -1, 7265, -1, -1, -1, 7266, -1, 7268, + 7269, -1, -1, 7270, 7271, 7272, 7273, 7274, + 7279, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 7280, 7281, -1, -1, -1, -1, 7282, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 7283, -1, -1, -1, -1, -1, -1, + -1, 7284, 7286, -1, -1, 7287, -1, -1, + /* 0x8300 */ + -1, -1, -1, 7288, -1, -1, -1, -1, + -1, -1, 7290, -1, -1, -1, 7292, 7293, + -1, 7294, -1, -1, 7295, 7296, -1, -1, + 7297, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 7298, + -1, -1, -1, -1, -1, -1, -1, 7300, + 7301, -1, 7302, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 7304, 7305, + -1, -1, 7306, -1, -1, -1, -1, -1, + 7307, 7309, -1, -1, 7310, -1, -1, -1, + 7311, 7313, 7314, 7315, 7316, 7317, 7318, 7319, + 7320, 7322, -1, 7325, 7327, 7328, 7329, 7330, + 7331, 7332, 7333, 7334, 7335, 7336, 7337, 7338, + -1, -1, -1, 7341, -1, -1, -1, -1, + -1, 7342, -1, 7343, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 7344, -1, -1, + -1, -1, 7346, -1, -1, -1, -1, -1, + -1, -1, -1, 7348, -1, 7349, 7350, -1, + -1, -1, -1, -1, -1, -1, 7351, -1, + -1, -1, 7352, -1, -1, -1, -1, 7353, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 7354, 7355, 7356, 7357, 7358, 7359, 7360, + 7362, 7363, 7364, -1, 7367, 7369, 7370, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 7371, -1, 7372, 7373, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 7375, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 7376, -1, -1, -1, 7377, + 7380, 7381, -1, -1, 7382, -1, -1, -1, + -1, 7385, -1, -1, -1, -1, -1, -1, + /* 0x8400 */ + -1, -1, -1, -1, -1, -1, -1, 7386, + -1, -1, 7387, -1, 7388, 7389, -1, -1, + -1, -1, -1, -1, -1, 7390, -1, -1, + -1, -1, 7392, -1, -1, 7393, -1, 7394, + 7399, -1, -1, -1, 7400, 7402, 7404, 7405, + 7406, -1, -1, -1, 7407, -1, -1, -1, + -1, 7408, -1, -1, 7411, 7412, -1, -1, + 7413, -1, -1, -1, 7414, -1, -1, -1, + -1, -1, -1, -1, -1, 7415, -1, -1, + -1, 7416, 7417, -1, -1, -1, -1, -1, + -1, -1, 7420, -1, -1, -1, -1, 7421, + 7422, -1, 7423, -1, -1, -1, -1, -1, + 7424, -1, 7425, -1, 7427, -1, 7428, -1, + -1, -1, 7429, -1, 7430, -1, 7431, 7432, + -1, 7433, -1, -1, -1, -1, -1, 7434, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 7435, 7436, -1, -1, -1, 7437, + -1, 7438, -1, 7439, 7440, -1, -1, -1, + 7441, -1, -1, 7442, 7444, -1, -1, -1, + -1, 7445, -1, -1, -1, -1, 7449, -1, + -1, -1, -1, -1, -1, -1, 7451, -1, + 7452, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 7453, + -1, -1, -1, -1, 7454, -1, -1, -1, + 7455, -1, -1, -1, -1, -1, 7456, -1, + -1, -1, -1, 7457, -1, -1, -1, -1, + -1, 7459, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 7461, -1, 7462, + 7463, -1, -1, 7464, -1, 7465, 7466, -1, + -1, -1, -1, -1, -1, 7467, 7470, 7471, + -1, 7472, -1, -1, 7473, -1, -1, -1, + -1, -1, 7475, -1, -1, 7480, -1, -1, + /* 0x8500 */ + -1, -1, -1, -1, -1, 7481, 7483, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 7484, 7485, -1, -1, 7486, 7488, -1, -1, + -1, -1, -1, -1, -1, -1, 7489, -1, + -1, -1, -1, 7490, -1, 7491, 7492, -1, + -1, -1, -1, -1, -1, 7493, -1, 7494, + -1, -1, 7495, 7496, 7497, 7498, 7500, 7502, + -1, 7503, 7504, 7505, 7506, -1, -1, -1, + -1, 7508, -1, -1, -1, -1, 7509, -1, + -1, -1, 7510, 7512, -1, -1, 7514, -1, + 7515, -1, 7517, 7518, -1, 7519, -1, -1, + 7520, -1, 7521, -1, -1, -1, -1, -1, + -1, -1, 7522, -1, -1, -1, -1, -1, + -1, 7523, 7524, -1, -1, 7525, -1, -1, + 7526, -1, 7527, -1, 7528, -1, -1, 7530, + -1, -1, -1, -1, -1, -1, -1, 7531, + 7534, -1, -1, -1, -1, -1, -1, -1, + 7535, -1, 7536, -1, 7538, -1, -1, -1, + -1, 7539, -1, 7540, 7541, -1, -1, 7542, + 7544, -1, -1, -1, -1, -1, -1, 7545, + -1, -1, -1, -1, -1, -1, 7546, -1, + -1, 7548, -1, 7549, 7551, 7553, 7554, 7556, + 7557, -1, 7559, -1, -1, -1, -1, -1, + -1, -1, 7561, -1, 7563, -1, -1, -1, + -1, 7564, 7568, -1, -1, -1, -1, -1, + -1, 7572, -1, -1, -1, 7575, 7576, 7577, + -1, -1, -1, 7579, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 7580, -1, 7585, + -1, -1, -1, -1, 7587, 7588, -1, -1, + -1, -1, 7590, -1, -1, -1, -1, -1, + -1, -1, -1, 7592, 7596, -1, 7598, 7599, + -1, 7600, 7602, -1, 7603, -1, -1, -1, + /* 0x8600 */ + 7606, -1, 7607, -1, 7609, -1, 7610, 7611, + -1, -1, 7615, 7617, -1, 7619, 7621, -1, + 7623, -1, -1, 7626, -1, -1, -1, 7628, + -1, -1, 7629, -1, -1, -1, 7630, -1, + -1, -1, 7631, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 7632, -1, 7633, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 7635, -1, -1, 7636, -1, 7638, + -1, 7639, -1, -1, -1, -1, 7640, -1, + -1, -1, -1, -1, -1, -1, 7642, 7644, + -1, 7645, -1, 7646, -1, 7647, 7649, 7650, + -1, -1, 7652, 7654, 7656, 7657, -1, 7659, + -1, -1, -1, -1, -1, 7660, 7661, 7662, + -1, -1, -1, 7663, 7665, -1, 7666, 7667, + -1, 7668, -1, -1, -1, 7669, -1, -1, + -1, -1, 7671, 7672, -1, 7673, 7674, 7675, + 7676, 7677, 7678, 7679, -1, -1, -1, -1, + -1, -1, 7680, 7682, 7683, -1, -1, -1, + -1, -1, -1, -1, -1, 7684, 7687, -1, + 7688, -1, -1, -1, -1, 7689, -1, -1, + -1, -1, -1, -1, -1, -1, 7690, -1, + -1, -1, -1, 7691, 7692, -1, -1, -1, + -1, -1, -1, -1, 7693, -1, -1, -1, + -1, -1, 7694, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 7695, + -1, -1, 7697, -1, -1, 7698, 7700, 7702, + -1, -1, -1, -1, 7703, -1, -1, -1, + -1, 7706, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 7707, 7708, + 7709, 7710, 7711, 7712, 7713, -1, -1, -1, + -1, -1, 7714, 7715, -1, 7716, -1, -1, + /* 0x8700 */ + -1, -1, 7718, -1, -1, -1, 7719, -1, + -1, -1, -1, 7720, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 7721, 7722, 7723, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 7724, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 7726, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 7727, -1, -1, -1, 7728, -1, -1, + -1, -1, -1, -1, -1, 7729, -1, 7732, + 7734, 7735, -1, 7736, -1, -1, 7738, -1, + -1, -1, -1, -1, -1, 7739, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 7740, + -1, 7741, -1, -1, -1, -1, 7742, -1, + 7743, -1, -1, -1, -1, -1, -1, 7744, + -1, 7745, -1, -1, -1, -1, -1, -1, + 7746, -1, -1, -1, 7747, -1, 7748, 7749, + 7751, -1, 7752, -1, 7753, -1, -1, -1, + 7754, -1, -1, -1, -1, 7755, 7756, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 7757, 7758, -1, -1, -1, -1, 7760, -1, + -1, 7761, 7762, -1, 7764, -1, -1, 7766, + 7767, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 7768, -1, -1, -1, 7769, + -1, 7770, -1, -1, 7771, -1, 7772, 7773, + 7774, -1, -1, -1, -1, -1, 7775, 7776, + -1, -1, 7777, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 7778, -1, -1, -1, -1, + -1, -1, -1, -1, 7779, -1, -1, 7780, + -1, -1, 7781, -1, -1, -1, 7782, -1, + 7783, 7784, -1, 7785, -1, -1, -1, -1, + /* 0x8800 */ + -1, 7787, -1, -1, -1, 7788, 7790, 7791, + -1, -1, -1, -1, -1, 7793, 7794, 7795, + 7796, 7797, 7798, -1, 7801, 7802, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 7803, + -1, 7805, 7806, 7807, -1, -1, -1, 7809, + 7811, -1, -1, -1, -1, 7812, -1, -1, + -1, 7813, -1, -1, -1, -1, 7814, -1, + -1, 7817, 7819, 7822, 7823, -1, -1, -1, + -1, -1, 7825, -1, 7826, 7827, 7828, -1, + -1, 7831, 7833, -1, -1, -1, -1, -1, + -1, -1, -1, 7834, 7835, 7838, 7839, -1, + 7840, -1, 7843, 7844, 7846, 7849, 7850, 7852, + -1, -1, -1, 7855, 7856, 7857, -1, -1, + 7858, -1, -1, -1, 7859, -1, 7860, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 7861, -1, -1, -1, 7862, -1, -1, + -1, -1, -1, -1, 7863, 7864, 7867, -1, + -1, -1, -1, 7868, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 7869, -1, 7872, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 7873, 7875, 7876, 7877, + -1, -1, -1, -1, 7878, 7880, -1, 7881, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 7882, 7883, -1, + 7884, -1, 7885, -1, 7886, -1, -1, 7887, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 7889, -1, -1, 7890, 7891, -1, -1, + 7892, 7893, 7895, 7896, 7897, 7899, 7900, -1, + 7902, -1, -1, -1, -1, 7903, -1, -1, + -1, -1, -1, -1, 7904, 7905, -1, -1, + -1, -1, -1, -1, -1, 7906, -1, -1, + /* 0x8900 */ + -1, -1, -1, -1, -1, -1, -1, 7907, + -1, -1, 7908, -1, 7909, -1, 7910, 7911, + -1, -1, 7912, 7914, -1, -1, -1, -1, + 7915, -1, -1, 7916, -1, 7917, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 7918, -1, -1, -1, -1, + -1, -1, 7919, 7920, 7921, -1, -1, -1, + 7922, -1, -1, 7923, -1, -1, -1, -1, + -1, -1, -1, 7924, -1, -1, -1, 7926, + -1, -1, -1, -1, 7927, 7928, -1, 7929, + -1, -1, -1, -1, -1, 7930, 7931, -1, + -1, -1, -1, -1, -1, 7932, -1, -1, + 7933, -1, -1, -1, 7934, -1, -1, -1, + -1, -1, 7935, -1, 7936, 7937, -1, 7938, + -1, -1, 7939, -1, 7940, -1, -1, -1, + -1, -1, -1, -1, -1, 7942, -1, 7943, + -1, -1, -1, -1, -1, -1, 7945, 7947, + 7948, 7949, 7952, 7956, -1, 7957, 7958, 7959, + 7960, -1, -1, 7963, 7965, -1, 7967, -1, + 7969, -1, 7970, -1, -1, -1, -1, -1, + -1, 7973, -1, -1, -1, 7974, 7975, 7976, + -1, 7978, 7979, -1, 7980, -1, -1, 7981, + 7982, -1, 7983, 7984, -1, -1, 7986, 7987, + -1, -1, 7989, -1, 7993, 7994, -1, 7996, + 7997, 7999, 8000, 8002, 8003, 8004, 8006, 8008, + 8009, 8011, 8014, 8015, 8016, 8017, 8018, 8019, + 8020, 8021, -1, -1, 8022, -1, -1, 8023, + -1, -1, -1, -1, -1, 8025, 8026, -1, + -1, -1, -1, 8027, -1, -1, 8028, 8029, + -1, -1, -1, -1, -1, -1, -1, 8030, + -1, -1, -1, -1, 8032, -1, 8033, -1, + 8035, 8036, -1, -1, -1, 8038, -1, 8040, + /* 0x8a00 */ + 8042, 8044, 8046, 8047, -1, -1, -1, -1, + 8048, -1, 8049, -1, 8050, -1, 8051, -1, + 8052, -1, 8053, 8054, -1, 8055, 8056, 8057, + 8059, -1, 8060, 8061, -1, 8062, -1, 8063, + 8064, 8066, 8068, 8069, -1, 8070, -1, -1, + -1, 8071, 8072, 8073, -1, 8074, -1, -1, + -1, 8075, -1, 8076, 8078, -1, 8079, -1, + -1, -1, 8081, 8082, 8083, 8085, -1, -1, + -1, 8086, -1, -1, -1, -1, 8087, -1, + -1, -1, -1, 8089, -1, 8091, 8092, -1, + 8093, -1, 8094, -1, 8095, 8096, 8097, 8098, + 8099, -1, -1, 8100, -1, -1, 8101, 8102, + 8103, 8104, 8105, 8106, -1, -1, 8107, 8108, + -1, 8109, -1, 8110, 8111, 8113, 8114, -1, + 8115, 8116, 8118, 8119, -1, 8120, -1, -1, + -1, -1, -1, -1, 8121, -1, -1, 8122, + -1, -1, -1, -1, 8123, 8124, 8125, 8126, + -1, 8127, 8128, -1, 8129, 8130, -1, -1, + -1, 8131, 8132, -1, -1, 8133, 8134, -1, + 8136, -1, 8138, -1, -1, -1, 8139, -1, + 8140, 8141, -1, 8142, 8143, 8144, 8145, -1, + 8146, -1, 8147, -1, 8149, 8151, -1, 8153, + 8154, -1, 8155, -1, -1, -1, 8156, -1, + -1, 8157, -1, -1, 8158, -1, 8160, 8161, + -1, -1, 8162, -1, 8163, -1, -1, 8164, + -1, 8165, -1, 8166, 8167, 8169, -1, 8170, + -1, 8171, 8172, -1, -1, -1, 8173, 8174, + -1, -1, -1, 8175, 8176, 8177, 8178, -1, + 8179, 8181, 8183, -1, 8184, -1, 8186, 8187, + -1, 8188, -1, 8189, 8191, 8197, 8198, -1, + -1, 8199, -1, 8200, -1, -1, 8202, 8203, + 8205, -1, 8206, -1, 8207, -1, 8209, -1, + /* 0x8b00 */ + 8210, 8211, 8212, -1, 8213, 8214, -1, -1, + -1, -1, 8215, -1, 8216, -1, 8217, -1, + 8218, -1, -1, -1, 8219, -1, 8220, 8221, + -1, 8222, 8223, 8225, -1, 8226, -1, -1, + 8227, 8229, -1, -1, -1, -1, -1, -1, + 8231, -1, 8232, 8233, 8235, 8236, -1, -1, + 8238, -1, -1, 8239, -1, -1, -1, -1, + -1, 8240, -1, -1, 8241, -1, 8243, -1, + -1, 8244, -1, -1, -1, -1, -1, -1, + -1, 8246, -1, -1, 8248, -1, 8249, 8250, + 8251, -1, -1, -1, -1, -1, 8252, -1, + 8254, 8255, 8256, 8257, 8259, -1, -1, 8261, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 8262, 8264, -1, 8266, 8267, 8269, + 8271, 8272, 8273, -1, 8275, -1, -1, 8276, + 8277, -1, -1, -1, 8278, 8280, 8281, -1, + 8283, 8285, -1, 8287, -1, 8289, -1, -1, + -1, -1, 8290, 8292, 8293, 8295, 8297, -1, + 8300, -1, 8302, 8303, -1, 8305, 8306, -1, + -1, -1, 8307, -1, 8309, -1, 8310, -1, + 8311, 8313, 8314, 8315, 8316, 8317, 8318, 8319, + 8320, 8321, 8323, 8324, 8325, 8327, 8328, 8329, + 8330, 8331, 8332, 8333, 8334, 8335, 8336, 8337, + 8338, 8339, 8341, 8342, 8343, 8344, 8346, 8347, + 8348, 8349, 8351, 8352, 8353, 8354, 8355, 8356, + 8357, 8358, 8359, 8360, 8361, 8362, 8363, 8364, + 8365, 8366, 8368, 8369, 8370, 8371, 8372, 8373, + 8374, 8375, 8376, 8377, 8378, 8379, 8381, 8382, + 8383, 8384, 8385, 8386, 8387, 8388, 8389, 8390, + 8391, 8392, 8393, 8394, 8395, 8396, 8397, 8398, + 8400, 8401, 8403, 8404, 8405, 8407, 8408, 8409, + 8410, 8411, 8412, 8413, 8415, 8416, 8417, 8418, + /* 0x8c00 */ + 8419, 8420, 8421, 8422, 8423, 8424, 8425, 8426, + 8427, 8428, 8429, 8431, 8432, 8433, 8434, 8435, + 8437, 8438, 8439, 8440, 8441, 8443, 8444, 8446, + 8447, 8448, 8450, 8451, 8452, 8453, 8454, 8455, + 8456, 8457, 8458, 8459, 8461, 8462, 8464, 8465, + 8466, 8467, 8468, 8470, 8472, 8473, 8474, 8476, + 8477, 8478, 8479, 8480, 8481, 8482, 8483, 8484, + -1, -1, 8486, -1, -1, -1, -1, 8487, + 8490, -1, -1, -1, -1, -1, 8493, -1, + 8494, -1, 8495, -1, -1, -1, 8499, -1, + 8501, -1, -1, 8505, 8509, -1, -1, -1, + 8513, -1, 8514, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 8515, -1, -1, -1, + -1, -1, -1, 8516, 8517, -1, 8518, -1, + -1, -1, -1, -1, -1, -1, 8519, -1, + -1, -1, 8520, 8521, 8522, -1, 8523, -1, + -1, -1, 8524, -1, -1, -1, -1, 8525, + -1, 8526, -1, 8527, 8528, 8529, 8531, -1, + -1, -1, 8532, 8533, 8534, -1, -1, -1, + 8535, -1, -1, 8536, 8537, 8539, 8541, 8542, + 8545, 8546, 8548, -1, -1, -1, -1, 8549, + 8550, 8551, 8552, 8553, 8554, 8555, 8558, 8561, + 8562, -1, 8563, 8564, 8567, -1, 8568, 8569, + 8570, -1, 8571, 8572, 8573, 8574, -1, 8575, + 8576, 8577, 8578, 8579, 8580, 8581, -1, 8582, + 8583, 8584, 8586, 8587, -1, 8588, 8590, -1, + -1, 8592, 8593, 8594, 8596, 8598, 8599, -1, + -1, 8600, 8601, 8602, 8604, -1, 8605, -1, + 8606, 8607, 8610, 8612, 8614, -1, 8616, 8617, + -1, -1, 8618, 8621, 8622, 8623, -1, -1, + 8624, -1, -1, -1, 8625, 8627, -1, 8628, + -1, -1, 8630, 8631, 8632, 8633, 8634, -1, + /* 0x8d00 */ + -1, 8635, -1, -1, 8637, 8638, -1, 8639, + 8640, -1, 8641, 8643, -1, 8646, -1, 8647, + 8648, -1, 8649, 8651, 8653, -1, 8654, 8655, + -1, -1, -1, 8658, 8659, 8660, 8662, 8663, + 8664, 8667, 8668, 8670, 8671, 8673, 8675, 8676, + 8677, 8679, 8680, 8681, 8682, 8683, 8684, 8685, + 8686, 8689, 8691, 8692, 8693, 8694, 8695, 8696, + 8697, 8698, 8699, 8700, 8701, 8702, 8703, 8704, + 8705, 8706, 8707, 8708, 8711, 8712, 8713, 8714, + 8715, 8716, 8717, 8719, 8720, 8721, 8724, 8725, + 8726, 8727, 8728, 8729, 8730, 8731, 8732, 8734, + 8735, 8736, 8737, 8738, 8739, 8740, 8743, 8747, + 8748, 8749, 8750, 8751, 8752, -1, -1, -1, + -1, -1, 8754, -1, 8755, -1, -1, -1, + 8756, 8757, -1, -1, -1, 8758, 8759, -1, + -1, -1, -1, 8760, -1, -1, -1, 8765, + -1, 8766, 8767, -1, -1, -1, -1, -1, + -1, -1, -1, 8768, -1, -1, -1, -1, + -1, 8769, -1, -1, -1, 8770, -1, -1, + -1, 8771, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 8772, -1, + 8773, -1, -1, -1, 8774, -1, -1, 8775, + -1, 8777, 8778, -1, -1, -1, -1, -1, + 8779, -1, -1, 8780, -1, -1, -1, -1, + -1, -1, -1, 8781, 8783, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 8784, -1, + -1, 8785, -1, -1, -1, 8786, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 8787, 8788, 8789, 8790, + 8791, 8792, 8793, 8794, 8795, -1, -1, -1, + /* 0x8e00 */ + -1, 8796, -1, -1, -1, -1, -1, -1, + 8798, -1, 8800, 8801, 8803, -1, -1, -1, + 8804, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 8805, 8806, 8807, 8808, 8809, -1, -1, 8810, + 8811, -1, -1, -1, 8812, -1, -1, -1, + 8813, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 8814, -1, -1, -1, + -1, -1, -1, 8815, 8817, -1, -1, 8818, + -1, 8819, 8820, -1, -1, 8821, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 8822, + -1, -1, -1, 8823, 8824, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 8826, -1, -1, -1, -1, -1, -1, -1, + -1, 8828, 8830, -1, -1, -1, -1, 8832, + -1, -1, 8833, 8834, 8835, -1, -1, 8836, + -1, 8837, 8838, 8841, -1, 8843, -1, 8845, + -1, 8846, 8847, 8848, -1, 8849, -1, -1, + -1, 8851, 8852, -1, 8853, -1, -1, -1, + -1, 8854, 8855, -1, -1, 8857, 8858, -1, + -1, -1, 8859, -1, 8861, 8862, -1, 8863, + 8864, 8868, 8869, 8870, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 8871, -1, -1, -1, 8872, -1, 8875, -1, + -1, -1, 8879, 8880, 8881, 8882, -1, -1, + -1, 8883, 8884, -1, 8885, -1, -1, -1, + -1, -1, -1, 8886, -1, -1, -1, 8889, + -1, -1, 8890, 8892, 8894, -1, -1, -1, + -1, -1, -1, 8895, -1, -1, -1, -1, + 8896, -1, 8898, -1, -1, -1, 8899, -1, + 8902, 8903, 8904, 8905, 8906, 8907, 8909, -1, + /* 0x8f00 */ + 8910, -1, -1, 8911, -1, 8912, -1, 8913, + 8914, 8915, 8916, -1, 8917, -1, -1, 8919, + -1, -1, 8920, 8922, 8923, 8925, -1, -1, + -1, 8927, -1, 8929, 8931, 8933, 8934, 8935, + -1, 8936, -1, -1, -1, 8937, 8938, -1, + -1, 8939, 8941, -1, 8942, 8943, -1, 8944, + -1, -1, -1, 8945, -1, -1, 8946, -1, + 8947, -1, 8948, 8950, 8951, -1, 8952, 8953, + -1, 8954, 8957, -1, 8958, 8960, 8961, -1, + -1, 8962, -1, -1, -1, 8964, 8965, -1, + -1, -1, -1, -1, 8966, -1, -1, 8967, + -1, -1, -1, -1, 8968, -1, -1, 8969, + -1, 8971, 8972, -1, 8973, -1, 8974, 8975, + 8976, 8977, 8978, 8979, 8980, 8982, 8985, 8986, + 8988, 8990, 8991, 8992, 8993, 8994, 8995, 8996, + 8997, 8998, 8999, 9000, 9002, 9003, 9004, 9005, + 9006, 9007, 9008, 9009, 9010, 9012, 9013, 9015, + 9016, 9018, 9019, 9020, 9021, 9022, 9023, 9025, + 9026, 9027, 9028, 9029, 9030, 9031, 9032, 9033, + 9034, 9035, 9036, -1, -1, 9037, 9040, 9043, + 9044, 9046, -1, -1, 9049, -1, 9052, 9053, + 9055, 9057, -1, 9060, -1, 9061, 9064, 9065, + -1, -1, 9068, -1, -1, 9069, 9070, -1, + -1, 9071, 9074, -1, -1, 9077, 9078, -1, + -1, 9080, 9081, 9082, -1, -1, 9083, 9084, + 9085, -1, 9086, -1, -1, -1, -1, -1, + 9088, -1, -1, -1, -1, -1, -1, -1, + 9089, 9090, -1, 9091, 9092, 9093, 9094, 9095, + -1, -1, -1, -1, 9098, 9099, -1, -1, + -1, 9100, 9101, -1, 9102, -1, -1, 9103, + -1, -1, -1, 9104, 9107, -1, -1, -1, + -1, 9113, 9115, -1, -1, -1, -1, -1, + /* 0x9000 */ + -1, -1, 9117, 9118, -1, -1, -1, -1, + 9119, 9120, 9121, -1, -1, -1, 9122, -1, + -1, -1, 9123, 9125, -1, 9127, -1, -1, + -1, 9130, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 9131, -1, 9132, 9138, -1, + -1, 9139, -1, -1, -1, -1, -1, -1, + 9140, 9142, 9143, -1, -1, -1, -1, -1, + -1, 9144, 9146, 9147, 9148, -1, -1, -1, + -1, 9149, -1, -1, -1, 9150, -1, -1, + -1, 9152, 9154, 9156, -1, -1, 9157, -1, + -1, -1, 9158, 9159, 9162, 9164, -1, 9165, + -1, 9166, -1, -1, 9167, -1, 9168, -1, + 9170, 9172, -1, -1, -1, 9173, -1, -1, + -1, 9174, -1, -1, -1, -1, -1, 9175, + -1, -1, 9176, -1, -1, -1, 9178, 9179, + 9180, -1, 9181, -1, 9182, -1, -1, -1, + -1, 9183, -1, -1, 9184, -1, -1, 9185, + -1, 9186, 9189, -1, -1, -1, -1, 9192, + 9193, 9194, -1, 9195, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 9196, -1, -1, + -1, -1, -1, -1, -1, -1, 9197, -1, + 9198, -1, -1, 9199, 9200, -1, 9201, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 9202, 9203, 9204, -1, 9207, -1, -1, + -1, 9208, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 9211, -1, 9212, 9214, + 9215, 9216, 9217, 9219, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 9220, 9222, + -1, -1, -1, -1, -1, -1, 9223, 9224, + 9225, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 9226, 9227, 9228, + 9232, -1, -1, -1, -1, -1, -1, -1, + /* 0x9100 */ + -1, -1, -1, -1, -1, -1, 9233, -1, + -1, 9234, 9238, -1, -1, -1, -1, -1, + -1, -1, 9242, -1, 9243, 9244, 9248, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 9249, + -1, -1, -1, -1, -1, 9250, -1, -1, + 9251, -1, 9254, -1, 9255, -1, 9256, 9257, + -1, -1, 9258, -1, 9259, 9260, -1, -1, + -1, -1, 9263, -1, -1, -1, 9264, 9265, + 9267, 9268, -1, 9269, -1, -1, -1, -1, + -1, -1, -1, -1, 9270, -1, -1, -1, + -1, 9271, -1, -1, -1, 9272, -1, -1, + -1, -1, 9274, -1, -1, -1, 9275, 9278, + -1, -1, 9280, -1, 9281, -1, -1, -1, + -1, 9283, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 9285, 9286, 9287, + -1, -1, -1, 9289, -1, -1, -1, 9290, + -1, 9291, 9292, 9293, -1, -1, 9294, -1, + -1, -1, -1, -1, 9296, 9297, 9298, 9300, + 9303, -1, -1, -1, 9304, -1, 9306, -1, + -1, -1, -1, -1, 9308, -1, -1, -1, + -1, -1, -1, 9310, 9312, -1, -1, -1, + -1, 9314, -1, -1, -1, -1, -1, -1, + 9317, -1, -1, 9319, 9321, -1, -1, -1, + 9323, 9325, -1, 9326, -1, 9327, -1, 9328, + 9330, -1, 9332, 9334, 9336, -1, 9338, -1, + 9340, 9341, 9343, 9345, 9348, 9349, 9350, 9352, + 9353, 9354, 9355, -1, 9357, 9358, -1, -1, + 9359, 9361, -1, 9362, 9364, -1, 9365, 9366, + -1, 9367, -1, -1, -1, -1, -1, 9368, + 9369, -1, -1, -1, -1, 9377, -1, 9378, + -1, 9379, 9380, 9381, 9384, -1, -1, -1, + /* 0x9200 */ + 9392, 9393, -1, 9394, 9395, 9396, 9397, -1, + 9399, 9400, -1, -1, -1, 9401, 9402, -1, + 9404, 9405, 9406, -1, 9407, 9408, -1, -1, + -1, -1, -1, -1, -1, -1, 9409, 9411, + -1, 9412, -1, 9413, -1, 9414, 9415, 9416, + 9417, 9418, -1, -1, 9420, -1, 9422, -1, + 9424, -1, -1, 9425, 9426, -1, -1, 9427, + 9428, 9429, 9430, -1, -1, 9431, 9432, 9433, + 9434, -1, -1, -1, 9435, 9440, 9441, 9442, + 9443, 9444, -1, 9445, -1, 9447, -1, -1, + -1, 9448, -1, -1, -1, 9449, -1, 9450, + -1, -1, 9451, 9452, -1, -1, 9454, -1, + 9455, -1, 9456, -1, 9459, -1, 9461, -1, + 9462, -1, -1, -1, 9464, 9465, -1, -1, + -1, 9466, -1, -1, 9471, -1, 9475, -1, + 9476, -1, 9477, 9478, -1, -1, -1, 9479, + 9480, -1, -1, 9481, -1, 9482, -1, -1, + -1, -1, -1, -1, -1, 9483, -1, -1, + -1, 9484, -1, 9485, -1, 9486, 9490, -1, + 9491, -1, 9492, 9494, 9496, -1, 9499, -1, + 9500, -1, -1, 9501, -1, 9502, 9503, -1, + 9504, 9505, 9506, 9507, 9508, 9509, 9511, -1, + -1, 9512, 9513, 9514, -1, -1, -1, 9516, + -1, 9518, -1, 9519, 9520, 9521, -1, -1, + -1, 9522, -1, 9523, -1, 9524, -1, 9525, + -1, -1, -1, -1, 9526, -1, -1, 9527, + -1, -1, 9528, -1, -1, -1, -1, -1, + -1, 9529, -1, 9530, -1, 9535, -1, 9536, + -1, -1, -1, 9538, 9540, 9541, 9542, -1, + 9543, 9548, 9550, -1, -1, 9553, 9555, 9556, + 9557, 9558, -1, 9559, -1, -1, 9561, -1, + 9562, -1, -1, -1, 9563, -1, -1, -1, + /* 0x9300 */ + -1, 9564, -1, -1, 9565, -1, 9567, 9568, + 9569, -1, -1, -1, -1, -1, -1, 9570, + 9572, -1, 9573, -1, -1, 9574, -1, -1, + 9575, 9576, 9578, 9579, -1, -1, -1, 9580, + 9581, 9582, 9583, -1, -1, -1, 9585, -1, + 9586, 9587, -1, 9588, 9589, -1, 9592, 9593, + -1, -1, 9594, 9596, -1, -1, 9597, 9598, + 9599, -1, -1, -1, -1, -1, 9600, -1, + 9601, 9602, -1, 9603, -1, -1, 9604, 9605, + 9606, -1, 9608, 9611, -1, 9612, -1, -1, + -1, -1, -1, -1, 9613, -1, -1, -1, + 9614, -1, 9615, 9616, -1, -1, 9618, -1, + 9619, -1, -1, -1, 9621, 9622, -1, -1, + -1, 9623, -1, -1, 9624, -1, -1, 9625, + 9627, -1, -1, 9628, -1, 9632, 9633, -1, + -1, -1, 9634, -1, -1, -1, 9635, 9637, + -1, 9638, 9639, -1, 9640, -1, -1, 9641, + -1, -1, 9642, 9643, 9644, -1, -1, -1, + -1, -1, 9646, -1, 9648, -1, 9650, 9652, + 9653, -1, 9654, 9655, -1, -1, -1, -1, + -1, 9656, 9658, 9659, -1, -1, 9660, 9662, + -1, 9663, 9664, -1, 9665, 9666, 9668, -1, + 9670, -1, -1, 9671, -1, 9672, -1, -1, + 9673, -1, 9674, -1, -1, -1, -1, 9675, + -1, 9676, -1, 9677, -1, -1, -1, 9678, + 9679, -1, -1, -1, 9680, 9681, -1, -1, + 9682, 9683, -1, 9684, -1, -1, -1, 9685, + 9686, -1, -1, -1, 9687, 9688, 9689, 9690, + -1, 9694, 9696, -1, 9697, 9698, -1, -1, + 9700, -1, -1, -1, -1, -1, -1, -1, + 9701, -1, -1, -1, -1, 9702, -1, 9703, + -1, 9704, -1, -1, -1, 9705, -1, -1, + /* 0x9400 */ + -1, -1, 9707, 9709, -1, -1, -1, -1, + -1, -1, -1, 9710, -1, -1, -1, -1, + 9711, -1, 9712, 9713, 9714, -1, -1, 9715, + 9716, 9717, 9718, -1, -1, 9720, -1, -1, + 9722, 9723, -1, -1, -1, -1, 9728, 9729, + 9730, -1, -1, 9731, -1, -1, 9732, -1, + -1, -1, 9734, 9735, -1, 9736, 9741, -1, + 9742, -1, 9744, -1, -1, -1, -1, 9745, + -1, -1, -1, 9746, 9748, 9750, -1, -1, + -1, -1, 9751, -1, 9752, -1, -1, -1, + -1, 9753, 9757, 9761, 9762, 9763, -1, -1, + -1, -1, 9764, 9766, 9771, -1, 9773, -1, + 9774, -1, -1, 9775, 9776, 9777, -1, -1, + -1, -1, 9778, -1, 9780, 9784, -1, 9785, + 9786, 9787, 9788, -1, -1, 9789, -1, 9791, + -1, 9792, -1, -1, 9793, 9794, 9796, 9797, + -1, 9798, 9800, -1, -1, 9801, 9803, 9806, + 9807, 9808, 9809, 9810, 9811, 9812, 9813, 9814, + 9815, 9816, 9817, 9818, 9819, 9820, 9821, 9822, + 9823, 9824, 9825, 9826, 9827, 9828, 9829, 9830, + 9834, 9835, 9836, 9837, 9838, 9839, 9841, 9842, + 9843, 9844, 9846, 9847, 9848, 9849, 9850, 9851, + 9852, 9853, 9855, 9856, 9857, 9858, 9861, 9862, + 9863, 9864, 9865, 9866, 9869, 9870, 9871, 9872, + 9873, 9874, 9877, 9878, 9879, 9880, 9882, 9883, + 9885, 9886, 9887, 9889, 9890, 9892, 9893, 9895, + 9896, 9897, 9898, 9899, 9900, 9902, 9903, 9904, + 9905, 9906, 9907, 9908, 9909, 9910, 9911, 9912, + 9913, 9914, 9915, 9916, 9917, 9918, 9919, 9920, + 9921, 9922, 9923, 9924, 9926, 9927, 9928, 9929, + 9930, 9931, 9932, 9936, 9937, 9938, 9939, 9940, + 9941, 9943, 9944, 9947, 9948, 9949, 9950, 9951, + /* 0x9500 */ + 9953, 9954, 9955, 9956, 9957, 9959, 9960, 9961, + 9962, 9965, 9966, 9967, 9968, 9969, 9970, 9971, + 9973, 9975, 9976, 9977, 9978, 9979, 9980, 9981, + 9982, 9983, 9984, 9985, 9986, 9987, 9988, 9989, + 9990, 9991, 9992, 9993, 9994, 9996, 9997, 9998, + 9999, 10000, 10001, 10003, 10004, 10005, 10006, 10007, + 10008, 10009, 10010, 10011, 10012, 10013, 10014, 10015, + 10016, 10017, 10018, 10020, 10021, 10022, 10023, 10024, + 10025, 10026, 10027, 10028, 10029, 10030, 10031, 10032, + 10034, 10035, 10036, 10037, 10038, 10040, 10041, 10042, + 10044, 10045, 10046, 10047, 10048, -1, 10049, 10050, + 10051, 10052, 10053, 10054, 10055, 10056, 10057, 10058, + 10059, 10060, 10061, 10063, 10064, 10065, 10066, 10067, + 10068, 10069, 10070, 10071, 10072, 10073, 10074, 10075, + 10076, 10078, 10079, 10080, 10081, 10082, 10083, 10084, + 10088, 10092, -1, -1, -1, -1, -1, 10094, + 10098, -1, 10099, 10100, -1, -1, 10101, 10102, + 10104, 10105, -1, 10107, 10108, -1, 10109, 10110, + -1, 10112, 10114, 10116, 10117, -1, -1, -1, + 10118, 10119, -1, -1, -1, -1, -1, -1, + 10121, 10123, 10124, 10127, 10128, 10129, -1, 10130, + 10131, 10132, -1, 10133, 10134, 10135, -1, -1, + -1, 10136, 10138, -1, 10140, -1, 10142, -1, + -1, 10143, -1, 10145, 10146, 10147, 10148, 10149, + -1, -1, -1, 10150, -1, -1, 10152, 10153, + 10154, -1, 10155, 10157, 10158, 10159, -1, -1, + 10160, -1, 10161, 10162, 10163, 10164, 10165, 10166, + 10169, 10174, -1, -1, 10180, -1, 10183, -1, + 10184, 10185, 10186, -1, 10187, 10188, -1, -1, + 10189, 10190, 10191, 10192, 10193, 10194, 10196, 10197, + 10198, 10200, 10201, 10203, 10204, 10205, 10206, 10207, + 10208, 10209, 10211, 10212, 10213, 10214, 10215, 10216, + /* 0x9600 */ + 10217, 10218, 10219, 10220, 10221, 10222, 10224, 10225, + 10226, 10227, 10229, 10230, 10231, 10232, 10233, 10234, + 10235, 10236, 10237, 10239, 10240, 10242, 10243, 10244, + 10245, 10246, 10247, 10249, 10250, 10251, -1, 10253, + -1, -1, -1, -1, -1, 10254, 10258, -1, + 10260, 10261, 10263, 10265, 10267, -1, -1, 10268, + -1, 10269, -1, 10270, 10272, 10276, 10277, -1, + 10279, -1, -1, 10280, -1, -1, -1, -1, + 10281, 10283, -1, -1, -1, 10285, 10286, 10287, + 10288, 10289, -1, -1, -1, 10290, -1, -1, + -1, -1, -1, -1, -1, 10291, 10294, -1, + 10295, -1, -1, -1, 10296, 10298, 10299, 10301, + -1, -1, -1, 10302, -1, 10304, 10305, -1, + 10312, 10313, -1, -1, -1, -1, -1, -1, + 10316, -1, -1, 10320, -1, -1, -1, 10321, + 10322, -1, 10323, 10326, -1, 10328, -1, 10330, + -1, 10332, 10334, -1, 10338, -1, -1, -1, + -1, -1, 10340, -1, 10341, -1, 10342, 10344, + 10345, -1, -1, -1, -1, 10348, 10350, -1, + -1, 10351, -1, 10352, -1, 10353, -1, 10360, + 10361, -1, -1, 10364, -1, -1, -1, -1, + 10367, -1, 10368, 10371, -1, -1, 10373, 10374, + -1, 10381, 10384, -1, 10385, -1, 10386, 10388, + 10390, -1, 10392, 10399, -1, 10400, 10401, -1, + -1, 10402, -1, -1, -1, -1, -1, 10404, + -1, -1, -1, 10406, -1, 10407, -1, 10408, + -1, 10409, -1, -1, -1, 10411, 10414, -1, + -1, 10415, 10416, 10417, 10419, 10421, 10422, 10425, + 10426, -1, 10428, 10429, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 10430, -1, 10431, 10432, -1, -1, 10433, 10434, + -1, -1, 10435, 10437, -1, -1, 10438, -1, + /* 0x9700 */ + -1, 10440, -1, -1, -1, -1, -1, -1, + -1, 10441, 10442, -1, -1, -1, -1, -1, + -1, 10445, -1, -1, -1, -1, -1, 10446, + -1, -1, 10447, 10450, -1, -1, -1, -1, + -1, 10453, 10454, -1, -1, -1, -1, 10455, + -1, -1, -1, -1, -1, 10458, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 10459, -1, -1, 10460, -1, 10464, -1, -1, + -1, 10465, 10466, -1, 10467, -1, 10468, -1, + 10469, 10472, 10473, -1, -1, 10477, 10484, 10491, + -1, 10498, 10500, 10502, 10503, -1, -1, -1, + -1, 10506, 10507, -1, 10508, 10509, -1, -1, + -1, -1, 10512, 10518, 10519, 10521, -1, 10522, + 10523, -1, -1, 10524, -1, 10526, -1, -1, + -1, 10529, -1, -1, 10532, -1, -1, -1, + -1, -1, -1, -1, -1, 10533, -1, -1, + 10534, -1, -1, -1, -1, -1, -1, -1, + -1, 10536, -1, 10538, 10539, 10540, -1, 10541, + -1, 10542, 10543, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 10544, + -1, -1, -1, -1, -1, -1, 10545, 10547, + 10549, -1, -1, -1, -1, -1, -1, 10550, + -1, 10551, 10553, -1, -1, 10554, -1, -1, + -1, 10555, -1, -1, -1, 10556, 10557, -1, + -1, 10558, -1, 10560, -1, -1, 10561, -1, + 10562, 10564, -1, 10565, 10566, 10567, -1, -1, + -1, -1, -1, 10569, -1, -1, -1, -1, + -1, 10570, -1, -1, 10571, 10574, 10575, -1, + -1, -1, -1, -1, 10576, -1, 10578, 10579, + 10582, 10584, 10585, 10586, 10587, 10589, 10590, 10591, + -1, 10592, 10593, -1, -1, 10595, -1, -1, + -1, -1, -1, 10596, -1, -1, -1, 10597, + /* 0x9800 */ + -1, 10598, 10599, 10600, -1, 10601, 10602, 10603, + 10604, -1, 10605, -1, 10606, -1, 10607, 10608, + 10609, 10610, 10611, 10612, -1, -1, -1, 10613, + 10614, -1, 10615, -1, 10617, -1, -1, -1, + -1, 10618, -1, -1, 10619, 10621, 10623, -1, + -1, -1, -1, -1, 10624, 10626, 10627, -1, + 10629, -1, 10631, -1, 10632, -1, -1, 10634, + 10635, 10637, 10641, 10645, 10646, 10648, 10652, -1, + -1, -1, -1, -1, -1, -1, 10653, -1, + -1, -1, -1, 10654, 10655, 10656, 10657, 10658, + -1, -1, 10660, 10661, 10662, 10664, 10666, -1, + 10667, 10668, 10669, 10671, -1, -1, 10673, -1, + -1, -1, 10674, -1, -1, 10675, -1, 10676, + -1, -1, -1, 10677, 10678, -1, -1, 10679, + 10681, 10682, -1, 10685, 10686, 10687, 10688, 10689, + 10690, 10691, 10692, 10693, 10695, 10696, 10697, 10698, + 10699, 10700, 10701, 10702, 10703, 10704, 10706, 10707, + 10708, 10710, 10711, 10713, 10714, 10715, 10716, 10717, + 10718, 10720, 10721, 10722, 10726, -1, 10727, 10729, + 10730, 10731, 10732, 10733, 10734, 10736, 10737, 10738, + 10739, 10741, 10742, 10743, 10744, 10745, 10746, 10747, + 10748, -1, -1, -1, -1, 10756, 10757, 10761, + -1, 10762, -1, 10763, -1, -1, 10764, 10765, + 10768, -1, 10769, 10770, 10771, -1, -1, -1, + 10772, -1, -1, 10773, 10775, -1, 10777, 10782, + 10783, -1, -1, -1, 10787, -1, 10792, 10798, + 10799, 10800, 10801, 10802, 10803, 10804, 10805, 10806, + 10807, 10809, 10810, 10811, 10812, -1, 10813, 10814, + 10817, 10820, 10821, 10822, -1, 10823, -1, -1, + 10824, 10825, 10826, 10827, 10829, 10830, 10831, 10833, + 10835, -1, 10836, -1, 10838, -1, 10839, -1, + -1, -1, -1, -1, 10840, 10841, 10842, 10843, + /* 0x9900 */ + -1, -1, -1, 10844, 10845, 10846, -1, -1, + -1, 10848, 10851, -1, 10854, 10855, 10856, 10857, + 10858, 10859, 10860, 10862, -1, 10863, 10864, -1, + 10865, -1, 10867, 10868, 10869, -1, 10870, 10871, + 10872, 10874, -1, -1, -1, -1, -1, 10875, + 10879, -1, -1, -1, 10881, -1, -1, -1, + -1, 10882, -1, 10883, 10884, 10885, 10887, 10888, + -1, 10889, 10890, 10891, 10892, 10893, 10894, 10895, + -1, 10896, -1, 10897, -1, 10898, -1, -1, + 10899, 10900, 10901, 10902, 10903, 10904, 10905, -1, + -1, 10906, 10907, -1, -1, -1, -1, 10908, + -1, 10909, -1, -1, 10910, -1, 10911, 10912, + -1, -1, 10915, 10916, 10919, 10920, 10922, 10923, + 10925, 10926, 10927, 10928, 10929, 10930, 10931, 10933, + 10934, 10935, 10936, 10937, 10938, 10939, 10940, 10941, + 10943, 10944, 10945, 10946, 10947, 10949, 10950, 10951, + 10952, 10954, 10956, 10957, 10958, 10959, 10960, 10961, + 10962, 10964, 10965, 10966, 10967, 10968, 10969, 10970, + 10971, 10972, 10973, 10974, 10975, 10976, -1, -1, + -1, -1, -1, -1, -1, 10977, 10978, 10979, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 10980, 10981, 10982, -1, + -1, 10983, 10985, 10986, 10987, -1, -1, -1, + -1, 10988, -1, -1, -1, 10989, -1, 10990, + -1, 10992, -1, -1, 10993, 10995, 10997, -1, + 11001, -1, -1, -1, -1, -1, -1, -1, + 11005, 11006, 11007, -1, 11008, 11009, -1, -1, + 11010, 11011, -1, 11012, -1, 11013, 11015, 11017, + -1, 11018, 11021, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 11022, 11023, -1, + 11024, 11025, -1, -1, -1, 11026, -1, -1, + 11028, -1, -1, -1, -1, -1, -1, 11029, + /* 0x9a00 */ + -1, 11030, 11031, -1, -1, 11032, -1, -1, + -1, -1, -1, -1, -1, 11033, 11034, 11035, + 11036, -1, 11039, 11041, -1, -1, 11044, -1, + -1, 11045, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 11046, -1, -1, -1, + 11047, -1, -1, 11048, -1, 11049, 11050, -1, + 11053, -1, -1, -1, -1, -1, 11054, 11055, + 11057, -1, 11058, -1, -1, -1, 11059, -1, + 11060, 11061, 11062, 11063, 11064, 11065, -1, 11069, + -1, -1, 11070, -1, 11071, 11072, -1, 11073, + -1, 11074, 11077, -1, -1, 11078, -1, 11079, + -1, -1, 11082, 11083, -1, 11085, -1, 11086, + -1, -1, 11087, -1, 11089, 11090, 11092, -1, + -1, 11093, 11094, 11095, 11096, 11097, 11098, 11100, + 11101, 11102, 11106, 11107, 11109, 11111, 11112, 11113, + 11114, 11115, 11116, 11117, 11118, 11120, 11121, 11122, + 11124, 11125, 11126, 11129, 11130, 11131, 11132, 11133, + 11134, 11135, 11136, 11137, 11138, 11141, 11142, 11143, + 11144, 11145, 11146, 11147, -1, 11148, 11149, 11150, + 11151, 11153, 11154, 11156, 11157, 11158, 11160, 11161, + 11162, 11163, 11164, 11165, 11166, 11167, 11169, 11170, + -1, -1, -1, -1, -1, -1, -1, 11171, + -1, -1, -1, -1, -1, 11172, -1, -1, + -1, -1, -1, -1, -1, -1, 11176, -1, + -1, -1, -1, -1, 11177, 11179, -1, -1, + 11180, -1, -1, 11181, 11182, -1, -1, 11183, + -1, -1, 11184, 11185, 11187, 11191, 11193, 11194, + 11197, 11198, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 11199, 11201, 11202, -1, -1, + -1, 11203, 11205, -1, -1, 11207, 11208, 11210, + -1, -1, -1, -1, 11211, -1, -1, -1, + -1, 11213, -1, -1, -1, -1, -1, -1, + /* 0x9b00 */ + 11214, -1, 11215, -1, -1, -1, 11218, -1, + -1, -1, -1, -1, -1, 11219, -1, -1, + -1, -1, -1, 11220, -1, -1, -1, -1, + -1, -1, 11222, 11223, -1, -1, -1, -1, + -1, -1, 11224, 11227, -1, 11228, 11233, 11238, + 11240, 11241, 11242, 11247, -1, 11248, 11253, -1, + 11254, 11257, -1, -1, -1, -1, 11260, -1, + -1, 11261, -1, 11262, -1, -1, -1, -1, + 11264, -1, -1, -1, -1, -1, -1, 11265, + -1, 11266, -1, -1, -1, -1, 11267, -1, + 11269, -1, -1, -1, -1, -1, -1, 11274, + 11276, -1, 11277, 11278, -1, -1, -1, -1, + -1, -1, 11279, 11280, -1, -1, 11281, -1, + 11282, -1, -1, -1, -1, 11283, -1, 11284, + -1, -1, 11285, 11287, 11288, -1, -1, 11289, + -1, -1, 11290, -1, -1, -1, -1, -1, + -1, 11291, -1, 11292, -1, -1, -1, -1, + -1, 11293, 11295, 11296, -1, 11297, 11298, 11299, + 11300, 11301, 11302, 11303, -1, -1, -1, -1, + -1, -1, 11304, -1, 11305, 11306, 11309, -1, + -1, -1, -1, -1, -1, -1, 11310, 11311, + -1, -1, 11313, 11314, -1, 11315, 11316, -1, + -1, -1, -1, 11321, -1, -1, 11322, 11323, + -1, -1, 11325, 11326, -1, -1, 11327, -1, + 11328, 11329, -1, -1, -1, -1, -1, 11330, + -1, 11332, 11333, 11335, -1, -1, -1, -1, + -1, -1, 11336, -1, 11337, 11338, 11339, 11340, + 11342, -1, -1, 11343, -1, 11345, -1, -1, + -1, 11346, 11347, -1, 11348, -1, -1, 11349, + 11350, -1, 11351, 11352, -1, -1, -1, -1, + 11353, -1, -1, -1, 11354, 11355, -1, 11356, + -1, 11359, -1, -1, -1, 11360, -1, 11361, + /* 0x9c00 */ + 11362, 11364, 11365, 11366, -1, -1, -1, -1, + 11367, 11369, -1, -1, 11370, 11372, -1, 11374, + 11375, -1, 11377, 11378, -1, -1, -1, -1, + -1, -1, -1, 11379, 11381, -1, -1, 11382, + 11383, -1, -1, 11384, 11385, 11386, -1, -1, + 11388, 11390, -1, -1, -1, 11391, 11392, -1, + -1, 11393, 11394, 11396, -1, 11397, -1, 11398, + -1, 11399, 11400, 11402, 11403, -1, 11404, -1, + -1, -1, 11405, -1, -1, 11406, -1, -1, + 11407, 11408, -1, -1, -1, -1, -1, -1, + -1, -1, 11411, 11412, 11413, -1, 11414, 11415, + 11416, -1, -1, -1, -1, 11417, 11418, 11419, + 11420, -1, -1, 11421, 11422, -1, -1, 11423, + 11424, -1, -1, -1, -1, 11425, 11426, 11427, + -1, -1, -1, -1, -1, -1, 11428, 11431, + 11433, -1, 11435, 11436, 11441, 11442, 11443, 11444, + 11445, 11446, 11447, -1, 11448, 11449, 11450, 11451, + 11452, 11454, 11455, 11456, 11457, 11458, 11460, 11461, + 11462, 11463, 11464, 11465, 11466, 11467, 11468, 11469, + 11470, 11471, 11472, 11473, 11474, 11479, 11480, 11482, + 11483, 11485, 11486, 11487, 11488, 11489, 11490, 11491, + 11492, 11493, 11495, 11496, 11497, 11498, 11499, 11500, + 11501, 11502, 11503, 11504, 11505, 11506, 11507, 11508, + 11510, 11511, 11512, 11513, 11514, 11515, 11516, 11517, + 11518, 11519, 11520, 11521, 11522, 11524, 11526, 11527, + 11528, 11529, 11530, 11531, 11532, 11534, 11535, 11536, + 11537, 11538, 11539, 11540, 11541, 11542, 11544, 11546, + 11547, 11548, -1, 11549, 11550, 11551, 11553, 11554, + 11555, 11556, 11557, 11558, -1, 11559, -1, 11561, + -1, 11563, -1, 11564, 11566, -1, -1, -1, + -1, -1, 11567, 11568, 11569, -1, 11570, -1, + 11571, -1, -1, -1, -1, -1, -1, -1, + /* 0x9d00 */ + -1, -1, -1, -1, -1, -1, 11572, 11573, + 11574, 11576, -1, -1, -1, -1, 11578, -1, + -1, -1, 11580, -1, -1, 11581, -1, -1, + -1, -1, -1, 11582, -1, 11583, 11585, 11586, + -1, -1, -1, 11588, -1, -1, 11589, -1, + 11590, -1, -1, -1, 11591, -1, -1, 11593, + 11594, -1, -1, 11595, 11596, -1, -1, -1, + -1, -1, -1, 11597, 11598, -1, -1, 11599, + -1, -1, 11600, 11601, 11602, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 11603, 11604, 11605, 11606, -1, -1, -1, -1, + -1, 11607, -1, -1, 11608, 11609, 11611, -1, + 11613, 11614, -1, -1, -1, -1, -1, -1, + -1, -1, 11615, -1, 11616, -1, 11617, 11618, + 11619, -1, 11620, -1, -1, -1, 11621, 11623, + -1, -1, -1, -1, -1, -1, 11624, -1, + -1, -1, -1, -1, -1, -1, -1, 11626, + -1, 11628, 11629, -1, -1, -1, -1, 11630, + -1, -1, -1, 11633, -1, -1, 11634, -1, + 11635, -1, 11636, -1, -1, -1, -1, -1, + -1, 11637, -1, -1, 11638, 11639, -1, -1, + -1, 11640, 11641, 11642, 11644, -1, -1, 11645, + -1, -1, 11647, -1, 11648, 11655, -1, -1, + -1, 11656, 11657, 11658, 11659, -1, -1, 11660, + 11661, 11662, 11663, 11664, 11665, -1, 11668, -1, + 11669, 11670, 11671, -1, -1, -1, -1, 11672, + -1, -1, -1, 11673, -1, -1, 11674, 11675, + -1, 11677, 11678, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 11679, 11680, -1, + -1, -1, -1, 11681, -1, -1, -1, 11682, + 11683, -1, 11684, 11685, 11687, -1, -1, -1, + 11689, 11690, 11691, -1, -1, 11693, -1, 11694, + /* 0x9e00 */ + -1, -1, -1, -1, -1, -1, -1, 11695, + -1, -1, 11696, -1, 11697, -1, 11698, 11699, + -1, -1, -1, -1, -1, 11700, 11703, -1, + 11710, -1, 11711, 11712, 11714, 11715, 11716, 11717, + 11719, 11720, 11723, 11724, 11725, 11726, 11728, 11730, + 11731, 11732, 11733, 11734, 11736, 11737, 11738, 11739, + 11740, 11741, 11742, 11743, 11744, 11745, 11746, 11747, + 11748, 11749, 11750, 11751, 11752, 11753, 11754, 11755, + 11756, 11757, 11758, 11759, 11760, 11761, 11763, 11764, + 11766, 11767, 11768, 11769, 11770, 11771, 11772, 11773, + 11774, 11775, 11776, 11777, 11778, 11779, 11780, 11781, + 11782, 11783, 11784, 11786, 11787, 11788, 11789, 11790, + 11791, 11792, 11793, 11794, 11795, 11802, 11803, 11804, + 11805, 11806, 11807, 11808, 11809, 11810, -1, 11811, + 11812, 11813, 11814, 11815, 11816, 11817, -1, -1, + 11819, 11822, 11824, 11825, 11826, 11829, 11831, -1, + -1, -1, -1, 11832, 11833, 11834, -1, 11835, + -1, -1, -1, -1, -1, -1, -1, 11836, + -1, -1, -1, -1, -1, -1, -1, 11837, + -1, -1, -1, -1, -1, -1, 11839, -1, + -1, -1, -1, -1, 11840, 11842, 11843, -1, + -1, 11844, 11846, 11851, 11856, 11858, -1, 11859, + -1, -1, -1, -1, 11863, 11867, -1, -1, + 11872, 11874, 11878, 11883, 11886, 11890, -1, -1, + -1, -1, -1, 11894, 11895, -1, -1, -1, + -1, 11897, -1, -1, 11898, -1, -1, 11899, + -1, 11900, 11901, -1, -1, -1, -1, -1, + 11902, 11903, -1, 11904, -1, -1, 11905, -1, + -1, 11907, -1, -1, 11908, -1, -1, -1, + 11909, 11910, 11911, -1, -1, 11912, -1, -1, + -1, 11913, 11914, -1, 11915, -1, 11916, 11917, + -1, 11918, -1, -1, -1, 11919, 11920, 11921, + /* 0x9f00 */ + -1, -1, 11923, 11924, -1, -1, -1, 11925, + 11927, 11930, -1, 11931, 11932, 11933, 11934, -1, + -1, 11935, 11936, 11937, -1, 11939, -1, 11940, + -1, -1, -1, -1, -1, -1, -1, -1, + 11942, 11943, -1, -1, -1, -1, 11944, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 11945, -1, -1, -1, + -1, 11946, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 11947, -1, -1, + -1, -1, 11948, 11952, -1, -1, 11954, 11956, + 11958, 11962, 11964, 11966, 11967, 11969, -1, 11970, + -1, 11971, 11972, -1, 11973, -1, -1, 11974, + 11975, 11976, 11978, 11980, -1, -1, 11981, 11982, + -1, 11985, 11986, -1, 11988, -1, -1, -1, + 11989, 11990, 11991, -1, -1, -1, 11992, 11993, + -1, -1, -1, -1, -1, -1, -1, 11994, + 11996, 11997, 11998, 11999, 12000, 12002, 12003, 12004, + 12005, 12006, 12007, 12008, 12009, 12010, 12013, -1, + 12014, -1, 12015, -1, 12018, 12019, -1, -1, + -1, 12020, 12022, 12023, 12024, 12026, 12029, 12031, + -1, -1, 12033, -1, -1, 12036, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, +}; + diff --git a/libiconv/converters.h b/libiconv/converters.h new file mode 100644 index 0000000..26b1837 --- /dev/null +++ b/libiconv/converters.h @@ -0,0 +1,224 @@ +/* Copyright (C) 1999-2000 Free Software Foundation, Inc. + This file is part of the GNU ICONV Library. + + The GNU ICONV Library 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 of the + License, or (at your option) any later version. + + The GNU ICONV Library is distributed in the hope that 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 the GNU ICONV Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* This file defines all the converters. */ + + +/* Define our own notion of wchar_t, as UCS-4, according to ISO-10646-1. */ +#undef wchar_t +#define wchar_t unsigned int + +/* State used by a conversion. 0 denotes the initial state. */ +typedef unsigned int state_t; + +/* iconv_t is an opaque type. This is the real iconv_t type. */ +typedef struct conv_struct * conv_t; + +/* + * Data type for conversion multibyte -> unicode + */ +struct mbtowc_funcs { + int (*xxx_mbtowc) (conv_t conv, wchar_t *pwc, unsigned char const *s, int n); + /* + * int xxx_mbtowc (conv_t conv, wchar_t *pwc, unsigned char const *s, int n) + * converts the byte sequence starting at s to a wide character. Up to n bytes + * are available at s. n is >= 1. + * Result is number of bytes consumed (if a wide character was read), + * or 0 if invalid, or -1 if n too small, or -1-(number of bytes consumed) + * if only a shift sequence was read. + */ +}; + +/* + * Data type for conversion unicode -> multibyte + */ +struct wctomb_funcs { + int (*xxx_wctomb) (conv_t conv, unsigned char *r, wchar_t wc, int n); + /* + * int xxx_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) + * converts the wide character wc to the character set xxx, and stores the + * result beginning at r. Up to n bytes may be written at r. n is >= 1. + * Result is number of bytes written, or 0 if invalid, or -1 if n too small. + */ + int (*xxx_reset) (conv_t conv, unsigned char *r, int n); + /* + * int xxx_reset (conv_t conv, unsigned char *r, int n) + * stores a shift sequences returning to the initial state beginning at r. + * Up to n bytes may be written at r. n is >= 0. + * Result is number of bytes written, or -1 if n too small. + */ +}; + +/* Return code if invalid. (xxx_mbtowc, xxx_wctomb) */ +#define RET_ILSEQ 0 +/* Return code if only a shift sequence of n bytes was read. (xxx_mbtowc) */ +#define RET_TOOFEW(n) (-1-(n)) +/* Return code if output buffer is too small. (xxx_wctomb, xxx_reset) */ +#define RET_TOOSMALL -1 + +/* + * Contents of a conversion descriptor. + */ +struct conv_struct { + /* Input (conversion multibyte -> unicode) */ + int iindex; + struct mbtowc_funcs ifuncs; + state_t istate; + /* Output (conversion unicode -> multibyte) */ + int oindex; + struct wctomb_funcs ofuncs; + int oflags; + state_t ostate; + /* Operation flags */ + int transliterate; +}; + +/* + * Include all the converters. + */ + +#include "ascii.h" + +/* General multi-byte encodings */ +#include "utf8.h" +#include "ucs2.h" +#include "ucs2be.h" +#include "ucs2le.h" +#include "ucs4.h" +#include "ucs4be.h" +#include "ucs4le.h" +#include "utf16.h" +#include "utf16be.h" +#include "utf16le.h" +#include "utf7.h" +#include "ucs2internal.h" +#include "ucs2swapped.h" +#include "ucs4internal.h" +#include "ucs4swapped.h" +#include "java.h" + +/* 8-bit encodings */ +#include "iso8859_1.h" +#include "iso8859_2.h" +#include "iso8859_3.h" +#include "iso8859_4.h" +#include "iso8859_5.h" +#include "iso8859_6.h" +#include "iso8859_7.h" +#include "iso8859_8.h" +#include "iso8859_9.h" +#include "iso8859_10.h" +#include "iso8859_13.h" +#include "iso8859_14.h" +#include "iso8859_15.h" +#include "iso8859_16.h" +#include "koi8_r.h" +#include "koi8_u.h" +#include "koi8_ru.h" +#include "cp1250.h" +#include "cp1251.h" +#include "cp1252.h" +#include "cp1253.h" +#include "cp1254.h" +#include "cp1255.h" +#include "cp1256.h" +#include "cp1257.h" +#include "cp1258.h" +#include "cp850.h" +#include "cp866.h" +#include "mac_roman.h" +#include "mac_centraleurope.h" +#include "mac_iceland.h" +#include "mac_croatian.h" +#include "mac_romania.h" +#include "mac_cyrillic.h" +#include "mac_ukraine.h" +#include "mac_greek.h" +#include "mac_turkish.h" +#include "mac_hebrew.h" +#include "mac_arabic.h" +#include "mac_thai.h" +#include "hp_roman8.h" +#include "nextstep.h" +#include "armscii_8.h" +#include "georgian_academy.h" +#include "georgian_ps.h" +#include "mulelao.h" +#include "cp1133.h" +#include "tis620.h" +#include "cp874.h" +#include "viscii.h" +#include "tcvn.h" + +/* CJK character sets [CCS = coded character set] [CJKV.INF chapter 3] */ + +typedef struct { + unsigned short indx; /* index into big table */ + unsigned short used; /* bitmask of used entries */ +} Summary16; + +#include "iso646_jp.h" +#include "jisx0201.h" +#include "jisx0208.h" +#include "jisx0212.h" + +#include "iso646_cn.h" +#include "gb2312.h" +#include "isoir165.h" +/*#include "gb12345.h"*/ +#include "gbk.h" +#include "cns11643.h" +#include "big5.h" + +#include "ksc5601.h" +#include "johab_hangul.h" + +/* CJK encodings [CES = character encoding scheme] [CJKV.INF chapter 4] */ + +#include "euc_jp.h" +#include "sjis.h" +#include "cp932.h" +#include "iso2022_jp.h" +#include "iso2022_jp1.h" +#include "iso2022_jp2.h" + +#include "euc_cn.h" +#include "ces_gbk.h" +#include "iso2022_cn.h" +#include "iso2022_cnext.h" +#include "hz.h" +#include "euc_tw.h" +#include "ces_big5.h" +#include "cp950.h" + +#include "euc_kr.h" +#include "cp949.h" +#include "johab.h" +#include "iso2022_kr.h" + +/* Encodings used by system dependent locales. */ + +#ifdef USE_AIX +#include "cp856.h" +#include "cp922.h" +#include "cp943.h" +#include "cp1046.h" +#include "cp1124.h" +#include "cp1129.h" +#endif + diff --git a/libiconv/cp1258.h b/libiconv/cp1258.h index 4e9d6c2..e82d9d3 100644 --- a/libiconv/cp1258.h +++ b/libiconv/cp1258.h @@ -38,9 +38,12 @@ cp1258_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) *pwc = (wchar_t) c; return 1; } - else if (c >= 0x80) { - *pwc = (wchar_t) cp1258_2uni[c-0x80]; - return 1; + else { + unsigned short wc = cp1258_2uni[c-0x80]; + if (wc != 0xfffd) { + *pwc = (wchar_t) wc; + return 1; + } } return RET_ILSEQ; } diff --git a/libiconv/cp949.h b/libiconv/cp949.h new file mode 100644 index 0000000..51837cf --- /dev/null +++ b/libiconv/cp949.h @@ -0,0 +1,69 @@ + +/* + * CP949 is EUC-KR, extended with UHC (Unified Hangul Code). + */ + +#include "uhc_1.h" +#include "uhc_2.h" + +static int +cp949_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + unsigned char c = *s; + /* Code set 0 (ASCII) */ + if (c < 0x80) + return ascii_mbtowc(conv,pwc,s,n); + /* UHC part 1 */ + if (c >= 0x81 && c <= 0xa0) + return uhc_1_mbtowc(conv,pwc,s,n); + if (c >= 0xa1 && c < 0xff) { + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 < 0xa1) + /* UHC part 2 */ + return uhc_2_mbtowc(conv,pwc,s,n); + else if (c2 < 0xff) { + /* Code set 1 (KS C 5601-1992) */ + unsigned char buf[2]; + buf[0] = c-0x80; buf[1] = c2-0x80; + return ksc5601_mbtowc(conv,pwc,buf,2); + } + } + } + return RET_ILSEQ; +} + +static int +cp949_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + unsigned char buf[2]; + int ret; + + /* Code set 0 (ASCII) */ + ret = ascii_wctomb(conv,r,wc,n); + if (ret != RET_ILSEQ) + return ret; + + /* Code set 1 (KS C 5601-1992) */ + ret = ksc5601_wctomb(conv,buf,wc,2); + if (ret != RET_ILSEQ) { + if (ret != 2) abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0]+0x80; + r[1] = buf[1]+0x80; + return 2; + } + + /* UHC */ + if (wc >= 0xac00 && wc < 0xd7a4) { + if (wc < 0xc8a5) + return uhc_1_wctomb(conv,r,wc,n); + else + return uhc_2_wctomb(conv,r,wc,n); + } + + return RET_ILSEQ; +} diff --git a/libiconv/cp950.h b/libiconv/cp950.h index c7bc88e..34455ec 100644 --- a/libiconv/cp950.h +++ b/libiconv/cp950.h @@ -36,6 +36,12 @@ * We don't implement these changes. * * 2. A small new row. See cp950ext.h. + * + * 3. CP950.TXT is lacking the range 0xC6A1..0xC7FC (Hiragana, Katakana, + * Cyrillic, circled digits, parenthesized digits). + * + * We implement this omission, because said range is marked "uncertain" + * in the unicode.org BIG5 table. */ #include "cp950ext.h" @@ -54,9 +60,11 @@ cp950_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) { unsigned char c2 = s[1]; if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { - int ret = big5_mbtowc(conv,pwc,s,2); - if (ret != RET_ILSEQ) - return ret; + if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) { + int ret = big5_mbtowc(conv,pwc,s,2); + if (ret != RET_ILSEQ) + return ret; + } } } if (c == 0xf9) { @@ -83,11 +91,13 @@ cp950_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) ret = big5_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]; - r[1] = buf[1]; - return 2; + if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) { + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0]; + r[1] = buf[1]; + return 2; + } } ret = cp950ext_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { diff --git a/libiconv/encodings.def b/libiconv/encodings.def index 67dda08..9787a21 100644 --- a/libiconv/encodings.def +++ b/libiconv/encodings.def @@ -1,4 +1,4 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999-2000 Free Software Foundation, Inc. This file is part of the GNU ICONV Library. The GNU ICONV Library is free software; you can redistribute it and/or @@ -16,7 +16,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* The list of all user-visible encodings. */ +/* The list of all system independent user-visible encodings. */ /* By convention, an encoding named FOOBAR or FOO_BAR or FOO-BAR is defined in a file named "foobar.h" through the functions foobar_mbtowc and @@ -29,100 +29,116 @@ defines an encoding with the given name and aliases. (There is no difference between a name and an alias. By convention, the name is chosen as the preferred MIME name or the standard name.) - All names and aliases must be in ASCII and in UPPERCASE! + All names and aliases must be in ASCII. Case is not significant, but + for the "cs*" aliases mixed case is preferred, otherwise UPPERCASE is + preferred. For all names and aliases, note where it comes from. xxx is the name as used in the C code (lowercase). */ -DEFENCODING(( "US-ASCII", - "ASCII", - "ISO646-US", - "ISO_646.IRV:1991", - "ISO-IR-6", - "ANSI_X3.4-1968", - "CP367", - "IBM367", - "US", - "CSASCII", +DEFENCODING(( "US-ASCII", /* IANA */ + "ASCII", /* IANA, JDK 1.1 */ + "ISO646-US", /* IANA */ + "ISO_646.IRV:1991", /* IANA */ + "ISO-IR-6", /* IANA */ + "ANSI_X3.4-1968", /* IANA */ + "CP367", /* IANA */ + "IBM367", /* IANA */ + "US", /* IANA */ + "csASCII", /* IANA */ + /*"ISO646.1991-IRV", X11R6.4 */ ), ascii, { ascii_mbtowc }, { ascii_wctomb, NULL }) /* General multi-byte encodings */ -DEFENCODING(( "UTF-8", +DEFENCODING(( "UTF-8", /* IANA, RFC 2279 */ + /*"UTF8", JDK 1.1 */ ), utf8, { utf8_mbtowc }, { utf8_wctomb, NULL }) -DEFENCODING(( "UCS-2", - "ISO-10646-UCS-2", - "CSUNICODE", +DEFENCODING(( "UCS-2", /* glibc */ + "ISO-10646-UCS-2", /* IANA */ + "csUnicode", /* IANA */ ), ucs2, { ucs2_mbtowc }, { ucs2_wctomb, NULL }) -DEFENCODING(( "UCS-4", - "ISO-10646-UCS-4", - "CSUCS4", +DEFENCODING(( "UCS-2BE", /* glibc */ + "UNICODEBIG", /* glibc */ + "UNICODE-1-1", /* IANA */ + "csUnicode11", /* IANA */ + ), + ucs2be, + { ucs2be_mbtowc }, { ucs2be_wctomb, NULL }) + +DEFENCODING(( "UCS-2LE", /* glibc */ + "UNICODELITTLE", /* glibc */ + ), + ucs2le, + { ucs2le_mbtowc }, { ucs2le_wctomb, NULL }) + +DEFENCODING(( "UCS-4", /* glibc */ + "ISO-10646-UCS-4", /* IANA */ + "csUCS4", /* IANA */ ), ucs4, { ucs4_mbtowc }, { ucs4_wctomb, NULL }) -DEFENCODING(( "UTF-16", +DEFENCODING(( "UCS-4BE", /* glibc */ + ), + ucs4be, + { ucs4be_mbtowc }, { ucs4be_wctomb, NULL }) + +DEFENCODING(( "UCS-4LE", /* glibc */ + ), + ucs4le, + { ucs4le_mbtowc }, { ucs4le_wctomb, NULL }) + +DEFENCODING(( "UTF-16", /* RFC 2781 */ ), utf16, { utf16_mbtowc }, { utf16_wctomb, NULL }) -DEFENCODING(( "UTF-7", - "UNICODE-1-1-UTF-7", - "CSUNICODE11UTF7", +DEFENCODING(( "UTF-16BE", /* RFC 2781 */ + ), + utf16be, + { utf16be_mbtowc }, { utf16be_wctomb, NULL }) + +DEFENCODING(( "UTF-16LE", /* RFC 2781 */ + ), + utf16le, + { utf16le_mbtowc }, { utf16le_wctomb, NULL }) + +DEFENCODING(( "UTF-7", /* IANA, RFC 2152 */ + "UNICODE-1-1-UTF-7", /* IANA, RFC 1642 */ + "csUnicode11UTF7", /* IANA */ ), utf7, { utf7_mbtowc }, { utf7_wctomb, utf7_reset }) -DEFENCODING(( "UCS-2-INTERNAL", +DEFENCODING(( "UCS-2-INTERNAL", /* libiconv */ ), ucs2internal, { ucs2internal_mbtowc }, { ucs2internal_wctomb, NULL }) -DEFENCODING(( "UCS-2-SWAPPED", +DEFENCODING(( "UCS-2-SWAPPED", /* libiconv */ ), ucs2swapped, { ucs2swapped_mbtowc }, { ucs2swapped_wctomb, NULL }) -DEFENCODING(( "UCS-2-BE", - "UNICODEBIG", /* glibc compatibility */ - ), - ucs2be, - { ucs2be_mbtowc }, { ucs2be_wctomb, NULL }) - -DEFENCODING(( "UCS-2-LE", - "UNICODELITTLE", /* glibc compatibility */ - ), - ucs2le, - { ucs2le_mbtowc }, { ucs2le_wctomb, NULL }) - -DEFENCODING(( "UCS-4-INTERNAL", +DEFENCODING(( "UCS-4-INTERNAL", /* libiconv */ ), ucs4internal, { ucs4internal_mbtowc }, { ucs4internal_wctomb, NULL }) -DEFENCODING(( "UCS-4-SWAPPED", +DEFENCODING(( "UCS-4-SWAPPED", /* libiconv */ ), ucs4swapped, { ucs4swapped_mbtowc }, { ucs4swapped_wctomb, NULL }) -DEFENCODING(( "UCS-4-BE", - ), - ucs4be, - { ucs4be_mbtowc }, { ucs4be_wctomb, NULL }) - -DEFENCODING(( "UCS-4-LE", - ), - ucs4le, - { ucs4le_mbtowc }, { ucs4le_wctomb, NULL }) - DEFENCODING(( "JAVA", ), java, @@ -130,151 +146,180 @@ DEFENCODING(( "JAVA", /* Standard 8-bit encodings */ -DEFENCODING(( "ISO-8859-1", - "ISO_8859-1", - "ISO_8859-1:1987", - "ISO-IR-100", - "CP819", - "IBM819", - "LATIN1", - "L1", - "CSISOLATIN1", +DEFENCODING(( "ISO-8859-1", /* IANA */ + "ISO_8859-1", /* IANA */ + "ISO_8859-1:1987", /* IANA */ + "ISO-IR-100", /* IANA */ + "CP819", /* IANA */ + "IBM819", /* IANA */ + "LATIN1", /* IANA */ + "L1", /* IANA */ + "csISOLatin1", /* IANA */ + /*"ISO8859-1", X11R6.4 */ + /*"ISO8859_1", JDK 1.1 */ ), iso8859_1, { iso8859_1_mbtowc }, { iso8859_1_wctomb, NULL }) -DEFENCODING(( "ISO-8859-2", - "ISO_8859-2", - "ISO_8859-2:1987", - "ISO-IR-101", - "LATIN2", - "L2", - "CSISOLATIN2", +DEFENCODING(( "ISO-8859-2", /* IANA */ + "ISO_8859-2", /* IANA */ + "ISO_8859-2:1987", /* IANA */ + "ISO-IR-101", /* IANA */ + "LATIN2", /* IANA */ + "L2", /* IANA */ + "csISOLatin2", /* IANA */ + /*"ISO8859-2", X11R6.4 */ + /*"ISO8859_2", JDK 1.1 */ ), iso8859_2, { iso8859_2_mbtowc }, { iso8859_2_wctomb, NULL }) -DEFENCODING(( "ISO-8859-3", - "ISO_8859-3", - "ISO_8859-3:1988", - "ISO-IR-109", - "LATIN3", - "L3", - "CSISOLATIN3", +DEFENCODING(( "ISO-8859-3", /* IANA */ + "ISO_8859-3", /* IANA */ + "ISO_8859-3:1988", /* IANA */ + "ISO-IR-109", /* IANA */ + "LATIN3", /* IANA */ + "L3", /* IANA */ + "csISOLatin3", /* IANA */ + /*"ISO8859-3", X11R6.4 */ + /*"ISO8859_3", JDK 1.1 */ ), iso8859_3, { iso8859_3_mbtowc }, { iso8859_3_wctomb, NULL }) -DEFENCODING(( "ISO-8859-4", - "ISO_8859-4", - "ISO_8859-4:1988", - "ISO-IR-110", - "LATIN4", - "L4", - "CSISOLATIN4", +DEFENCODING(( "ISO-8859-4", /* IANA */ + "ISO_8859-4", /* IANA */ + "ISO_8859-4:1988", /* IANA */ + "ISO-IR-110", /* IANA */ + "LATIN4", /* IANA */ + "L4", /* IANA */ + "csISOLatin4", /* IANA */ + /*"ISO8859-4", X11R6.4 */ + /*"ISO8859_4", JDK 1.1 */ ), iso8859_4, { iso8859_4_mbtowc }, { iso8859_4_wctomb, NULL }) -DEFENCODING(( "ISO-8859-5", - "ISO_8859-5", - "ISO_8859-5:1988", - "ISO-IR-144", - "CYRILLIC", - "CSISOLATINCYRILLIC", +DEFENCODING(( "ISO-8859-5", /* IANA */ + "ISO_8859-5", /* IANA */ + "ISO_8859-5:1988", /* IANA */ + "ISO-IR-144", /* IANA */ + "CYRILLIC", /* IANA */ + "csISOLatinCyrillic", /* IANA */ + /*"ISO8859-5", X11R6.4 */ + /*"ISO8859_5", JDK 1.1 */ ), iso8859_5, { iso8859_5_mbtowc }, { iso8859_5_wctomb, NULL }) -DEFENCODING(( "ISO-8859-6", - "ISO_8859-6", - "ISO_8859-6:1987", - "ISO-IR-127", - "ECMA-114", - "ASMO-708", - "ARABIC", - "CSISOLATINARABIC", +DEFENCODING(( "ISO-8859-6", /* IANA */ + "ISO_8859-6", /* IANA */ + "ISO_8859-6:1987", /* IANA */ + "ISO-IR-127", /* IANA */ + "ECMA-114", /* IANA */ + "ASMO-708", /* IANA */ + "ARABIC", /* IANA */ + "csISOLatinArabic", /* IANA */ + /*"ISO8859-6", X11R6.4 */ + /*"ISO8859_6", JDK 1.1 */ ), iso8859_6, { iso8859_6_mbtowc }, { iso8859_6_wctomb, NULL }) -DEFENCODING(( "ISO-8859-7", - "ISO_8859-7", - "ISO_8859-7:1987", - "ISO-IR-126", - "ECMA-118", - "ELOT_928", - "GREEK8", - "GREEK", - "CSISOLATINGREEK", +DEFENCODING(( "ISO-8859-7", /* IANA, RFC 1947 */ + "ISO_8859-7", /* IANA */ + "ISO_8859-7:1987", /* IANA */ + "ISO-IR-126", /* IANA */ + "ECMA-118", /* IANA */ + "ELOT_928", /* IANA */ + "GREEK8", /* IANA */ + "GREEK", /* IANA */ + "csISOLatinGreek", /* IANA */ + /*"ISO8859-7", X11R6.4 */ + /*"ISO8859_7", JDK 1.1 */ ), iso8859_7, { iso8859_7_mbtowc }, { iso8859_7_wctomb, NULL }) -DEFENCODING(( "ISO-8859-8", - "ISO_8859-8", - "ISO_8859-8:1988", - "ISO-IR-138", - "HEBREW", - "CSISOLATINHEBREW", +DEFENCODING(( "ISO-8859-8", /* IANA */ + "ISO_8859-8", /* IANA */ + "ISO_8859-8:1988", /* IANA */ + "ISO-IR-138", /* IANA */ + "HEBREW", /* IANA */ + "csISOLatinHebrew", /* IANA */ + /*"ISO8859-8", X11R6.4 */ + /*"ISO8859_8", JDK 1.1 */ ), iso8859_8, { iso8859_8_mbtowc }, { iso8859_8_wctomb, NULL }) -DEFENCODING(( "ISO-8859-9", - "ISO_8859-9", - "ISO_8859-9:1989", - "ISO-IR-148", - "LATIN5", - "L5", - "CSISOLATIN5", +DEFENCODING(( "ISO-8859-9", /* IANA */ + "ISO_8859-9", /* IANA */ + "ISO_8859-9:1989", /* IANA */ + "ISO-IR-148", /* IANA */ + "LATIN5", /* IANA */ + "L5", /* IANA */ + "csISOLatin5", /* IANA */ + /*"ISO8859-9", X11R6.4 */ + /*"ISO8859_9", JDK 1.1 */ ), iso8859_9, { iso8859_9_mbtowc }, { iso8859_9_wctomb, NULL }) DEFENCODING(( "ISO-8859-10", "ISO_8859-10", - "ISO_8859-10:1992", - "ISO-IR-157", - "LATIN6", - "L6", - "CSISOLATIN6", + "ISO_8859-10:1992", /* IANA */ + "ISO-IR-157", /* IANA */ + "LATIN6", /* IANA */ + "L6", /* IANA */ + "csISOLatin6", /* IANA */ + /*"ISO8859-10", X11R6.4 */ ), iso8859_10, { iso8859_10_mbtowc }, { iso8859_10_wctomb, NULL }) -DEFENCODING(( "ISO-8859-13", +DEFENCODING(( "ISO-8859-13", /* glibc */ "ISO_8859-13", - "ISO-IR-179", - "LATIN7", - "L7", + "ISO-IR-179", /* glibc */ + "LATIN7", /* glibc */ + "L7", /* glibc */ ), iso8859_13, { iso8859_13_mbtowc }, { iso8859_13_wctomb, NULL }) -DEFENCODING(( "ISO-8859-14", +DEFENCODING(( "ISO-8859-14", /* glibc */ "ISO_8859-14", - "ISO_8859-14:1998", - "LATIN8", - "L8", + "ISO_8859-14:1998", /* glibc */ + "ISO-IR-199", + "LATIN8", /* glibc */ + "L8", /* glibc */ ), iso8859_14, { iso8859_14_mbtowc }, { iso8859_14_wctomb, NULL }) -DEFENCODING(( "ISO-8859-15", - "ISO_8859-15", - "ISO_8859-15:1998", +DEFENCODING(( "ISO-8859-15", /* glibc */ + "ISO_8859-15", /* IANA */ + "ISO_8859-15:1998", /* glibc */ + "ISO-IR-203", ), iso8859_15, { iso8859_15_mbtowc }, { iso8859_15_wctomb, NULL }) -DEFENCODING(( "KOI8-R", - "CSKOI8R", +DEFENCODING(( "ISO-8859-16", + "ISO_8859-16", + "ISO_8859-16:2000", + "ISO-IR-226", + ), + iso8859_16, + { iso8859_16_mbtowc }, { iso8859_16_wctomb, NULL }) + +DEFENCODING(( "KOI8-R", /* IANA, RFC 1489, X11R6.4, JDK 1.1 */ + "csKOI8R", /* IANA */ ), koi8_r, { koi8_r_mbtowc }, { koi8_r_wctomb, NULL }) -DEFENCODING(( "KOI8-U", +DEFENCODING(( "KOI8-U", /* IANA, RFC 2319 */ ), koi8_u, { koi8_u_mbtowc }, { koi8_u_wctomb, NULL }) @@ -286,155 +331,159 @@ DEFENCODING(( "KOI8-RU", /* Windows 8-bit encodings */ -DEFENCODING(( "CP1250", - "WINDOWS-1250", +DEFENCODING(( "CP1250", /* JDK 1.1 */ + "WINDOWS-1250", /* IANA */ "MS-EE", ), cp1250, { cp1250_mbtowc }, { cp1250_wctomb, NULL }) -DEFENCODING(( "CP1251", - "WINDOWS-1251", +DEFENCODING(( "CP1251", /* JDK 1.1 */ + "WINDOWS-1251", /* IANA */ "MS-CYRL", ), cp1251, { cp1251_mbtowc }, { cp1251_wctomb, NULL }) -DEFENCODING(( "CP1252", +DEFENCODING(( "CP1252", /* JDK 1.1 */ "WINDOWS-1252", "MS-ANSI", ), cp1252, { cp1252_mbtowc }, { cp1252_wctomb, NULL }) -DEFENCODING(( "CP1253", - "WINDOWS-1253", +DEFENCODING(( "CP1253", /* JDK 1.1 */ + "WINDOWS-1253", /* IANA */ "MS-GREEK", ), cp1253, { cp1253_mbtowc }, { cp1253_wctomb, NULL }) -DEFENCODING(( "CP1254", - "WINDOWS-1254", +DEFENCODING(( "CP1254", /* JDK 1.1 */ + "WINDOWS-1254", /* IANA */ "MS-TURK", ), cp1254, { cp1254_mbtowc }, { cp1254_wctomb, NULL }) -DEFENCODING(( "CP1255", - "WINDOWS-1255", +DEFENCODING(( "CP1255", /* JDK 1.1 */ + "WINDOWS-1255", /* IANA */ "MS-HEBR", ), cp1255, { cp1255_mbtowc }, { cp1255_wctomb, NULL }) -DEFENCODING(( "CP1256", - "WINDOWS-1256", +DEFENCODING(( "CP1256", /* JDK 1.1 */ + "WINDOWS-1256", /* IANA */ "MS-ARAB", ), cp1256, { cp1256_mbtowc }, { cp1256_wctomb, NULL }) -DEFENCODING(( "CP1257", - "WINDOWS-1257", +DEFENCODING(( "CP1257", /* JDK 1.1 */ + "WINDOWS-1257", /* IANA */ "WINBALTRIM", ), cp1257, { cp1257_mbtowc }, { cp1257_wctomb, NULL }) -DEFENCODING(( "CP1258", - "WINDOWS-1258", +DEFENCODING(( "CP1258", /* JDK 1.1 */ + "WINDOWS-1258", /* IANA */ ), cp1258, { cp1258_mbtowc }, { cp1258_wctomb, NULL }) /* DOS 8-bit encodings */ -DEFENCODING(( "CP850", - "IBM850", - "850", - "CSPC850MULTILINGUAL", +DEFENCODING(( "CP850", /* IANA, JDK 1.1 */ + "IBM850", /* IANA */ + "850", /* IANA */ + "csPC850Multilingual", /* IANA */ ), cp850, { cp850_mbtowc }, { cp850_wctomb, NULL }) -DEFENCODING(( "CP866", - "IBM866", - "866", - "CSIBM866", +DEFENCODING(( "CP866", /* IANA, JDK 1.1 */ + "IBM866", /* IANA */ + "866", /* IANA */ + "csIBM866", /* IANA */ ), cp866, { cp866_mbtowc }, { cp866_wctomb, NULL }) /* Macintosh 8-bit encodings */ -DEFENCODING(( "MACROMAN", /* This is the best table for MACINTOSH. The ones */ - "MACINTOSH", /* in glibc and FreeBSD-iconv are bad quality. */ +DEFENCODING(( "MacRoman", /* JDK 1.1 */ + /* This is the best table for MACINTOSH. The ones */ + /* in glibc and FreeBSD-iconv are bad quality. */ + "MACINTOSH", /* IANA */ + "MAC", /* IANA */ + "csMacintosh", /* IANA */ ), mac_roman, { mac_roman_mbtowc }, { mac_roman_wctomb, NULL }) -DEFENCODING(( "MACCENTRALEUROPE", +DEFENCODING(( "MacCentralEurope", /* JDK 1.1 */ ), mac_centraleurope, { mac_centraleurope_mbtowc }, { mac_centraleurope_wctomb, NULL }) -DEFENCODING(( "MACICELAND", +DEFENCODING(( "MacIceland", /* JDK 1.1 */ ), mac_iceland, { mac_iceland_mbtowc }, { mac_iceland_wctomb, NULL }) -DEFENCODING(( "MACCROATIAN", +DEFENCODING(( "MacCroatian", /* JDK 1.1 */ ), mac_croatian, { mac_croatian_mbtowc }, { mac_croatian_wctomb, NULL }) -DEFENCODING(( "MACROMANIA", +DEFENCODING(( "MacRomania", /* JDK 1.1 */ ), mac_romania, { mac_romania_mbtowc }, { mac_romania_wctomb, NULL }) -DEFENCODING(( "MACCYRILLIC", +DEFENCODING(( "MacCyrillic", /* JDK 1.1 */ ), mac_cyrillic, { mac_cyrillic_mbtowc }, { mac_cyrillic_wctomb, NULL }) -DEFENCODING(( "MACUKRAINE", +DEFENCODING(( "MacUkraine", /* JDK 1.1 */ ), mac_ukraine, { mac_ukraine_mbtowc }, { mac_ukraine_wctomb, NULL }) -DEFENCODING(( "MACGREEK", +DEFENCODING(( "MacGreek", /* JDK 1.1 */ ), mac_greek, { mac_greek_mbtowc }, { mac_greek_wctomb, NULL }) -DEFENCODING(( "MACTURKISH", +DEFENCODING(( "MacTurkish", /* JDK 1.1 */ ), mac_turkish, { mac_turkish_mbtowc }, { mac_turkish_wctomb, NULL }) -DEFENCODING(( "MACHEBREW", +DEFENCODING(( "MacHebrew", /* JDK 1.1 */ ), mac_hebrew, { mac_hebrew_mbtowc }, { mac_hebrew_wctomb, NULL }) -DEFENCODING(( "MACARABIC", +DEFENCODING(( "MacArabic", /* JDK 1.1 */ ), mac_arabic, { mac_arabic_mbtowc }, { mac_arabic_wctomb, NULL }) -DEFENCODING(( "MACTHAI", +DEFENCODING(( "MacThai", /* JDK 1.1 */ ), mac_thai, { mac_thai_mbtowc }, { mac_thai_wctomb, NULL }) /* Other platform specific 8-bit encodings */ -DEFENCODING(( "HP-ROMAN8", - "ROMAN8", - "R8", - "CSHPROMAN8", +DEFENCODING(( "HP-ROMAN8", /* IANA, X11R6.4 */ + "ROMAN8", /* IANA */ + "R8", /* IANA */ + "csHPRoman8", /* IANA */ ), hp_roman8, { hp_roman8_mbtowc }, { hp_roman8_wctomb, NULL }) @@ -472,26 +521,26 @@ DEFENCODING(( "CP1133", cp1133, { cp1133_mbtowc }, { cp1133_wctomb, NULL }) -DEFENCODING(( "TIS-620", - "TIS620", - "TIS620-0", - "TIS620.2529-1", - "TIS620.2533-0", +DEFENCODING(( "TIS-620", /* IANA */ + "TIS620", /* glibc */ + "TIS620-0", /* glibc */ + "TIS620.2529-1", /* glibc */ + "TIS620.2533-0", /* glibc */ "TIS620.2533-1", - "ISO-IR-166", + "ISO-IR-166", /* glibc */ ), tis620, { tis620_mbtowc }, { tis620_wctomb, NULL }) -DEFENCODING(( "CP874", +DEFENCODING(( "CP874", /* JDK 1.1 */ "WINDOWS-874", ), cp874, { cp874_mbtowc }, { cp874_wctomb, NULL }) -DEFENCODING(( "VISCII", +DEFENCODING(( "VISCII", /* IANA, RFC 1456 */ "VISCII1.1-1", - "CSVISCII", + "csVISCII", /* IANA */ ), viscii, { viscii_mbtowc }, { viscii_wctomb, NULL }) @@ -504,157 +553,212 @@ DEFENCODING(( "TCVN", tcvn, { tcvn_mbtowc }, { tcvn_wctomb, NULL }) -/* CJK character sets */ +/* CJK character sets (not documented) */ + +DEFENCODING(( "JIS_C6220-1969-RO", /* IANA */ + "ISO646-JP", /* IANA */ + "ISO-IR-14", /* IANA */ + "JP", /* IANA */ + "csISO14JISC6220ro", /* IANA */ + ), + iso646_jp, + { iso646_jp_mbtowc }, { iso646_jp_wctomb, NULL }) -DEFENCODING(( "JIS_X0201", +DEFENCODING(( "JIS_X0201", /* IANA */ "JISX0201-1976", - "JISX0201.1976-0", - "X0201", - "CSHALFWIDTHKATAKANA", + "X0201", /* IANA */ + "csHalfWidthKatakana", /* IANA */ + /*"JISX0201.1976-0", X11R6.4 */ + /*"JIS0201", JDK 1.1 */ ), jisx0201, { jisx0201_mbtowc }, { jisx0201_wctomb, NULL }) DEFENCODING(( "JIS_X0208", - "JIS_X0208.1983-0", - "JIS_X0208.1983-1", - "JIS_X0208-1983", + "JIS_X0208-1983", /* IANA */ "JIS_X0208-1990", "JIS0208", + "X0208", /* IANA */ + "ISO-IR-87", /* IANA */ + "csISO87JISX0208", /* IANA */ + /*"JISX0208.1983-0", X11R6.4 */ + /*"JISX0208.1990-0", X11R6.4 */ + /*"JIS0208", JDK 1.1 */ ), jisx0208, { jisx0208_mbtowc }, { jisx0208_wctomb, NULL }) DEFENCODING(( "JIS_X0212", "JIS_X0212.1990-0", - "JIS_X0212-1990", - "X0212", - "ISO-IR-159", - "CSISO159JISX02121990", + "JIS_X0212-1990", /* IANA */ + "X0212", /* IANA */ + "ISO-IR-159", /* IANA */ + "csISO159JISX02121990", /* IANA */ + /*"JISX0212.1990-0", X11R6.4 */ + /*"JIS0212", JDK 1.1 */ ), jisx0212, { jisx0212_mbtowc }, { jisx0212_wctomb, NULL }) -DEFENCODING(( "KSC_5601", - "KSC5601.1987-0", - "KS_C_5601-1987", - "KS_C_5601-1989", - "ISO-IR-149", - "CSKSC56011987", - "KOREAN", - "CP949", +DEFENCODING(( "GB_1988-80", /* IANA */ + "ISO646-CN", /* IANA */ + "ISO-IR-57", /* IANA */ + "CN", /* IANA */ + "csISO57GB1988", /* IANA */ + ), + iso646_cn, + { iso646_cn_mbtowc }, { iso646_cn_wctomb, NULL }) + +DEFENCODING(( "GB_2312-80", /* IANA */ + "ISO-IR-58", /* IANA */ + "csISO58GB231280", /* IANA */ + "CHINESE", /* IANA */ + /*"GB2312.1980-0", X11R6.4 */ + ), + gb2312, + { gb2312_mbtowc }, { gb2312_wctomb, NULL }) + +DEFENCODING(( "ISO-IR-165", + "CN-GB-ISOIR165", /* RFC 1922 */ + ), + isoir165, + { isoir165_mbtowc }, { isoir165_wctomb, NULL }) + +DEFENCODING(( "KSC_5601", /* IANA */ + "KS_C_5601-1987", /* IANA */ + "KS_C_5601-1989", /* IANA */ + "ISO-IR-149", /* IANA */ + "csKSC56011987", /* IANA */ + "KOREAN", /* IANA */ + /*"KSC5601.1987-0", X11R6.4 */ + /*"KSX1001:1992", Ken Lunde */ ), ksc5601, { ksc5601_mbtowc }, { ksc5601_wctomb, NULL }) /* CJK encodings */ -DEFENCODING(( "EUC-JP", - "EUCJP", - "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", - "CSEUCPKDFMTJAPANESE", +DEFENCODING(( "EUC-JP", /* IANA */ + "EUCJP", /* glibc */ + "Extended_UNIX_Code_Packed_Format_for_Japanese", /* IANA */ + "csEUCPkdFmtJapanese", /* IANA */ + /*"EUC_JP", JDK 1.1 */ ), euc_jp, { euc_jp_mbtowc }, { euc_jp_wctomb, NULL }) -DEFENCODING(( "SJIS", - "SHIFT_JIS", - "SHIFT-JIS", - "MS_KANJI", - "CSSHIFTJIS", +DEFENCODING(( "SJIS", /* JDK 1.1 */ + "SHIFT_JIS", /* IANA */ + "SHIFT-JIS", /* glibc */ + "MS_KANJI", /* IANA */ + "csShiftJIS", /* IANA */ ), sjis, { sjis_mbtowc }, { sjis_wctomb, NULL }) -DEFENCODING(( "CP932", +DEFENCODING(( "CP932", /* glibc */ ), cp932, { cp932_mbtowc }, { cp932_wctomb, NULL }) -DEFENCODING(( "ISO-2022-JP", - "CSISO2022JP", +DEFENCODING(( "ISO-2022-JP", /* IANA, RFC 1468 */ + "csISO2022JP", /* IANA */ + /*"ISO2022JP", JDK 1.1 */ ), iso2022_jp, { iso2022_jp_mbtowc }, { iso2022_jp_wctomb, iso2022_jp_reset }) -DEFENCODING(( "ISO-2022-JP-1", +DEFENCODING(( "ISO-2022-JP-1", /* RFC 2237 */ ), iso2022_jp1, { iso2022_jp1_mbtowc }, { iso2022_jp1_wctomb, iso2022_jp1_reset }) -DEFENCODING(( "ISO-2022-JP-2", - "CSISO2022JP2", +DEFENCODING(( "ISO-2022-JP-2", /* IANA, RFC 1554 */ + "csISO2022JP2", /* IANA */ ), iso2022_jp2, { iso2022_jp2_mbtowc }, { iso2022_jp2_wctomb, iso2022_jp2_reset }) -DEFENCODING(( "EUC-CN", - "EUCCN", - "GB2312", /* yes, GB2312 as registered by IANA is actually EUC-CN */ - "CSGB2312", +DEFENCODING(( "EUC-CN", /* glibc */ + "EUCCN", /* glibc */ + "GB2312", /* IANA */ + "CN-GB", /* RFC 1922 */ + "csGB2312", /* IANA */ + /*"EUC_CN", JDK 1.1 */ ), euc_cn, { euc_cn_mbtowc }, { euc_cn_wctomb, NULL }) -DEFENCODING(( "GBK", +DEFENCODING(( "GBK", /* JDK 1.1 */ "CP936", ), ces_gbk, { ces_gbk_mbtowc }, { ces_gbk_wctomb, NULL }) -DEFENCODING(( "ISO-2022-CN", - "CSISO2022CN", +DEFENCODING(( "ISO-2022-CN", /* IANA, RFC 1922 */ + "csISO2022CN", + /*"ISO2022CN", JDK 1.1 */ ), iso2022_cn, { iso2022_cn_mbtowc }, { iso2022_cn_wctomb, iso2022_cn_reset }) -DEFENCODING(( "ISO-2022-CN-EXT", +DEFENCODING(( "ISO-2022-CN-EXT", /* IANA, RFC 1922 */ ), iso2022_cn_ext, { iso2022_cn_ext_mbtowc }, { iso2022_cn_ext_wctomb, iso2022_cn_ext_reset }) -DEFENCODING(( "HZ", - "HZ-GB-2312", +DEFENCODING(( "HZ", /* RFC 1843 */ + "HZ-GB-2312", /* IANA, RFC 1842 */ ), hz, { hz_mbtowc }, { hz_wctomb, hz_reset }) -DEFENCODING(( "EUC-TW", - "EUCTW", - "CSEUCTW", +DEFENCODING(( "EUC-TW", /* glibc */ + "EUCTW", /* glibc */ + "csEUCTW", + /*"EUC_TW", JDK 1.1 */ ), euc_tw, { euc_tw_mbtowc }, { euc_tw_wctomb, NULL }) -DEFENCODING(( "BIG5", - "BIG-5", - "BIG-FIVE", - "BIGFIVE", - "CSBIG5", +DEFENCODING(( "BIG5", /* IANA, JDK 1.1 */ + "BIG-5", /* glibc */ + "BIG-FIVE", /* glibc */ + "BIGFIVE", /* glibc */ + "CN-BIG5", /* RFC 1922 */ + "csBig5", /* IANA */ ), ces_big5, { ces_big5_mbtowc }, { ces_big5_wctomb, NULL }) -DEFENCODING(( "CP950", +DEFENCODING(( "CP950", /* JDK 1.1 */ ), cp950, { cp950_mbtowc }, { cp950_wctomb, NULL }) -DEFENCODING(( "EUC-KR", - "EUCKR", - "CSEUCKR", +DEFENCODING(( "EUC-KR", /* IANA, RFC 1557 */ + "EUCKR", /* glibc */ + "csEUCKR", /* IANA */ + /*"EUC_KR", JDK 1.1 */ ), euc_kr, { euc_kr_mbtowc }, { euc_kr_wctomb, NULL }) -DEFENCODING(( "JOHAB", - "CP1361", +DEFENCODING(( "CP949", /* JDK 1.1 */ + "UHC", /* glibc */ + ), + cp949, + { cp949_mbtowc }, { cp949_wctomb, NULL }) + +DEFENCODING(( "JOHAB", /* glibc */ + "CP1361", /* glibc */ ), johab, { johab_mbtowc }, { johab_wctomb, NULL }) -DEFENCODING(( "ISO-2022-KR", - "CSISO2022KR", +DEFENCODING(( "ISO-2022-KR", /* IANA, RFC 1557 */ + "csISO2022KR", /* IANA */ + /*"ISO2022KR", JDK 1.1 */ ), iso2022_kr, { iso2022_kr_mbtowc }, { iso2022_kr_wctomb, iso2022_kr_reset }) diff --git a/libiconv/euc_jp.h b/libiconv/euc_jp.h index 5d6384a..30918af 100644 --- a/libiconv/euc_jp.h +++ b/libiconv/euc_jp.h @@ -112,7 +112,7 @@ euc_jp_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) /* Code set 2 (half-width katakana) */ ret = jisx0201_wctomb(conv,buf,wc,1); - if (ret != RET_ILSEQ) { + if (ret != RET_ILSEQ && buf[0] >= 0x80) { if (ret != 1) abort(); if (n < 2) return RET_TOOSMALL; diff --git a/libiconv/euc_kr.h b/libiconv/euc_kr.h index 632470a..6f3c4f2 100644 --- a/libiconv/euc_kr.h +++ b/libiconv/euc_kr.h @@ -32,7 +32,7 @@ euc_kr_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) static int euc_kr_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) { - unsigned char buf[3]; + unsigned char buf[2]; int ret; /* Code set 0 (ASCII or KS C 5636-1993) */ @@ -51,21 +51,5 @@ euc_kr_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) return 2; } - if (conv->transliterate) { - /* Decompose Hangul into Jamo */ - ret = johab_hangul_decompose(conv,buf,wc); - if (ret != RET_ILSEQ) { - int i; - if (n < 2*ret) - return RET_TOOSMALL; - for (i = 0; i < ret; i++) { - r[0] = 0xa4; - r[1] = 0xa0+buf[i]; - r += 2; - } - return 2*ret; - } - } - return RET_ILSEQ; } diff --git a/libiconv/euc_tw.h b/libiconv/euc_tw.h index f813af1..f942efd 100644 --- a/libiconv/euc_tw.h +++ b/libiconv/euc_tw.h @@ -37,7 +37,7 @@ euc_tw_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) unsigned char buf[2]; int ret; buf[0] = c3-0x80; buf[1] = c4-0x80; - switch (c3-0xa0) { + switch (c2-0xa0) { case 1: ret = cns11643_1_mbtowc(conv,pwc,buf,2); break; case 2: ret = cns11643_2_mbtowc(conv,pwc,buf,2); break; case 3: ret = cns11643_3_mbtowc(conv,pwc,buf,2); break; diff --git a/libiconv/flags.h b/libiconv/flags.h new file mode 100644 index 0000000..a122ec2 --- /dev/null +++ b/libiconv/flags.h @@ -0,0 +1,114 @@ +/* Generated automatically by genflags. */ + +/* Set if the encoding can encode + the acute and grave accents U+00B4 and U+0060. */ +#define HAVE_ACCENTS 1 + +/* Set if the encoding can encode + the single quotation marks U+2018 and U+2019. */ +#define HAVE_QUOTATION_MARKS 2 + +/* Set if the encoding can encode + the double-width Hangul letters (Jamo) U+3131 to U+3163. */ +#define HAVE_HANGUL_JAMO 4 + +#define ei_ascii_oflags (0) +#define ei_utf8_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_ucs2_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_ucs2be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_ucs2le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_ucs4_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_ucs4be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_ucs4le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_utf16_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_utf16be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_utf16le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_utf7_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_ucs2internal_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_ucs2swapped_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_ucs4internal_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_ucs4swapped_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_java_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_iso8859_1_oflags (HAVE_ACCENTS) +#define ei_iso8859_2_oflags (HAVE_ACCENTS) +#define ei_iso8859_3_oflags (HAVE_ACCENTS) +#define ei_iso8859_4_oflags (HAVE_ACCENTS) +#define ei_iso8859_5_oflags (0) +#define ei_iso8859_6_oflags (0) +#define ei_iso8859_7_oflags (HAVE_QUOTATION_MARKS) +#define ei_iso8859_8_oflags (HAVE_ACCENTS) +#define ei_iso8859_9_oflags (HAVE_ACCENTS) +#define ei_iso8859_10_oflags (0) +#define ei_iso8859_13_oflags (0) +#define ei_iso8859_14_oflags (0) +#define ei_iso8859_15_oflags (0) +#define ei_iso8859_16_oflags (0) +#define ei_koi8_r_oflags (0) +#define ei_koi8_u_oflags (0) +#define ei_koi8_ru_oflags (0) +#define ei_cp1250_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_cp1251_oflags (HAVE_QUOTATION_MARKS) +#define ei_cp1252_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_cp1253_oflags (HAVE_QUOTATION_MARKS) +#define ei_cp1254_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_cp1255_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_cp1256_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_cp1257_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_cp1258_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_cp850_oflags (HAVE_ACCENTS) +#define ei_cp866_oflags (0) +#define ei_mac_roman_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_mac_centraleurope_oflags (HAVE_QUOTATION_MARKS) +#define ei_mac_iceland_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_mac_croatian_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_mac_romania_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_mac_cyrillic_oflags (HAVE_QUOTATION_MARKS) +#define ei_mac_ukraine_oflags (HAVE_QUOTATION_MARKS) +#define ei_mac_greek_oflags (HAVE_QUOTATION_MARKS) +#define ei_mac_turkish_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_mac_hebrew_oflags (HAVE_QUOTATION_MARKS) +#define ei_mac_arabic_oflags (0) +#define ei_mac_thai_oflags (HAVE_QUOTATION_MARKS) +#define ei_hp_roman8_oflags (HAVE_ACCENTS) +#define ei_nextstep_oflags (HAVE_ACCENTS) +#define ei_armscii_8_oflags (0) +#define ei_georgian_academy_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_georgian_ps_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_mulelao_oflags (0) +#define ei_cp1133_oflags (0) +#define ei_tis620_oflags (0) +#define ei_cp874_oflags (HAVE_QUOTATION_MARKS) +#define ei_viscii_oflags (0) +#define ei_tcvn_oflags (0) +#define ei_iso646_jp_oflags (0) +#define ei_jisx0201_oflags (0) +#define ei_jisx0208_oflags (HAVE_QUOTATION_MARKS) +#define ei_jisx0212_oflags (0) +#define ei_iso646_cn_oflags (0) +#define ei_gb2312_oflags (HAVE_QUOTATION_MARKS) +#define ei_isoir165_oflags (HAVE_QUOTATION_MARKS) +#define ei_ksc5601_oflags (HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_euc_jp_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_sjis_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_cp932_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_iso2022_jp_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_iso2022_jp1_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_iso2022_jp2_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_euc_cn_oflags (HAVE_QUOTATION_MARKS) +#define ei_ces_gbk_oflags (HAVE_QUOTATION_MARKS) +#define ei_iso2022_cn_oflags (HAVE_QUOTATION_MARKS) +#define ei_iso2022_cn_ext_oflags (HAVE_QUOTATION_MARKS) +#define ei_hz_oflags (HAVE_QUOTATION_MARKS) +#define ei_euc_tw_oflags (HAVE_QUOTATION_MARKS) +#define ei_ces_big5_oflags (HAVE_QUOTATION_MARKS) +#define ei_cp950_oflags (HAVE_QUOTATION_MARKS) +#define ei_euc_kr_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_cp949_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_johab_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_iso2022_kr_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_cp856_oflags (HAVE_ACCENTS) +#define ei_cp922_oflags (HAVE_ACCENTS) +#define ei_cp943_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_cp1046_oflags (0) +#define ei_cp1124_oflags (0) +#define ei_cp1129_oflags (0) diff --git a/libiconv/gb12345ext.h b/libiconv/gb12345ext.h index 0ff033d..c00a690 100644 --- a/libiconv/gb12345ext.h +++ b/libiconv/gb12345ext.h @@ -8,6 +8,27 @@ static const unsigned short gb12345ext_2uni_page21[12] = { 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2225, }; +static const unsigned short gb12345ext_2uni_page26[85] = { + /* 0x26 */ + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfe35, + 0xfe36, 0xfe39, 0xfe3a, 0xfe3f, 0xfe40, 0xfe3d, 0xfe3e, 0xfe41, + 0xfe42, 0xfe43, 0xfe44, 0xfffd, 0xfffd, 0xfe3b, 0xfe3c, 0xfe37, + 0xfe38, 0xfe31, 0xfffd, 0xfe33, 0xfe34, +}; +static const unsigned short gb12345ext_2uni_page28[32] = { + /* 0x28 */ + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0x0251, 0x1e3f, 0x0144, 0x0148, 0x01f9, 0x0261, +}; static const unsigned short gb12345ext_2uni_page30[6871] = { /* 0x30 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x769a, @@ -86,7 +107,7 @@ static const unsigned short gb12345ext_2uni_page30[6871] = { 0xfffd, 0xfffd, 0x9ede, 0xfffd, 0xfffd, 0x588a, 0x96fb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6fb1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x91e3, 0x8abf, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8adc, 0x758a, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8adc, 0xfffd, /* 0x36 */ 0xfffd, 0xfffd, 0xfffd, 0x91d8, 0x9802, 0xfffd, 0x9320, 0xfffd, 0x8a02, 0xfffd, 0x6771, 0xfffd, 0xfffd, 0xfffd, 0x52d5, 0x68df, @@ -156,8 +177,8 @@ static const unsigned short gb12345ext_2uni_page30[6871] = { 0xfffd, 0xfffd, 0xfffd, 0x8b77, 0xfffd, 0x6eec, 0xfffd, 0xfffd, 0x5629, 0x83ef, 0xfffd, 0xfffd, 0x756b, 0x5283, 0xfffd, 0x8a71, 0xfffd, 0xfffd, 0x61f7, 0xfffd, 0x58de, 0x6b61, 0x74b0, 0xfffd, - 0x9084, 0x7de9, 0x63db, 0xfffd, 0x559a, 0x7613, 0xfffd, 0x7165, - 0x6e19, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0x9084, 0x7de9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8b0a, 0xfffd, 0x63ee, 0x8f1d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8cc4, 0x7a62, @@ -190,12 +211,12 @@ static const unsigned short gb12345ext_2uni_page30[6871] = { 0x7d50, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8aa1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7dca, 0x9326, 0x50c5, 0x8b39, 0x9032, - 0xfffd, 0x6649, 0xfffd, 0xfffd, 0x71fc, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x71fc, 0xfffd, /* 0x3e */ 0x76e1, 0x52c1, 0xfffd, 0xfffd, 0x8396, 0xfffd, 0xfffd, 0x9be8, 0xfffd, 0x9a5a, 0xfffd, 0xfffd, 0x7d93, 0xfffd, 0xfffd, 0xfffd, - 0x9838, 0x975c, 0xfffd, 0xfffd, 0x93e1, 0x5f91, 0x75d9, 0xfffd, - 0xfffd, 0x7af6, 0x51c8, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7cfe, + 0x9838, 0xfffd, 0xfffd, 0xfffd, 0x93e1, 0x5f91, 0x75d9, 0xfffd, + 0xfffd, 0x7af6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7cfe, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x820a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x99d2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, @@ -303,15 +324,15 @@ static const unsigned short gb12345ext_2uni_page30[6871] = { 0xfffd, 0xfffd, 0x6f51, 0x9817, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x64b2, 0x92ea, 0x50d5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6a38, 0xfffd, 0xfffd, 0xfffd, 0x8b5c, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0x68f2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x81cd, 0x9f4a, 0xfffd, 0xfffd, 0xfffd, 0x9a0e, 0xfffd, 0x8c48, 0xfffd, 0xfffd, 0x5553, 0xfffd, 0xfffd, 0xfffd, 0x6c23, - 0xfffd, 0x68c4, 0xfffd, 0xfffd, 0x8a16, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8a16, 0xfffd, /* 0x47 */ 0xfffd, 0xfffd, 0x727d, 0xfffd, 0x91fa, 0x925b, 0xfffd, 0x9077, 0x7c3d, 0xfffd, 0x8b19, 0xfffd, 0xfffd, 0x9322, 0x9257, 0xfffd, - 0x6f5b, 0xfffd, 0x6dfa, 0x8b74, 0x5879, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0x6dfa, 0x8b74, 0x5879, 0xfffd, 0xfffd, 0xfffd, 0x69cd, 0x55c6, 0xfffd, 0xfffd, 0x58bb, 0x8594, 0xfffd, 0x6436, 0xfffd, 0x936c, 0xfffd, 0xfffd, 0x6a4b, 0xfffd, 0x55ac, 0x50d1, 0xfffd, 0xfffd, 0xfffd, 0x7ff9, 0xfffd, 0xfffd, 0x7ac5, 0xfffd, @@ -501,8 +522,8 @@ static const unsigned short gb12345ext_2uni_page30[6871] = { 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x87c4, 0x8f4d, 0xfffd, 0x937a, 0xfffd, 0x9019, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8c9e, 0x91dd, 0x5075, 0xfffd, 0xfffd, 0x8a3a, 0xfffd, - 0xfffd, 0x93ae, 0x9663, 0xfffd, 0x6399, 0x775c, 0xfffd, 0x7319, - 0x722d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0x93ae, 0x9663, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x56 */ 0x5e40, 0x7665, 0x912d, 0x8b49, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7e54, 0x8077, @@ -541,7 +562,7 @@ static const unsigned short gb12345ext_2uni_page30[6871] = { 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x50b4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5000, 0x5096, 0xfffd, - 0x4f47, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x59 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5115, 0xfffd, 0x5102, 0xfffd, @@ -565,14 +586,14 @@ static const unsigned short gb12345ext_2uni_page30[6871] = { 0x8aee, 0x8ade, 0x8b28, 0x8b9c, 0x8b16, 0x8b1a, 0x8b10, 0x8b2b, 0x8b2d, 0x8b56, 0x8b59, 0x8b4e, 0x8b9e, 0x8b6b, 0x8b96, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0x9658, 0xfffd, 0xfffd, 0x9689, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0x9658, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x913a, 0xfffd, 0x9114, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9134, /* 0x5b */ 0xfffd, 0xfffd, 0x90df, 0xfffd, 0xfffd, 0x9136, 0xfffd, 0xfffd, 0x9106, 0x9148, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0x82bb, 0x5950, 0x52f1, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0x82bb, 0xfffd, 0x52f1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5df0, 0xfffd, 0x580a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, @@ -650,7 +671,7 @@ static const unsigned short gb12345ext_2uni_page30[6871] = { 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5d87, 0xfffd, 0x5cf4, 0xfffd, 0xfffd, 0x5d50, 0xfffd, 0xfffd, 0xfffd, 0x5d2c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0x5da7, 0xfffd, 0x5da0, 0xfffd, 0x5d22, 0x5d97, + 0xfffd, 0xfffd, 0x5da7, 0xfffd, 0x5da0, 0xfffd, 0xfffd, 0x5d97, 0x5d0d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5db8, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5d81, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, @@ -765,7 +786,7 @@ static const unsigned short gb12345ext_2uni_page30[6871] = { 0x8f0a, 0x8f07, 0x8f05, 0x8f12, 0x8f26, 0x8f1e, /* 0x6a */ 0x8f1f, 0x8f1c, 0x8f33, 0x8f46, 0x8f54, 0xfffd, 0x6214, 0x6227, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6229, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x750c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x66c7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, @@ -888,7 +909,7 @@ static const unsigned short gb12345ext_2uni_page30[6871] = { 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7be4, 0xfffd, 0x7b67, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7c69, 0xfffd, 0xfffd, - 0x7bf3, 0xfffd, 0xfffd, 0xfffd, 0x7b8f, 0xfffd, 0xfffd, 0xfffd, + 0x7bf3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7c00, 0x7bcb, 0xfffd, 0xfffd, 0xfffd, 0x7c5c, 0xfffd, 0x7c1e, 0xfffd, 0xfffd, 0x7c2b, 0xfffd, 0x7c23, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, @@ -967,15 +988,21 @@ static int gb12345ext_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; - if ((c1 == 0x21) || (c1 >= 0x30 && c1 <= 0x79)) { + if ((c1 == 0x21) || (c1 == 0x26) || (c1 == 0x28) || (c1 >= 0x30 && c1 <= 0x79)) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x21 && c2 < 0x7f) { unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); unsigned short wc = 0xfffd; - if (i < 1410) { + if (i < 470) { if (i < 12) wc = gb12345ext_2uni_page21[i]; + } else if (i < 658) { + if (i < 555) + wc = gb12345ext_2uni_page26[i-470]; + } else if (i < 1410) { + if (i < 690) + wc = gb12345ext_2uni_page28[i-658]; } else { if (i < 8281) wc = gb12345ext_2uni_page30[i-1410]; @@ -992,243 +1019,241 @@ gb12345ext_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) return RET_ILSEQ; } -static const unsigned short gb12345ext_2charset[2249] = { - 0x212c, 0x7871, 0x7829, 0x7833, 0x7761, 0x4252, 0x787d, 0x5147, - 0x785f, 0x7842, 0x5879, 0x6245, 0x4034, 0x4258, 0x7872, 0x4f40, - 0x5876, 0x4129, 0x3256, 0x3876, 0x4347, 0x4257, 0x4e30, 0x3260, - 0x556c, 0x5877, 0x4921, 0x3138, 0x7841, 0x5336, 0x342b, 0x5871, - 0x552e, 0x494b, 0x4763, 0x594d, 0x3d76, 0x595d, 0x4748, 0x464d, - 0x4e31, 0x3d44, 0x5947, 0x3c5b, 0x5247, 0x592f, 0x525a, 0x3f6b, - 0x3c73, 0x594f, 0x5931, 0x592d, 0x7845, 0x3325, 0x5345, 0x3422, - 0x5933, 0x5950, 0x594e, 0x5932, 0x3679, 0x782c, 0x413d, 0x7828, - 0x7929, 0x3e3b, 0x3633, 0x7840, 0x785d, 0x3f2d, 0x783b, 0x5859, - 0x5472, 0x7848, 0x3855, 0x3950, 0x585c, 0x3434, 0x3b2e, 0x3e67, - 0x4175, 0x3974, 0x585b, 0x3d23, 0x3c41, 0x3e22, 0x362f, 0x4e71, - 0x512b, 0x4a24, 0x404d, 0x4a46, 0x5b3d, 0x4078, 0x4830, 0x5850, - 0x3b63, 0x5851, 0x4778, 0x502d, 0x7827, 0x5847, 0x325e, 0x5161, - 0x4077, 0x5849, 0x324e, 0x3454, 0x7923, 0x786b, 0x7878, 0x6161, - 0x5f43, 0x5431, 0x5f42, 0x4e4a, 0x4674, 0x5146, 0x3b3d, 0x4925, - 0x4747, 0x3525, 0x5334, 0x473a, 0x5844, 0x4270, 0x4e58, 0x5f6f, - 0x5f59, 0x4c3e, 0x6036, 0x453b, 0x5f75, 0x3322, 0x5f69, 0x3b29, - 0x5f6b, 0x5025, 0x5f34, 0x5f58, 0x5f3c, 0x7830, 0x5f50, 0x5f55, - 0x5f66, 0x5f5c, 0x6048, 0x5f60, 0x4567, 0x3656, 0x782b, 0x5f4c, - 0x4f45, 0x5f62, 0x6060, 0x4476, 0x5f3f, 0x417c, 0x7875, 0x6037, - 0x514f, 0x6053, 0x5f79, 0x603f, 0x4f79, 0x5966, 0x5f3d, 0x7853, - 0x786a, 0x5676, 0x6070, 0x397a, 0x4e27, 0x5430, 0x5432, 0x4d3c, - 0x4d45, 0x5b6b, 0x5634, 0x3c61, 0x5b51, 0x5b71, 0x5b76, 0x5222, - 0x3128, 0x3321, 0x3f69, 0x5c63, 0x5b6e, 0x5b75, 0x4d3f, 0x4e6b, - 0x5b77, 0x333e, 0x4735, 0x3566, 0x5739, 0x3669, 0x3758, 0x473d, - 0x3f51, 0x4c33, 0x5139, 0x405d, 0x5b5b, 0x5b64, 0x3b35, 0x4222, - 0x5b62, 0x5b5e, 0x3053, 0x5733, 0x3a78, 0x4a59, 0x434e, 0x7849, - 0x3c50, 0x5b3c, 0x5e46, 0x3661, 0x3d31, 0x375c, 0x5731, 0x4226, - 0x383e, 0x662b, 0x6634, 0x4268, 0x657d, 0x657c, 0x6635, 0x6623, - 0x662c, 0x663f, 0x3d3f, 0x664d, 0x6648, 0x6649, 0x5324, 0x4974, - 0x662e, 0x4b6f, 0x5127, 0x424f, 0x475e, 0x4a35, 0x447e, 0x4973, - 0x5034, 0x3f6d, 0x3368, 0x3126, 0x3d2b, 0x5728, 0x5130, 0x3654, - 0x353c, 0x5e4f, 0x4245, 0x3263, 0x6570, 0x4a74, 0x3854, 0x612d, - 0x353a, 0x4f3f, 0x6141, 0x385a, 0x613f, 0x6134, 0x6130, 0x6150, - 0x5538, 0x612b, 0x6140, 0x613d, 0x613b, 0x6149, 0x416b, 0x536c, - 0x3f79, 0x424d, 0x615b, 0x5b4f, 0x7850, 0x4b27, 0x4a26, 0x554a, - 0x3478, 0x5621, 0x6078, 0x607e, 0x607d, 0x5644, 0x3152, 0x306f, - 0x607c, 0x7835, 0x3849, 0x3c38, 0x7838, 0x3f62, 0x436d, 0x3327, - 0x6250, 0x374f, 0x3963, 0x422e, 0x4c7c, 0x6572, 0x5545, 0x7824, - 0x352f, 0x4356, 0x4d64, 0x783d, 0x3a73, 0x3e36, 0x3453, 0x6162, - 0x3834, 0x3339, 0x626a, 0x4346, 0x3671, 0x4455, 0x6322, 0x627c, - 0x302e, 0x632b, 0x626b, 0x627d, 0x6269, 0x787c, 0x4c2c, 0x3252, - 0x3251, 0x627a, 0x395f, 0x6d28, 0x6266, 0x4b4b, 0x4247, 0x6325, - 0x476c, 0x5347, 0x3139, 0x412f, 0x463e, 0x6334, 0x352c, 0x375f, - 0x4375, 0x6264, 0x4f5c, 0x5264, 0x3f52, 0x5326, 0x6278, 0x7856, - 0x6d21, 0x6d2f, 0x627b, 0x334d, 0x4041, 0x3b33, 0x507c, 0x6263, - 0x3e65, 0x4965, 0x4135, 0x6d30, 0x6a27, 0x6a28, 0x6a2f, 0x553d, +static const unsigned short gb12345ext_2charset[2252] = { + 0x283d, 0x283e, 0x283f, 0x283b, 0x2840, 0x283c, 0x212c, 0x7871, + 0x7829, 0x7833, 0x7761, 0x4252, 0x787d, 0x5147, 0x785f, 0x7842, + 0x6245, 0x4034, 0x4258, 0x7872, 0x4f40, 0x5876, 0x4129, 0x3256, + 0x3876, 0x4347, 0x4257, 0x4e30, 0x3260, 0x556c, 0x5877, 0x4921, + 0x3138, 0x7841, 0x5336, 0x342b, 0x5871, 0x552e, 0x494b, 0x4763, + 0x594d, 0x3d76, 0x595d, 0x4748, 0x464d, 0x4e31, 0x3d44, 0x5947, + 0x3c5b, 0x5247, 0x592f, 0x525a, 0x3f6b, 0x3c73, 0x594f, 0x5931, + 0x592d, 0x7845, 0x3325, 0x5345, 0x3422, 0x5933, 0x5950, 0x594e, + 0x5932, 0x3679, 0x782c, 0x413d, 0x7828, 0x7929, 0x3633, 0x7840, + 0x785d, 0x3f2d, 0x783b, 0x5859, 0x5472, 0x7848, 0x3855, 0x3950, + 0x585c, 0x3434, 0x3b2e, 0x3e67, 0x4175, 0x3974, 0x585b, 0x3d23, + 0x3c41, 0x3e22, 0x362f, 0x4e71, 0x512b, 0x4a24, 0x404d, 0x4a46, + 0x5b3d, 0x4078, 0x4830, 0x5850, 0x3b63, 0x5851, 0x4778, 0x502d, + 0x7827, 0x5847, 0x325e, 0x5161, 0x4077, 0x5849, 0x324e, 0x3454, + 0x7923, 0x786b, 0x7878, 0x6161, 0x5f43, 0x5431, 0x5f42, 0x4e4a, + 0x4674, 0x5146, 0x4925, 0x4747, 0x3525, 0x5334, 0x473a, 0x5844, + 0x4270, 0x4e58, 0x5f6f, 0x5f59, 0x4c3e, 0x6036, 0x453b, 0x5f75, + 0x3322, 0x5f69, 0x3b29, 0x5f6b, 0x5025, 0x5f34, 0x5f58, 0x5f3c, + 0x7830, 0x5f50, 0x5f55, 0x5f66, 0x5f5c, 0x6048, 0x5f60, 0x4567, + 0x3656, 0x782b, 0x5f4c, 0x4f45, 0x5f62, 0x6060, 0x4476, 0x5f3f, + 0x417c, 0x7875, 0x6037, 0x514f, 0x6053, 0x5f79, 0x603f, 0x4f79, + 0x5966, 0x5f3d, 0x7853, 0x786a, 0x5676, 0x6070, 0x397a, 0x4e27, + 0x5430, 0x5432, 0x4d3c, 0x4d45, 0x5b6b, 0x5634, 0x3c61, 0x5b51, + 0x5b71, 0x5b76, 0x5222, 0x3128, 0x3321, 0x3f69, 0x5c63, 0x5b6e, + 0x5b75, 0x4d3f, 0x4e6b, 0x5b77, 0x333e, 0x4735, 0x3566, 0x5739, + 0x3669, 0x3758, 0x473d, 0x3f51, 0x4c33, 0x5139, 0x405d, 0x5b5b, + 0x5b64, 0x3b35, 0x4222, 0x5b62, 0x5b5e, 0x3053, 0x5733, 0x3a78, + 0x4a59, 0x434e, 0x7849, 0x3c50, 0x5e46, 0x3661, 0x3d31, 0x375c, + 0x5731, 0x4226, 0x383e, 0x662b, 0x6634, 0x4268, 0x657d, 0x657c, + 0x6635, 0x6623, 0x662c, 0x663f, 0x3d3f, 0x664d, 0x6648, 0x6649, + 0x5324, 0x4974, 0x662e, 0x4b6f, 0x5127, 0x424f, 0x475e, 0x4a35, + 0x447e, 0x4973, 0x5034, 0x3f6d, 0x3368, 0x3126, 0x3d2b, 0x5728, + 0x5130, 0x3654, 0x353c, 0x5e4f, 0x4245, 0x3263, 0x6570, 0x4a74, + 0x3854, 0x612d, 0x353a, 0x4f3f, 0x6141, 0x385a, 0x6134, 0x6130, + 0x6150, 0x5538, 0x612b, 0x6140, 0x613d, 0x613b, 0x6149, 0x416b, + 0x536c, 0x3f79, 0x424d, 0x615b, 0x5b4f, 0x7850, 0x4b27, 0x4a26, + 0x554a, 0x3478, 0x5621, 0x6078, 0x607e, 0x607d, 0x5644, 0x3152, + 0x306f, 0x607c, 0x7835, 0x3849, 0x3c38, 0x7838, 0x3f62, 0x436d, + 0x3327, 0x6250, 0x374f, 0x3963, 0x422e, 0x4c7c, 0x6572, 0x5545, + 0x7824, 0x352f, 0x4356, 0x4d64, 0x783d, 0x3a73, 0x3e36, 0x3453, + 0x6162, 0x3834, 0x3339, 0x626a, 0x4346, 0x3671, 0x4455, 0x6322, + 0x627c, 0x302e, 0x632b, 0x626b, 0x627d, 0x6269, 0x787c, 0x4c2c, + 0x3252, 0x3251, 0x627a, 0x395f, 0x6d28, 0x6266, 0x4b4b, 0x4247, + 0x6325, 0x476c, 0x5347, 0x3139, 0x412f, 0x463e, 0x6334, 0x352c, + 0x375f, 0x4375, 0x6264, 0x4f5c, 0x5264, 0x3f52, 0x5326, 0x6278, + 0x7856, 0x6d21, 0x6d2f, 0x627b, 0x334d, 0x4041, 0x3b33, 0x507c, + 0x6263, 0x3e65, 0x4965, 0x4135, 0x6d30, 0x6a27, 0x6a28, 0x553d, 0x4f37, 0x785e, 0x502e, 0x4961, 0x5e51, 0x7846, 0x7847, 0x4928, - 0x4255, 0x5575, 0x3c70, 0x516f, 0x3b3b, 0x3b53, 0x4b70, 0x3537, - 0x4740, 0x5e62, 0x5e68, 0x4227, 0x563f, 0x3f59, 0x5e52, 0x3274, - 0x404c, 0x4453, 0x5e58, 0x3527, 0x3226, 0x3827, 0x464b, 0x5e6c, - 0x4c22, 0x4e4e, 0x3c71, 0x5335, 0x4230, 0x5471, 0x3b77, 0x3532, - 0x3523, 0x3e5d, 0x3c37, 0x4462, 0x3177, 0x4521, 0x3869, 0x5640, - 0x4029, 0x5f22, 0x305a, 0x4b53, 0x5f23, 0x4845, 0x5e73, 0x446c, - 0x4223, 0x4039, 0x5e7c, 0x3273, 0x5f25, 0x4963, 0x545c, 0x424e, - 0x4c2f, 0x3d41, 0x403f, 0x305c, 0x3550, 0x4a7d, 0x4132, 0x3150, - 0x6c35, 0x782f, 0x5536, 0x364f, 0x4a31, 0x3d7a, 0x5667, 0x544e, - 0x6a4d, 0x3329, 0x545d, 0x6a4a, 0x784f, 0x6a3c, 0x4f7e, 0x6a53, - 0x3f75, 0x4939, 0x4a69, 0x3b61, 0x6b4a, 0x7868, 0x7860, 0x362b, - 0x7869, 0x6845, 0x4c75, 0x6849, 0x467a, 0x6847, 0x5466, 0x3630, - 0x553b, 0x465c, 0x6862, 0x516e, 0x3763, 0x6865, 0x5235, 0x3c2b, - 0x683f, 0x4859, 0x6867, 0x3939, 0x4739, 0x687d, 0x3d30, 0x572e, - 0x4056, 0x6848, 0x4225, 0x316a, 0x4a60, 0x5179, 0x4653, 0x4a77, - 0x686b, 0x6863, 0x4745, 0x3b7a, 0x4d56, 0x685f, 0x3535, 0x686d, - 0x3c6c, 0x6949, 0x786d, 0x6944, 0x447b, 0x3c77, 0x3971, 0x6956, - 0x6935, 0x684e, 0x687c, 0x695a, 0x685d, 0x6946, 0x6853, 0x6840, - 0x6934, 0x6850, 0x6937, 0x5323, 0x4038, 0x4828, 0x6921, 0x686f, - 0x692d, 0x6879, 0x4755, 0x4537, 0x6c23, 0x3b36, 0x4b6a, 0x407a, - 0x3969, 0x3250, 0x6966, 0x6964, 0x6969, 0x6967, 0x696b, 0x3c5f, - 0x4931, 0x3f47, 0x4539, 0x6b27, 0x5531, 0x6b2a, 0x4678, 0x4762, - 0x6b32, 0x6424, 0x786f, 0x637e, 0x782d, 0x4259, 0x5428, 0x6435, - 0x4733, 0x3b41, 0x4e50, 0x3262, 0x3b6b, 0x6425, 0x4c40, 0x573c, - 0x3935, 0x3257, 0x4370, 0x3553, 0x5c7e, 0x3b26, 0x564d, 0x4978, - 0x4231, 0x6430, 0x427a, 0x5366, 0x453d, 0x3a3a, 0x4130, 0x5755, - 0x5547, 0x3d25, 0x3d2c, 0x7223, 0x4643, 0x3d60, 0x636d, 0x4731, - 0x4873, 0x6431, 0x4023, 0x6464, 0x6436, 0x492c, 0x3d3d, 0x4054, - 0x3d27, 0x6445, 0x5473, 0x6d34, 0x642b, 0x356d, 0x5747, 0x4528, - 0x4a2a, 0x4522, 0x7855, 0x3c43, 0x4c4e, 0x4044, 0x4e2b, 0x3175, - 0x3d26, 0x6378, 0x424b, 0x645e, 0x6442, 0x503a, 0x6449, 0x642f, - 0x3174, 0x6372, 0x4124, 0x646c, 0x646b, 0x6371, 0x647e, 0x7858, - 0x6472, 0x403d, 0x6363, 0x645c, 0x4877, 0x406c, 0x4c32, 0x6530, - 0x4d65, 0x4250, 0x6459, 0x4e5a, 0x4c7e, 0x4e5e, 0x4136, 0x6c3f, - 0x5c64, 0x3b40, 0x3733, 0x6c3e, 0x532b, 0x6c41, 0x4848, 0x3363, + 0x4255, 0x3c70, 0x516f, 0x3b53, 0x4b70, 0x3537, 0x4740, 0x5e62, + 0x5e68, 0x4227, 0x563f, 0x3f59, 0x5e52, 0x3274, 0x404c, 0x4453, + 0x5e58, 0x3527, 0x3226, 0x3827, 0x464b, 0x5e6c, 0x4c22, 0x4e4e, + 0x3c71, 0x5335, 0x4230, 0x5471, 0x3b77, 0x3532, 0x3523, 0x3e5d, + 0x3c37, 0x4462, 0x3177, 0x4521, 0x3869, 0x5640, 0x4029, 0x5f22, + 0x305a, 0x4b53, 0x5f23, 0x4845, 0x5e73, 0x446c, 0x4223, 0x4039, + 0x5e7c, 0x3273, 0x5f25, 0x4963, 0x545c, 0x424e, 0x4c2f, 0x3d41, + 0x403f, 0x305c, 0x3550, 0x4a7d, 0x4132, 0x3150, 0x6c35, 0x782f, + 0x5536, 0x364f, 0x4a31, 0x5667, 0x544e, 0x6a4d, 0x3329, 0x545d, + 0x6a4a, 0x784f, 0x6a3c, 0x4f7e, 0x6a53, 0x3f75, 0x4939, 0x4a69, + 0x3b61, 0x6b4a, 0x7868, 0x7860, 0x362b, 0x7869, 0x6845, 0x4c75, + 0x6849, 0x6847, 0x5466, 0x3630, 0x553b, 0x6862, 0x516e, 0x3763, + 0x6865, 0x5235, 0x3c2b, 0x683f, 0x4859, 0x6867, 0x3939, 0x4739, + 0x687d, 0x3d30, 0x572e, 0x4056, 0x6848, 0x4225, 0x316a, 0x4a60, + 0x5179, 0x4653, 0x4a77, 0x686b, 0x6863, 0x4745, 0x3b7a, 0x4d56, + 0x685f, 0x3535, 0x686d, 0x3c6c, 0x6949, 0x786d, 0x6944, 0x447b, + 0x3c77, 0x3971, 0x6956, 0x6935, 0x684e, 0x687c, 0x695a, 0x685d, + 0x6946, 0x6853, 0x6840, 0x6934, 0x6850, 0x6937, 0x5323, 0x4038, + 0x4828, 0x6921, 0x686f, 0x692d, 0x6879, 0x4755, 0x4537, 0x6c23, + 0x3b36, 0x4b6a, 0x407a, 0x3969, 0x3250, 0x6966, 0x6964, 0x6969, + 0x6967, 0x696b, 0x3c5f, 0x4931, 0x3f47, 0x4539, 0x6b27, 0x5531, + 0x6b2a, 0x4678, 0x4762, 0x6b32, 0x6424, 0x786f, 0x637e, 0x782d, + 0x4259, 0x5428, 0x6435, 0x4733, 0x4e50, 0x3262, 0x3b6b, 0x6425, + 0x4c40, 0x573c, 0x3935, 0x3257, 0x4370, 0x3553, 0x5c7e, 0x3b26, + 0x564d, 0x4978, 0x4231, 0x6430, 0x427a, 0x5366, 0x453d, 0x3a3a, + 0x4130, 0x5755, 0x5547, 0x3d25, 0x3d2c, 0x7223, 0x4643, 0x3d60, + 0x636d, 0x4873, 0x6431, 0x4023, 0x6464, 0x6436, 0x492c, 0x3d3d, + 0x4054, 0x3d27, 0x6445, 0x5473, 0x6d34, 0x642b, 0x356d, 0x5747, + 0x4528, 0x4a2a, 0x4522, 0x7855, 0x3c43, 0x4c4e, 0x4044, 0x4e2b, + 0x3175, 0x3d26, 0x6378, 0x424b, 0x645e, 0x6442, 0x503a, 0x6449, + 0x642f, 0x3174, 0x6372, 0x4124, 0x646c, 0x646b, 0x6371, 0x647e, + 0x7858, 0x6472, 0x403d, 0x6363, 0x645c, 0x4877, 0x406c, 0x4c32, + 0x6530, 0x4d65, 0x4250, 0x6459, 0x4e5a, 0x4c7e, 0x4e5e, 0x4136, + 0x6c3f, 0x5c64, 0x3733, 0x6c3e, 0x532b, 0x6c41, 0x4848, 0x3363, 0x6c47, 0x3546, 0x4955, 0x4c4c, 0x6c4b, 0x532a, 0x3253, 0x5672, - 0x3b62, 0x3d7d, 0x6c62, 0x4b38, 0x422f, 0x4043, 0x5579, 0x4e2a, - 0x522f, 0x367b, 0x6b39, 0x4723, 0x5c7d, 0x363f, 0x4e7e, 0x5734, - 0x4f41, 0x3137, 0x5578, 0x534c, 0x6178, 0x616f, 0x537c, 0x4a28, - 0x3640, 0x6176, 0x617d, 0x447c, 0x3b71, 0x4154, 0x616e, 0x4a5e, - 0x4c21, 0x4f57, 0x6228, 0x6224, 0x4f56, 0x6775, 0x6762, 0x4b76, - 0x5328, 0x426a, 0x6776, 0x6761, 0x6828, 0x3b37, 0x6774, 0x476d, - 0x6767, 0x682c, 0x6836, 0x6a31, 0x327a, 0x4436, 0x314f, 0x3b2d, - 0x3531, 0x336b, 0x357e, 0x7921, 0x3e37, 0x7069, 0x3768, 0x5171, - 0x3b3e, 0x7079, 0x342f, 0x4531, 0x707c, 0x4146, 0x706c, 0x706f, - 0x7077, 0x705d, 0x3171, 0x5177, 0x705c, 0x5622, 0x705f, 0x712e, - 0x5122, 0x7128, 0x712b, 0x5338, 0x4c31, 0x7132, 0x3722, 0x3028, - 0x7164, 0x5665, 0x5535, 0x3e21, 0x3c60, 0x454c, 0x422c, 0x784a, - 0x5576, 0x6d79, 0x6d6e, 0x4277, 0x7851, 0x6d7a, 0x7857, 0x5675, - 0x3d43, 0x7927, 0x6d4c, 0x6d3a, 0x7866, 0x5162, 0x4b36, 0x6d38, - 0x6d3f, 0x4837, 0x426b, 0x5729, 0x6d57, 0x6d53, 0x6d36, 0x6d4d, - 0x3421, 0x302d, 0x3f73, 0x6d42, 0x4079, 0x372f, 0x6d43, 0x3b76, - 0x6c75, 0x787a, 0x6c78, 0x4071, 0x6c72, 0x353b, 0x7926, 0x5656, - 0x3346, 0x7836, 0x7655, 0x3b7d, 0x5331, 0x7023, 0x3b60, 0x4e48, - 0x783e, 0x4e51, 0x4d5d, 0x476e, 0x7140, 0x3f7a, 0x345c, 0x474f, - 0x713c, 0x546e, 0x4754, 0x4a7a, 0x3e3a, 0x314a, 0x7928, 0x7348, - 0x3c63, 0x735d, 0x3d5a, 0x3736, 0x567e, 0x7366, 0x7346, 0x4938, - 0x7359, 0x7365, 0x4228, 0x736c, 0x3c72, 0x7371, 0x736f, 0x4729, - 0x4131, 0x403a, 0x336f, 0x736a, 0x7425, 0x417d, 0x7862, 0x7356, - 0x737d, 0x4069, 0x4261, 0x787b, 0x7456, 0x3760, 0x4138, 0x7870, - 0x744f, 0x5961, 0x7450, 0x6679, 0x3e40, 0x3c4d, 0x667b, 0x543c, - 0x3a6c, 0x667a, 0x667c, 0x667d, 0x4852, 0x4e46, 0x4449, 0x4526, - 0x6723, 0x343f, 0x6722, 0x4934, 0x563d, 0x3c36, 0x3757, 0x6721, - 0x3744, 0x4f38, 0x6726, 0x6725, 0x4970, 0x495c, 0x6724, 0x6728, - 0x672a, 0x6729, 0x5655, 0x5769, 0x306d, 0x672c, 0x3d61, 0x672b, - 0x3d4a, 0x4267, 0x5124, 0x3878, 0x485e, 0x4d33, 0x4b3f, 0x672d, - 0x3e78, 0x3e6e, 0x3073, 0x672f, 0x672e, 0x6730, 0x5065, 0x4b67, - 0x3e2d, 0x575b, 0x6736, 0x3371, 0x6739, 0x4f5f, 0x6737, 0x4e2c, - 0x673a, 0x3859, 0x4d78, 0x3141, 0x573a, 0x425a, 0x6738, 0x6732, - 0x5540, 0x3442, 0x6731, 0x4360, 0x6735, 0x673b, 0x3d74, 0x6733, - 0x424c, 0x5077, 0x6734, 0x673d, 0x3c6a, 0x673c, 0x3c29, 0x3650, - 0x355e, 0x6745, 0x5435, 0x6741, 0x3160, 0x3b3a, 0x4365, 0x4e33, - 0x6743, 0x673f, 0x4137, 0x6742, 0x673e, 0x7924, 0x5d53, 0x6746, - 0x674b, 0x6744, 0x6727, 0x674c, 0x383f, 0x6747, 0x6749, 0x6748, - 0x4f58, 0x4c50, 0x376c, 0x674a, 0x4b75, 0x575d, 0x6750, 0x7863, - 0x674f, 0x746a, 0x4246, 0x674e, 0x575c, 0x3c28, 0x6752, 0x6751, - 0x6755, 0x562f, 0x4949, 0x6754, 0x4846, 0x6740, 0x497e, 0x3b66, - 0x7873, 0x3c6b, 0x6756, 0x6759, 0x6758, 0x3d49, 0x526f, 0x3c4c, - 0x674d, 0x6757, 0x6753, 0x667e, 0x5078, 0x784d, 0x3278, 0x5327, - 0x7826, 0x4f4b, 0x675a, 0x4042, 0x733f, 0x786e, 0x3723, 0x3055, - 0x425e, 0x6e3c, 0x6e3f, 0x7447, 0x5265, 0x4f30, 0x474c, 0x716f, - 0x716c, 0x4a25, 0x4e45, 0x412a, 0x344f, 0x4979, 0x4b4a, 0x7179, - 0x4474, 0x5630, 0x7177, 0x4c7d, 0x417b, 0x4b60, 0x5032, 0x6b56, - 0x554d, 0x784c, 0x4976, 0x6b4b, 0x6b61, 0x4454, 0x5657, 0x3326, - 0x3774, 0x3d3a, 0x4465, 0x3528, 0x6b5a, 0x4527, 0x4133, 0x466a, - 0x6b77, 0x4030, 0x6b4d, 0x5460, 0x5975, 0x4159, 0x4c28, 0x536b, - 0x504b, 0x3e59, 0x3e49, 0x7867, 0x3255, 0x742f, 0x3d22, 0x7435, - 0x3c68, 0x515e, 0x5b3b, 0x5c51, 0x785c, 0x7832, 0x7843, 0x572f, - 0x3e25, 0x3c54, 0x5c48, 0x3b2a, 0x5c49, 0x4033, 0x4d72, 0x5d2b, - 0x5236, 0x5d26, 0x5d27, 0x4e2d, 0x7877, 0x3b67, 0x5d3b, 0x5d2a, - 0x3254, 0x5d25, 0x3847, 0x412b, 0x5c4a, 0x5c6a, 0x7825, 0x5d64, - 0x3d2f, 0x5c60, 0x5271, 0x5d21, 0x5d5b, 0x5c71, 0x5d24, 0x5c3f, - 0x5d35, 0x5c69, 0x5d5e, 0x3534, 0x4e5f, 0x4f74, 0x5d77, 0x5c76, - 0x3c3b, 0x5c3c, 0x7844, 0x473e, 0x5d32, 0x3c76, 0x4878, 0x5c79, - 0x4036, 0x5d23, 0x5255, 0x5229, 0x5e34, 0x544c, 0x5c42, 0x302a, - 0x5d7e, 0x5e2d, 0x422b, 0x4b55, 0x463b, 0x5e3a, 0x5d7c, 0x5c57, - 0x403c, 0x5d71, 0x425c, 0x3426, 0x4232, 0x3a45, 0x3f77, 0x724c, - 0x7239, 0x784b, 0x4a34, 0x4f3a, 0x4e4f, 0x724f, 0x426c, 0x5329, - 0x7277, 0x555d, 0x7265, 0x727d, 0x7231, 0x3275, 0x724d, 0x3366, - 0x7249, 0x524f, 0x532c, 0x7232, 0x7253, 0x726e, 0x402f, 0x7243, - 0x3946, 0x324f, 0x4279, 0x565a, 0x785a, 0x4a75, 0x4e40, 0x3365, - 0x563b, 0x7441, 0x406f, 0x3239, 0x5730, 0x7925, 0x7834, 0x3f63, - 0x714d, 0x715a, 0x5974, 0x7150, 0x3040, 0x714f, 0x7149, 0x715c, - 0x4d60, 0x7821, 0x3344, 0x4f2e, 0x3c7b, 0x3966, 0x4359, 0x4a53, - 0x6a68, 0x6a6a, 0x6a6c, 0x4757, 0x6a69, 0x6a6d, 0x6a6e, 0x6a6f, - 0x3e75, 0x4040, 0x6a6b, 0x395b, 0x757c, 0x7623, 0x3425, 0x5a25, - 0x3629, 0x383c, 0x3c46, 0x5136, 0x5a27, 0x4c56, 0x5a26, 0x5135, - 0x5a28, 0x467d, 0x3c47, 0x366f, 0x5148, 0x4b4f, 0x3e77, 0x5a2b, - 0x3743, 0x4968, 0x506d, 0x4b5f, 0x5a2d, 0x556f, 0x5a2c, 0x5a2e, - 0x5a2a, 0x5529, 0x5a31, 0x5a2f, 0x4640, 0x5a30, 0x5767, 0x344a, - 0x5a3c, 0x512f, 0x5268, 0x4a54, 0x4a2b, 0x326f, 0x5a38, 0x396e, - 0x5a39, 0x5a35, 0x3b30, 0x3843, 0x4f6a, 0x5a37, 0x5a36, 0x5a34, - 0x5a33, 0x566f, 0x5a32, 0x3f64, 0x484f, 0x5a3f, 0x5a40, 0x352e, - 0x5355, 0x5a3d, 0x536f, 0x334f, 0x3d6b, 0x4e5c, 0x4e73, 0x5a3e, - 0x4b50, 0x3b65, 0x4b35, 0x4b2d, 0x3f4e, 0x5a47, 0x374c, 0x526a, - 0x3577, 0x5a46, 0x573b, 0x4c38, 0x5a43, 0x476b, 0x5a3a, 0x5a41, - 0x5a42, 0x4142, 0x425b, 0x5a45, 0x5a44, 0x357d, 0x5a52, 0x5a3b, - 0x5a4c, 0x5a50, 0x5033, 0x5a49, 0x5a4d, 0x5a51, 0x3b64, 0x5a4f, - 0x5a48, 0x376d, 0x566e, 0x5168, 0x5a4e, 0x4535, 0x4431, 0x5a4b, - 0x4e3d, 0x4c5c, 0x565f, 0x3b51, 0x4355, 0x5a57, 0x5a4a, 0x5a55, - 0x3079, 0x472b, 0x5a56, 0x3d32, 0x503b, 0x5225, 0x5a53, 0x5a58, - 0x437d, 0x5a59, 0x5a29, 0x3d77, 0x4321, 0x5624, 0x5a5c, 0x3c25, - 0x5a5a, 0x4a36, 0x5a5b, 0x4c37, 0x4657, 0x5a5e, 0x526b, 0x5269, - 0x4734, 0x3b24, 0x537e, 0x3641, 0x3164, 0x7645, 0x3277, 0x4843, - 0x403e, 0x5a5f, 0x5a54, 0x5a5d, 0x4671, 0x3761, 0x3134, 0x556a, - 0x383a, 0x3246, 0x3931, 0x4636, 0x3b75, 0x3737, 0x4c30, 0x3961, - 0x5470, 0x567c, 0x6a5b, 0x6a5f, 0x3721, 0x3973, 0x3161, 0x4272, - 0x347b, 0x6a5c, 0x3751, 0x4c79, 0x6a5d, 0x4333, 0x3a58, 0x6a5a, - 0x4238, 0x415e, 0x3b5f, 0x6a60, 0x574a, 0x3c56, 0x5474, 0x6a62, - 0x495e, 0x3176, 0x6a64, 0x6a63, 0x344d, 0x494d, 0x4562, 0x6259, - 0x4f4d, 0x4274, 0x3c7a, 0x3833, 0x6a66, 0x564a, 0x6a65, 0x554b, - 0x3644, 0x4035, 0x572c, 0x6a67, 0x393a, 0x487c, 0x5853, 0x6a5e, - 0x5738, 0x5479, 0x545e, 0x584d, 0x4944, 0x532e, 0x6a61, 0x4a6a, - 0x3853, 0x545f, 0x384f, 0x5554, 0x4777, 0x7475, 0x3c79, 0x533b, - 0x7544, 0x754f, 0x7567, 0x754e, 0x753b, 0x336c, 0x7552, 0x543e, - 0x755c, 0x7548, 0x7559, 0x7551, 0x7566, 0x345a, 0x7572, 0x756f, - 0x477b, 0x3335, 0x547e, 0x396c, 0x3e7c, 0x5079, 0x696d, 0x696e, - 0x486d, 0x6975, 0x6974, 0x696f, 0x5661, 0x6972, 0x6977, 0x6970, - 0x6973, 0x6978, 0x3d4f, 0x697b, 0x697a, 0x5458, 0x6979, 0x697c, - 0x3828, 0x4761, 0x413e, 0x6a22, 0x3b54, 0x697e, 0x6a21, 0x3975, - 0x697d, 0x3132, 0x4256, 0x3c2d, 0x6a23, 0x4a64, 0x3778, 0x5537, - 0x535f, 0x6c31, 0x4f3d, 0x542f, 0x6a24, 0x572a, 0x555e, 0x3d4e, - 0x6a25, 0x3a64, 0x604e, 0x6976, 0x6971, 0x306c, 0x3447, 0x3168, - 0x3167, 0x4529, 0x783c, 0x6549, 0x5562, 0x412c, 0x3d78, 0x544b, - 0x397d, 0x346f, 0x4e25, 0x5137, 0x355d, 0x5436, 0x4a4a, 0x3359, - 0x4728, 0x5121, 0x5245, 0x4149, 0x4275, 0x3b39, 0x6547, 0x315f, - 0x425f, 0x654e, 0x7879, 0x5b23, 0x534a, 0x5b29, 0x4f67, 0x575e, - 0x5a79, 0x5447, 0x354b, 0x5623, 0x415a, 0x3526, 0x5a7e, 0x5b26, - 0x5a77, 0x5b2a, 0x544d, 0x3373, 0x523d, 0x3d34, 0x4470, 0x5046, - 0x7527, 0x7526, 0x4a4d, 0x784e, 0x6e44, 0x6e45, 0x6e46, 0x6e49, - 0x6e48, 0x3624, 0x6e47, 0x556b, 0x3576, 0x6e4c, 0x6e4b, 0x3730, - 0x6e4e, 0x6e4a, 0x6e4f, 0x4725, 0x6e59, 0x6e55, 0x6e57, 0x6e50, - 0x4446, 0x365b, 0x3933, 0x6e54, 0x6e53, 0x332e, 0x4525, 0x3e7b, - 0x3846, 0x6e58, 0x6e51, 0x6e56, 0x6e6a, 0x6e66, 0x6e5d, 0x4165, - 0x6e5c, 0x6e60, 0x6e6b, 0x6e5a, 0x6e5f, 0x534b, 0x6e64, 0x3c58, - 0x6e52, 0x6e68, 0x6e67, 0x6e69, 0x322c, 0x6e5e, 0x472f, 0x432d, - 0x4726, 0x6e61, 0x3227, 0x6e5b, 0x6e62, 0x6e63, 0x3d42, 0x6e6f, - 0x3875, 0x6e7e, 0x5278, 0x6f25, 0x4d2d, 0x4f33, 0x6e7d, 0x6e79, - 0x437a, 0x6f22, 0x4f4e, 0x6e6e, 0x6f28, 0x523f, 0x6e77, 0x6f27, - 0x6e7b, 0x6e70, 0x6f24, 0x6e6d, 0x6e76, 0x4f7a, 0x5062, 0x4c60, - 0x6f31, 0x4241, 0x6f36, 0x503f, 0x3135, 0x6e7a, 0x6e72, 0x3766, - 0x6f32, 0x6f37, 0x6e74, 0x337a, 0x6f2d, 0x6f38, 0x6f30, 0x464c, - 0x4871, 0x6e71, 0x6f2f, 0x6f2e, 0x6f2b, 0x6f33, 0x3e62, 0x3856, - 0x6f3e, 0x6f3a, 0x6f42, 0x6f43, 0x5736, 0x6f39, 0x6f3f, 0x3438, - 0x6f45, 0x6f23, 0x6f3c, 0x6f44, 0x3627, 0x472e, 0x3d75, 0x432a, - 0x4e7d, 0x6f40, 0x346d, 0x423c, 0x434c, 0x7823, 0x6f2a, 0x6f3d, - 0x4f47, 0x6f41, 0x6e4d, 0x6f47, 0x3978, 0x3646, 0x6f49, 0x5521, - 0x364d, 0x6f4a, 0x6f46, 0x6f3b, 0x4742, 0x6f4c, 0x3c7c, 0x6f48, - 0x5560, 0x6f71, 0x433e, 0x6f4d, 0x6f51, 0x3077, 0x4b78, 0x6f53, - 0x4e59, 0x5d76, 0x6f56, 0x6e78, 0x6f21, 0x6f4b, 0x3864, 0x5572, - 0x6f57, 0x4478, 0x6f58, 0x6f54, 0x6f55, 0x6f5f, 0x6f60, 0x4134, - 0x6f52, 0x6f5d, 0x6f61, 0x6f2c, 0x6f4f, 0x6f5b, 0x6f5c, 0x6f5e, - 0x3279, 0x3e35, 0x6f5a, 0x6f4e, 0x7649, 0x6e7c, 0x6f64, 0x6f6a, - 0x6e73, 0x6f26, 0x414d, 0x6f29, 0x6f66, 0x6f62, 0x5653, 0x6f6b, - 0x6f63, 0x6f68, 0x6f34, 0x6f35, 0x6f50, 0x412d, 0x6f6d, 0x4058, - 0x4c7a, 0x6e6c, 0x6e75, 0x6f6e, 0x567d, 0x6f6c, 0x6f59, 0x3c78, - 0x6f6f, 0x6e65, 0x6f70, 0x6f65, 0x6f67, 0x543f, 0x4f62, 0x4477, - 0x6f69, 0x4260, 0x576a, 0x7647, 0x5464, 0x3324, 0x4345, 0x6345, - 0x4941, 0x6346, 0x3155, 0x3f2a, 0x634a, 0x6348, 0x4872, 0x4f50, - 0x3c64, 0x6349, 0x5522, 0x3a52, 0x3873, 0x7839, 0x3727, 0x396b, - 0x4376, 0x634d, 0x634f, 0x634c, 0x5444, 0x6351, 0x514b, 0x5156, - 0x6355, 0x6354, 0x6350, 0x6353, 0x6356, 0x7822, 0x6347, 0x402b, - 0x6357, 0x403b, 0x6359, 0x6358, 0x635a, 0x3433, 0x3958, 0x635b, - 0x327b, 0x785b, 0x634b, 0x5a6a, 0x4942, 0x5573, 0x5275, 0x3342, - 0x423d, 0x5174, 0x5a6d, 0x3653, 0x3d57, 0x5449, 0x3c4a, 0x4b66, - 0x4f55, 0x527e, 0x4224, 0x4125, 0x7922, 0x4b64, 0x4b2b, 0x337b, - 0x5453, 0x406b, 0x4451, 0x5446, 0x3567, 0x4e6d, 0x762b, 0x7628, - 0x7630, 0x4169, 0x7626, 0x3e32, 0x584c, 0x392e, 0x7864, 0x7733, + 0x3b62, 0x3d7d, 0x6c62, 0x4b38, 0x422f, 0x4043, 0x4e2a, 0x522f, + 0x367b, 0x6b39, 0x4723, 0x5c7d, 0x363f, 0x4e7e, 0x5734, 0x4f41, + 0x3137, 0x534c, 0x6178, 0x616f, 0x537c, 0x4a28, 0x3640, 0x6176, + 0x617d, 0x447c, 0x3b71, 0x4154, 0x616e, 0x4a5e, 0x4c21, 0x4f57, + 0x6228, 0x6224, 0x4f56, 0x6775, 0x6762, 0x4b76, 0x5328, 0x426a, + 0x6776, 0x6761, 0x6828, 0x3b37, 0x6774, 0x476d, 0x6767, 0x682c, + 0x6836, 0x6a31, 0x327a, 0x4436, 0x314f, 0x3b2d, 0x3531, 0x336b, + 0x7921, 0x3e37, 0x7069, 0x3768, 0x5171, 0x7079, 0x342f, 0x4531, + 0x707c, 0x4146, 0x706c, 0x706f, 0x7077, 0x705d, 0x3171, 0x5177, + 0x705c, 0x5622, 0x705f, 0x712e, 0x5122, 0x7128, 0x712b, 0x5338, + 0x4c31, 0x7132, 0x3722, 0x3028, 0x7164, 0x5665, 0x5535, 0x3e21, + 0x3c60, 0x454c, 0x422c, 0x784a, 0x6d79, 0x6d6e, 0x4277, 0x7851, + 0x6d7a, 0x7857, 0x5675, 0x3d43, 0x7927, 0x6d4c, 0x6d3a, 0x7866, + 0x5162, 0x4b36, 0x6d38, 0x6d3f, 0x4837, 0x426b, 0x5729, 0x6d57, + 0x6d53, 0x6d36, 0x6d4d, 0x3421, 0x302d, 0x3f73, 0x6d42, 0x4079, + 0x372f, 0x6d43, 0x3b76, 0x6c75, 0x787a, 0x6c78, 0x4071, 0x6c72, + 0x353b, 0x7926, 0x5656, 0x3346, 0x7836, 0x7655, 0x3b7d, 0x5331, + 0x7023, 0x3b60, 0x4e48, 0x783e, 0x4e51, 0x4d5d, 0x476e, 0x7140, + 0x3f7a, 0x345c, 0x474f, 0x713c, 0x546e, 0x4754, 0x4a7a, 0x3e3a, + 0x314a, 0x7928, 0x7348, 0x3c63, 0x3d5a, 0x3736, 0x567e, 0x7366, + 0x7346, 0x4938, 0x7359, 0x7365, 0x4228, 0x736c, 0x3c72, 0x7371, + 0x736f, 0x4729, 0x4131, 0x403a, 0x336f, 0x736a, 0x7425, 0x417d, + 0x7862, 0x7356, 0x737d, 0x4069, 0x4261, 0x787b, 0x7456, 0x3760, + 0x4138, 0x7870, 0x744f, 0x5961, 0x7450, 0x6679, 0x3e40, 0x3c4d, + 0x667b, 0x543c, 0x3a6c, 0x667a, 0x667c, 0x667d, 0x4852, 0x4e46, + 0x4449, 0x4526, 0x6723, 0x343f, 0x6722, 0x4934, 0x563d, 0x3c36, + 0x3757, 0x6721, 0x3744, 0x4f38, 0x6726, 0x6725, 0x4970, 0x495c, + 0x6724, 0x6728, 0x672a, 0x6729, 0x5655, 0x5769, 0x306d, 0x672c, + 0x3d61, 0x672b, 0x3d4a, 0x4267, 0x5124, 0x3878, 0x485e, 0x4d33, + 0x4b3f, 0x672d, 0x3e78, 0x3e6e, 0x3073, 0x672f, 0x672e, 0x6730, + 0x5065, 0x4b67, 0x3e2d, 0x575b, 0x6736, 0x3371, 0x6739, 0x4f5f, + 0x6737, 0x4e2c, 0x673a, 0x3859, 0x4d78, 0x3141, 0x573a, 0x425a, + 0x6738, 0x6732, 0x5540, 0x3442, 0x6731, 0x4360, 0x6735, 0x673b, + 0x3d74, 0x6733, 0x424c, 0x5077, 0x6734, 0x673d, 0x3c6a, 0x673c, + 0x3c29, 0x3650, 0x355e, 0x6745, 0x5435, 0x6741, 0x3160, 0x3b3a, + 0x4365, 0x4e33, 0x6743, 0x673f, 0x4137, 0x6742, 0x673e, 0x7924, + 0x5d53, 0x6746, 0x674b, 0x6744, 0x6727, 0x674c, 0x383f, 0x6747, + 0x6749, 0x6748, 0x4f58, 0x4c50, 0x376c, 0x674a, 0x4b75, 0x575d, + 0x6750, 0x7863, 0x674f, 0x746a, 0x4246, 0x674e, 0x575c, 0x3c28, + 0x6752, 0x6751, 0x6755, 0x562f, 0x4949, 0x6754, 0x4846, 0x6740, + 0x497e, 0x3b66, 0x7873, 0x3c6b, 0x6756, 0x6759, 0x6758, 0x3d49, + 0x526f, 0x3c4c, 0x674d, 0x6757, 0x6753, 0x667e, 0x5078, 0x784d, + 0x3278, 0x5327, 0x7826, 0x4f4b, 0x675a, 0x4042, 0x733f, 0x786e, + 0x3723, 0x3055, 0x425e, 0x6e3c, 0x6e3f, 0x7447, 0x5265, 0x4f30, + 0x474c, 0x716f, 0x716c, 0x4a25, 0x4e45, 0x412a, 0x344f, 0x4979, + 0x4b4a, 0x7179, 0x4474, 0x5630, 0x7177, 0x4c7d, 0x417b, 0x4b60, + 0x5032, 0x6b56, 0x554d, 0x784c, 0x4976, 0x6b4b, 0x6b61, 0x4454, + 0x5657, 0x3326, 0x3774, 0x3d3a, 0x4465, 0x3528, 0x6b5a, 0x4527, + 0x4133, 0x466a, 0x6b77, 0x4030, 0x6b4d, 0x5460, 0x5975, 0x4159, + 0x4c28, 0x536b, 0x504b, 0x3e59, 0x3e49, 0x7867, 0x3255, 0x742f, + 0x3d22, 0x7435, 0x3c68, 0x515e, 0x5b3b, 0x5c51, 0x785c, 0x7832, + 0x7843, 0x572f, 0x3e25, 0x3c54, 0x5c48, 0x3b2a, 0x5c49, 0x4033, + 0x4d72, 0x5d2b, 0x5236, 0x5d26, 0x5d27, 0x4e2d, 0x7877, 0x3b67, + 0x5d3b, 0x5d2a, 0x3254, 0x5d25, 0x3847, 0x412b, 0x5c4a, 0x5c6a, + 0x7825, 0x5d64, 0x3d2f, 0x5c60, 0x5271, 0x5d21, 0x5d5b, 0x5c71, + 0x5d24, 0x5c3f, 0x5d35, 0x5c69, 0x5d5e, 0x3534, 0x4e5f, 0x4f74, + 0x5d77, 0x5c76, 0x3c3b, 0x5c3c, 0x7844, 0x473e, 0x5d32, 0x3c76, + 0x4878, 0x5c79, 0x4036, 0x5d23, 0x5255, 0x5229, 0x5e34, 0x544c, + 0x5c42, 0x302a, 0x5d7e, 0x5e2d, 0x422b, 0x4b55, 0x463b, 0x5e3a, + 0x5d7c, 0x5c57, 0x403c, 0x5d71, 0x425c, 0x3426, 0x4232, 0x3a45, + 0x3f77, 0x724c, 0x7239, 0x784b, 0x4a34, 0x4f3a, 0x4e4f, 0x724f, + 0x426c, 0x5329, 0x7277, 0x555d, 0x7265, 0x727d, 0x7231, 0x3275, + 0x724d, 0x3366, 0x7249, 0x524f, 0x532c, 0x7232, 0x7253, 0x726e, + 0x402f, 0x7243, 0x3946, 0x324f, 0x4279, 0x565a, 0x785a, 0x4a75, + 0x4e40, 0x3365, 0x563b, 0x7441, 0x406f, 0x3239, 0x5730, 0x7925, + 0x7834, 0x3f63, 0x714d, 0x715a, 0x5974, 0x7150, 0x3040, 0x714f, + 0x7149, 0x715c, 0x4d60, 0x7821, 0x3344, 0x4f2e, 0x3c7b, 0x3966, + 0x4359, 0x4a53, 0x6a68, 0x6a6a, 0x6a6c, 0x4757, 0x6a69, 0x6a6d, + 0x6a6e, 0x6a6f, 0x3e75, 0x4040, 0x6a6b, 0x395b, 0x757c, 0x7623, + 0x3425, 0x5a25, 0x3629, 0x383c, 0x3c46, 0x5136, 0x5a27, 0x4c56, + 0x5a26, 0x5135, 0x5a28, 0x467d, 0x3c47, 0x366f, 0x5148, 0x4b4f, + 0x3e77, 0x5a2b, 0x3743, 0x4968, 0x506d, 0x4b5f, 0x5a2d, 0x556f, + 0x5a2c, 0x5a2e, 0x5a2a, 0x5529, 0x5a31, 0x5a2f, 0x4640, 0x5a30, + 0x5767, 0x344a, 0x5a3c, 0x512f, 0x5268, 0x4a54, 0x4a2b, 0x326f, + 0x5a38, 0x396e, 0x5a39, 0x5a35, 0x3b30, 0x3843, 0x4f6a, 0x5a37, + 0x5a36, 0x5a34, 0x5a33, 0x566f, 0x5a32, 0x3f64, 0x484f, 0x5a3f, + 0x5a40, 0x352e, 0x5355, 0x5a3d, 0x536f, 0x334f, 0x3d6b, 0x4e5c, + 0x4e73, 0x5a3e, 0x4b50, 0x3b65, 0x4b35, 0x4b2d, 0x3f4e, 0x5a47, + 0x374c, 0x526a, 0x3577, 0x5a46, 0x573b, 0x4c38, 0x5a43, 0x476b, + 0x5a3a, 0x5a41, 0x5a42, 0x4142, 0x425b, 0x5a45, 0x5a44, 0x357d, + 0x5a52, 0x5a3b, 0x5a4c, 0x5a50, 0x5033, 0x5a49, 0x5a4d, 0x5a51, + 0x3b64, 0x5a4f, 0x5a48, 0x376d, 0x566e, 0x5168, 0x5a4e, 0x4535, + 0x4431, 0x5a4b, 0x4e3d, 0x4c5c, 0x565f, 0x3b51, 0x4355, 0x5a57, + 0x5a4a, 0x5a55, 0x3079, 0x472b, 0x5a56, 0x3d32, 0x503b, 0x5225, + 0x5a53, 0x5a58, 0x437d, 0x5a59, 0x5a29, 0x3d77, 0x4321, 0x5624, + 0x5a5c, 0x3c25, 0x5a5a, 0x4a36, 0x5a5b, 0x4c37, 0x4657, 0x5a5e, + 0x526b, 0x5269, 0x4734, 0x3b24, 0x537e, 0x3641, 0x3164, 0x7645, + 0x3277, 0x4843, 0x403e, 0x5a5f, 0x5a54, 0x5a5d, 0x4671, 0x3761, + 0x3134, 0x556a, 0x383a, 0x3246, 0x3931, 0x4636, 0x3b75, 0x3737, + 0x4c30, 0x3961, 0x5470, 0x567c, 0x6a5b, 0x6a5f, 0x3721, 0x3973, + 0x3161, 0x4272, 0x347b, 0x6a5c, 0x3751, 0x4c79, 0x6a5d, 0x4333, + 0x3a58, 0x6a5a, 0x4238, 0x415e, 0x3b5f, 0x6a60, 0x574a, 0x3c56, + 0x5474, 0x6a62, 0x495e, 0x3176, 0x6a64, 0x6a63, 0x344d, 0x494d, + 0x4562, 0x6259, 0x4f4d, 0x4274, 0x3c7a, 0x3833, 0x6a66, 0x564a, + 0x6a65, 0x554b, 0x3644, 0x4035, 0x572c, 0x6a67, 0x393a, 0x487c, + 0x5853, 0x6a5e, 0x5738, 0x5479, 0x545e, 0x584d, 0x4944, 0x532e, + 0x6a61, 0x4a6a, 0x3853, 0x545f, 0x384f, 0x5554, 0x4777, 0x7475, + 0x3c79, 0x533b, 0x7544, 0x754f, 0x7567, 0x754e, 0x753b, 0x336c, + 0x7552, 0x543e, 0x755c, 0x7548, 0x7559, 0x7551, 0x7566, 0x345a, + 0x7572, 0x756f, 0x477b, 0x3335, 0x547e, 0x396c, 0x3e7c, 0x5079, + 0x696d, 0x696e, 0x486d, 0x6975, 0x6974, 0x696f, 0x5661, 0x6972, + 0x6977, 0x6970, 0x6973, 0x6978, 0x3d4f, 0x697b, 0x697a, 0x5458, + 0x6979, 0x697c, 0x3828, 0x4761, 0x413e, 0x6a22, 0x3b54, 0x697e, + 0x6a21, 0x3975, 0x697d, 0x3132, 0x4256, 0x3c2d, 0x6a23, 0x4a64, + 0x3778, 0x5537, 0x535f, 0x6c31, 0x4f3d, 0x542f, 0x6a24, 0x572a, + 0x555e, 0x3d4e, 0x6a25, 0x3a64, 0x604e, 0x6976, 0x6971, 0x306c, + 0x3447, 0x3168, 0x3167, 0x4529, 0x783c, 0x6549, 0x5562, 0x412c, + 0x3d78, 0x544b, 0x397d, 0x346f, 0x4e25, 0x5137, 0x355d, 0x5436, + 0x4a4a, 0x3359, 0x4728, 0x5121, 0x5245, 0x4149, 0x4275, 0x3b39, + 0x6547, 0x315f, 0x425f, 0x654e, 0x7879, 0x5b23, 0x534a, 0x5b29, + 0x4f67, 0x575e, 0x5a79, 0x5447, 0x354b, 0x5623, 0x415a, 0x3526, + 0x5a7e, 0x5b26, 0x5a77, 0x5b2a, 0x544d, 0x3373, 0x523d, 0x3d34, + 0x4470, 0x5046, 0x7527, 0x7526, 0x4a4d, 0x784e, 0x6e44, 0x6e45, + 0x6e46, 0x6e49, 0x6e48, 0x3624, 0x6e47, 0x556b, 0x3576, 0x6e4c, + 0x6e4b, 0x3730, 0x6e4e, 0x6e4a, 0x6e4f, 0x4725, 0x6e59, 0x6e55, + 0x6e57, 0x6e50, 0x4446, 0x365b, 0x3933, 0x6e54, 0x6e53, 0x332e, + 0x4525, 0x3e7b, 0x3846, 0x6e58, 0x6e51, 0x6e56, 0x6e6a, 0x6e66, + 0x6e5d, 0x4165, 0x6e5c, 0x6e60, 0x6e6b, 0x6e5a, 0x6e5f, 0x534b, + 0x6e64, 0x3c58, 0x6e52, 0x6e68, 0x6e67, 0x6e69, 0x322c, 0x6e5e, + 0x472f, 0x432d, 0x4726, 0x6e61, 0x3227, 0x6e5b, 0x6e62, 0x6e63, + 0x3d42, 0x6e6f, 0x3875, 0x6e7e, 0x5278, 0x6f25, 0x4d2d, 0x4f33, + 0x6e7d, 0x6e79, 0x437a, 0x6f22, 0x4f4e, 0x6e6e, 0x6f28, 0x523f, + 0x6e77, 0x6f27, 0x6e7b, 0x6e70, 0x6f24, 0x6e6d, 0x6e76, 0x4f7a, + 0x5062, 0x4c60, 0x6f31, 0x4241, 0x6f36, 0x503f, 0x3135, 0x6e7a, + 0x6e72, 0x3766, 0x6f32, 0x6f37, 0x6e74, 0x337a, 0x6f2d, 0x6f38, + 0x6f30, 0x464c, 0x4871, 0x6e71, 0x6f2f, 0x6f2e, 0x6f2b, 0x6f33, + 0x3e62, 0x3856, 0x6f3e, 0x6f3a, 0x6f42, 0x6f43, 0x5736, 0x6f39, + 0x6f3f, 0x3438, 0x6f45, 0x6f23, 0x6f3c, 0x6f44, 0x3627, 0x472e, + 0x3d75, 0x432a, 0x4e7d, 0x6f40, 0x346d, 0x423c, 0x434c, 0x7823, + 0x6f2a, 0x6f3d, 0x4f47, 0x6f41, 0x6e4d, 0x6f47, 0x3978, 0x3646, + 0x6f49, 0x5521, 0x364d, 0x6f4a, 0x6f46, 0x6f3b, 0x4742, 0x6f4c, + 0x3c7c, 0x6f48, 0x5560, 0x6f71, 0x433e, 0x6f4d, 0x6f51, 0x3077, + 0x4b78, 0x6f53, 0x4e59, 0x5d76, 0x6f56, 0x6e78, 0x6f21, 0x6f4b, + 0x3864, 0x5572, 0x6f57, 0x4478, 0x6f58, 0x6f54, 0x6f55, 0x6f5f, + 0x6f60, 0x4134, 0x6f52, 0x6f5d, 0x6f61, 0x6f2c, 0x6f4f, 0x6f5b, + 0x6f5c, 0x6f5e, 0x3279, 0x3e35, 0x6f5a, 0x6f4e, 0x7649, 0x6e7c, + 0x6f64, 0x6f6a, 0x6e73, 0x6f26, 0x414d, 0x6f29, 0x6f66, 0x6f62, + 0x5653, 0x6f6b, 0x6f63, 0x6f68, 0x6f34, 0x6f35, 0x6f50, 0x412d, + 0x6f6d, 0x4058, 0x4c7a, 0x6e6c, 0x6e75, 0x6f6e, 0x567d, 0x6f6c, + 0x6f59, 0x3c78, 0x6f6f, 0x6e65, 0x6f70, 0x6f65, 0x6f67, 0x543f, + 0x4f62, 0x4477, 0x6f69, 0x4260, 0x576a, 0x7647, 0x5464, 0x3324, + 0x4345, 0x6345, 0x4941, 0x6346, 0x3155, 0x3f2a, 0x634a, 0x6348, + 0x4872, 0x4f50, 0x3c64, 0x6349, 0x5522, 0x3a52, 0x3873, 0x7839, + 0x3727, 0x396b, 0x4376, 0x634d, 0x634f, 0x634c, 0x5444, 0x6351, + 0x514b, 0x5156, 0x6355, 0x6354, 0x6350, 0x6353, 0x6356, 0x7822, + 0x6347, 0x402b, 0x6357, 0x403b, 0x6359, 0x6358, 0x635a, 0x3433, + 0x3958, 0x635b, 0x327b, 0x785b, 0x634b, 0x5a6a, 0x4942, 0x5573, + 0x5275, 0x3342, 0x423d, 0x5174, 0x3653, 0x3d57, 0x5449, 0x3c4a, + 0x4b66, 0x4f55, 0x527e, 0x4224, 0x4125, 0x7922, 0x4b64, 0x4b2b, + 0x337b, 0x5453, 0x406b, 0x4451, 0x5446, 0x3567, 0x4e6d, 0x762b, + 0x7628, 0x7630, 0x4169, 0x7626, 0x584c, 0x392e, 0x7864, 0x7733, 0x7732, 0x7861, 0x7735, 0x4e24, 0x484d, 0x3a2b, 0x6838, 0x683a, 0x6839, 0x4f6c, 0x5233, 0x3625, 0x476a, 0x4f6e, 0x4b33, 0x717c, 0x506b, 0x676f, 0x4b4c, 0x717d, 0x717e, 0x5424, 0x4d67, 0x3064, @@ -1274,423 +1299,444 @@ static const unsigned short gb12345ext_2charset[2249] = { 0x763c, 0x763d, 0x763e, 0x782e, 0x466b, 0x552b, 0x6c34, 0x335d, 0x7633, 0x7635, 0x7637, 0x7634, 0x7636, 0x4164, 0x782a, 0x7638, 0x763a, 0x7639, 0x4823, 0x763b, 0x417a, 0x4553, 0x3928, 0x6d68, - 0x396a, + 0x396a, 0x2672, 0x2674, 0x2675, 0x2660, 0x2661, 0x2670, 0x2671, + 0x2662, 0x2663, 0x266e, 0x266f, 0x2666, 0x2667, 0x2664, 0x2665, + 0x2668, 0x2669, 0x266a, 0x266b, }; +static const Summary16 gb12345ext_uni2indx_page01[23] = { + /* 0x0100 */ + { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, + { 0, 0x0110 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0000 }, + { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0000 }, + { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0200 }, + /* 0x0200 */ + { 3, 0x0000 }, { 3, 0x0000 }, { 3, 0x0000 }, { 3, 0x0000 }, + { 3, 0x0000 }, { 3, 0x0002 }, { 4, 0x0002 }, +}; +static const Summary16 gb12345ext_uni2indx_page1e[4] = { + /* 0x1e00 */ + { 5, 0x0000 }, { 5, 0x0000 }, { 5, 0x0000 }, { 5, 0x8000 }, +}; static const Summary16 gb12345ext_uni2indx_page22[3] = { /* 0x2200 */ - { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0020 }, + { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0020 }, }; static const Summary16 gb12345ext_uni2indx_page4e[1306] = { /* 0x4e00 */ - { 1, 0x0080 }, { 2, 0x0002 }, { 3, 0x0000 }, { 3, 0x0001 }, - { 4, 0x0100 }, { 5, 0x0000 }, { 5, 0x0000 }, { 5, 0x0000 }, - { 5, 0x0004 }, { 6, 0x4002 }, { 8, 0x0000 }, { 8, 0x0000 }, - { 8, 0x0040 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0080 }, + { 7, 0x0080 }, { 8, 0x0002 }, { 9, 0x0000 }, { 9, 0x0001 }, + { 10, 0x0100 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0000 }, + { 11, 0x0004 }, { 12, 0x4002 }, { 14, 0x0000 }, { 14, 0x0000 }, + { 14, 0x0040 }, { 15, 0x0000 }, { 15, 0x0000 }, { 15, 0x0080 }, /* 0x4f00 */ - { 10, 0x0000 }, { 10, 0x0000 }, { 10, 0x0000 }, { 10, 0x0000 }, - { 10, 0x0080 }, { 11, 0x0200 }, { 12, 0x0000 }, { 12, 0x0000 }, - { 12, 0x0040 }, { 13, 0x0040 }, { 14, 0x0000 }, { 14, 0x0000 }, - { 14, 0x0004 }, { 15, 0x0000 }, { 15, 0x0001 }, { 16, 0x0000 }, + { 16, 0x0000 }, { 16, 0x0000 }, { 16, 0x0000 }, { 16, 0x0000 }, + { 16, 0x0000 }, { 16, 0x0200 }, { 17, 0x0000 }, { 17, 0x0000 }, + { 17, 0x0040 }, { 18, 0x0040 }, { 19, 0x0000 }, { 19, 0x0000 }, + { 19, 0x0004 }, { 20, 0x0000 }, { 20, 0x0001 }, { 21, 0x0000 }, /* 0x5000 */ - { 16, 0x0a41 }, { 20, 0x0002 }, { 21, 0x0800 }, { 22, 0x0000 }, - { 22, 0x0200 }, { 23, 0x0000 }, { 23, 0x0000 }, { 23, 0x0030 }, - { 25, 0x0000 }, { 25, 0x0340 }, { 28, 0x2004 }, { 30, 0x40b8 }, - { 35, 0x0224 }, { 38, 0x4022 }, { 41, 0x0120 }, { 43, 0x0200 }, + { 21, 0x0a41 }, { 25, 0x0002 }, { 26, 0x0800 }, { 27, 0x0000 }, + { 27, 0x0200 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0030 }, + { 30, 0x0000 }, { 30, 0x0340 }, { 33, 0x2004 }, { 35, 0x40b8 }, + { 40, 0x0224 }, { 43, 0x4022 }, { 46, 0x0120 }, { 48, 0x0200 }, /* 0x5100 */ - { 44, 0x0315 }, { 49, 0x8131 }, { 54, 0x0400 }, { 55, 0x1c84 }, - { 60, 0x0000 }, { 60, 0x0404 }, { 62, 0x0200 }, { 63, 0x0000 }, - { 63, 0x0000 }, { 63, 0x0000 }, { 63, 0x0000 }, { 63, 0x0004 }, - { 64, 0x2140 }, { 67, 0x0000 }, { 67, 0x2001 }, { 69, 0x0002 }, + { 49, 0x0315 }, { 54, 0x8131 }, { 59, 0x0400 }, { 60, 0x1c84 }, + { 65, 0x0000 }, { 65, 0x0404 }, { 67, 0x0200 }, { 68, 0x0000 }, + { 68, 0x0000 }, { 68, 0x0000 }, { 68, 0x0000 }, { 68, 0x0004 }, + { 69, 0x2040 }, { 71, 0x0000 }, { 71, 0x2001 }, { 73, 0x0002 }, /* 0x5200 */ - { 70, 0x0000 }, { 70, 0x0004 }, { 71, 0x0000 }, { 71, 0x0000 }, - { 71, 0x0890 }, { 74, 0x0800 }, { 75, 0x4000 }, { 76, 0x0030 }, - { 78, 0x3688 }, { 84, 0x0002 }, { 85, 0x0000 }, { 85, 0x0000 }, - { 85, 0x0002 }, { 86, 0x6a20 }, { 91, 0x0004 }, { 92, 0x0122 }, + { 74, 0x0000 }, { 74, 0x0004 }, { 75, 0x0000 }, { 75, 0x0000 }, + { 75, 0x0890 }, { 78, 0x0800 }, { 79, 0x4000 }, { 80, 0x0030 }, + { 82, 0x3688 }, { 88, 0x0002 }, { 89, 0x0000 }, { 89, 0x0000 }, + { 89, 0x0002 }, { 90, 0x6a20 }, { 95, 0x0004 }, { 96, 0x0122 }, /* 0x5300 */ - { 95, 0x0000 }, { 95, 0x0000 }, { 95, 0xa000 }, { 97, 0x0002 }, - { 98, 0x0001 }, { 99, 0x0010 }, { 100, 0x0000 }, { 100, 0x0000 }, - { 100, 0x0004 }, { 101, 0x0200 }, { 102, 0x2001 }, { 104, 0x0014 }, - { 106, 0x0008 }, { 107, 0x0000 }, { 107, 0x0404 }, { 109, 0x0041 }, + { 99, 0x0000 }, { 99, 0x0000 }, { 99, 0xa000 }, { 101, 0x0002 }, + { 102, 0x0001 }, { 103, 0x0010 }, { 104, 0x0000 }, { 104, 0x0000 }, + { 104, 0x0004 }, { 105, 0x0200 }, { 106, 0x2001 }, { 108, 0x0014 }, + { 110, 0x0008 }, { 111, 0x0000 }, { 111, 0x0404 }, { 113, 0x0041 }, /* 0x5400 */ - { 111, 0x4000 }, { 112, 0x0000 }, { 112, 0x0000 }, { 112, 0x0000 }, - { 112, 0x0000 }, { 112, 0x0000 }, { 112, 0x0000 }, { 112, 0x0000 }, - { 112, 0x0000 }, { 112, 0x0000 }, { 112, 0x0000 }, { 112, 0x1000 }, - { 113, 0x0000 }, { 113, 0x0000 }, { 113, 0x0002 }, { 114, 0x0000 }, + { 115, 0x4000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, + { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, + { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x1000 }, + { 117, 0x0000 }, { 117, 0x0000 }, { 117, 0x0002 }, { 118, 0x0000 }, /* 0x5500 */ - { 114, 0x0010 }, { 115, 0x0000 }, { 115, 0x0000 }, { 115, 0x0000 }, - { 115, 0x8000 }, { 116, 0x4008 }, { 118, 0x0000 }, { 118, 0x0000 }, - { 118, 0x0000 }, { 118, 0x0400 }, { 119, 0x5400 }, { 122, 0x0004 }, - { 123, 0x40c0 }, { 126, 0x0400 }, { 127, 0x0200 }, { 128, 0x0040 }, + { 118, 0x0010 }, { 119, 0x0000 }, { 119, 0x0000 }, { 119, 0x0000 }, + { 119, 0x8000 }, { 120, 0x4008 }, { 122, 0x0000 }, { 122, 0x0000 }, + { 122, 0x0000 }, { 122, 0x0000 }, { 122, 0x5400 }, { 125, 0x0004 }, + { 126, 0x40c0 }, { 129, 0x0400 }, { 130, 0x0200 }, { 131, 0x0040 }, /* 0x5600 */ - { 129, 0x2040 }, { 131, 0x10d0 }, { 135, 0xc200 }, { 138, 0x0121 }, - { 141, 0x0002 }, { 142, 0x2000 }, { 143, 0x8061 }, { 147, 0x0314 }, - { 151, 0x1081 }, { 154, 0x0220 }, { 156, 0x4140 }, { 159, 0x0058 }, - { 162, 0x1327 }, { 169, 0x0002 }, { 170, 0x0000 }, { 170, 0x0000 }, + { 132, 0x2040 }, { 134, 0x10d0 }, { 138, 0xc200 }, { 141, 0x0121 }, + { 144, 0x0002 }, { 145, 0x2000 }, { 146, 0x8061 }, { 150, 0x0314 }, + { 154, 0x1081 }, { 157, 0x0220 }, { 159, 0x4140 }, { 162, 0x0058 }, + { 165, 0x1327 }, { 172, 0x0002 }, { 173, 0x0000 }, { 173, 0x0000 }, /* 0x5700 */ - { 170, 0x2880 }, { 173, 0x014c }, { 177, 0x0000 }, { 177, 0x0000 }, - { 177, 0x0000 }, { 177, 0x0000 }, { 177, 0x0000 }, { 177, 0x0000 }, - { 177, 0x0000 }, { 177, 0x0000 }, { 177, 0x0000 }, { 177, 0x0000 }, - { 177, 0x0000 }, { 177, 0x0000 }, { 177, 0x0002 }, { 178, 0x0080 }, + { 173, 0x2880 }, { 176, 0x014c }, { 180, 0x0000 }, { 180, 0x0000 }, + { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, + { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, + { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0002 }, { 181, 0x0080 }, /* 0x5800 */ - { 179, 0x0420 }, { 181, 0x2040 }, { 183, 0x8000 }, { 184, 0x0012 }, - { 186, 0x8c00 }, { 189, 0x0084 }, { 191, 0x0014 }, { 193, 0x0220 }, - { 195, 0x0400 }, { 196, 0x1000 }, { 197, 0x4000 }, { 198, 0x4808 }, - { 201, 0x0080 }, { 202, 0xc708 }, { 208, 0x8205 }, { 212, 0x2400 }, + { 182, 0x0420 }, { 184, 0x2040 }, { 186, 0x8000 }, { 187, 0x0012 }, + { 189, 0x8c00 }, { 192, 0x0084 }, { 194, 0x0014 }, { 196, 0x0220 }, + { 198, 0x0400 }, { 199, 0x1000 }, { 200, 0x4000 }, { 201, 0x4808 }, + { 204, 0x0080 }, { 205, 0xc708 }, { 211, 0x8205 }, { 215, 0x2400 }, /* 0x5900 */ - { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0004 }, { 215, 0x4100 }, - { 217, 0x0000 }, { 217, 0x0001 }, { 218, 0x5600 }, { 222, 0x0000 }, - { 222, 0x0000 }, { 222, 0x2000 }, { 223, 0x0000 }, { 223, 0x0000 }, - { 223, 0x0000 }, { 223, 0x0000 }, { 223, 0x0000 }, { 223, 0x0000 }, + { 217, 0x0000 }, { 217, 0x0000 }, { 217, 0x0004 }, { 218, 0x4100 }, + { 220, 0x0000 }, { 220, 0x0000 }, { 220, 0x5600 }, { 224, 0x0000 }, + { 224, 0x0000 }, { 224, 0x2000 }, { 225, 0x0000 }, { 225, 0x0000 }, + { 225, 0x0000 }, { 225, 0x0000 }, { 225, 0x0000 }, { 225, 0x0000 }, /* 0x5a00 */ - { 223, 0x0000 }, { 223, 0x0000 }, { 223, 0x0000 }, { 223, 0x0000 }, - { 223, 0x0002 }, { 224, 0x0000 }, { 224, 0x2040 }, { 226, 0x0000 }, - { 226, 0x0000 }, { 226, 0x0000 }, { 226, 0x0080 }, { 227, 0x2000 }, - { 228, 0x0000 }, { 228, 0x0080 }, { 229, 0x0000 }, { 229, 0x0820 }, + { 225, 0x0000 }, { 225, 0x0000 }, { 225, 0x0000 }, { 225, 0x0000 }, + { 225, 0x0002 }, { 226, 0x0000 }, { 226, 0x2040 }, { 228, 0x0000 }, + { 228, 0x0000 }, { 228, 0x0000 }, { 228, 0x0080 }, { 229, 0x2000 }, + { 230, 0x0000 }, { 230, 0x0080 }, { 231, 0x0000 }, { 231, 0x0820 }, /* 0x5b00 */ - { 231, 0x1901 }, { 235, 0x0200 }, { 236, 0x0402 }, { 238, 0x0101 }, - { 240, 0x1000 }, { 241, 0x0000 }, { 241, 0x0800 }, { 242, 0x8100 }, - { 244, 0x0000 }, { 244, 0x0000 }, { 244, 0x0000 }, { 244, 0x0000 }, - { 244, 0x0000 }, { 244, 0x0000 }, { 244, 0x1ac4 }, { 250, 0x0060 }, + { 233, 0x1901 }, { 237, 0x0200 }, { 238, 0x0402 }, { 240, 0x0101 }, + { 242, 0x1000 }, { 243, 0x0000 }, { 243, 0x0800 }, { 244, 0x8100 }, + { 246, 0x0000 }, { 246, 0x0000 }, { 246, 0x0000 }, { 246, 0x0000 }, + { 246, 0x0000 }, { 246, 0x0000 }, { 246, 0x1ac4 }, { 252, 0x0060 }, /* 0x5c00 */ - { 252, 0x6980 }, { 257, 0x0000 }, { 257, 0x0000 }, { 257, 0x0080 }, - { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x1114 }, { 262, 0x0000 }, - { 262, 0x0000 }, { 262, 0x0000 }, { 262, 0x0002 }, { 263, 0x0000 }, - { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x2050 }, + { 254, 0x6980 }, { 259, 0x0000 }, { 259, 0x0000 }, { 259, 0x0080 }, + { 260, 0x0000 }, { 260, 0x0000 }, { 260, 0x1114 }, { 264, 0x0000 }, + { 264, 0x0000 }, { 264, 0x0000 }, { 264, 0x0002 }, { 265, 0x0000 }, + { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x2050 }, /* 0x5d00 */ - { 266, 0x2000 }, { 267, 0x0080 }, { 268, 0x1004 }, { 270, 0x0000 }, - { 270, 0x0000 }, { 270, 0x0001 }, { 271, 0x0000 }, { 271, 0x0000 }, - { 271, 0x0092 }, { 274, 0x0080 }, { 275, 0x0081 }, { 277, 0x1500 }, - { 280, 0x0800 }, { 281, 0x0014 }, { 283, 0x0000 }, { 283, 0x0001 }, + { 268, 0x2000 }, { 269, 0x0080 }, { 270, 0x1000 }, { 271, 0x0000 }, + { 271, 0x0000 }, { 271, 0x0001 }, { 272, 0x0000 }, { 272, 0x0000 }, + { 272, 0x0092 }, { 275, 0x0080 }, { 276, 0x0081 }, { 278, 0x1500 }, + { 281, 0x0800 }, { 282, 0x0014 }, { 284, 0x0000 }, { 284, 0x0001 }, /* 0x5e00 */ - { 284, 0x0000 }, { 284, 0x0100 }, { 285, 0x0820 }, { 287, 0x0048 }, - { 289, 0x0009 }, { 291, 0x8180 }, { 294, 0x1808 }, { 297, 0xc204 }, - { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0800 }, { 302, 0x0000 }, - { 302, 0x0000 }, { 302, 0x8000 }, { 303, 0x100f }, { 308, 0x0008 }, + { 285, 0x0000 }, { 285, 0x0100 }, { 286, 0x0820 }, { 288, 0x0048 }, + { 290, 0x0009 }, { 292, 0x8180 }, { 295, 0x1808 }, { 298, 0xc204 }, + { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0800 }, { 303, 0x0000 }, + { 303, 0x0000 }, { 303, 0x8000 }, { 304, 0x100f }, { 309, 0x0008 }, /* 0x5f00 */ - { 309, 0x0000 }, { 309, 0x0000 }, { 309, 0x0000 }, { 309, 0x0028 }, - { 311, 0x5140 }, { 315, 0x0200 }, { 316, 0x0000 }, { 316, 0x0000 }, - { 316, 0x1000 }, { 317, 0x4002 }, { 319, 0x0201 }, { 321, 0x0200 }, - { 322, 0x0000 }, { 322, 0x0000 }, { 322, 0x0000 }, { 322, 0x0000 }, + { 310, 0x0000 }, { 310, 0x0000 }, { 310, 0x0000 }, { 310, 0x0028 }, + { 312, 0x5140 }, { 316, 0x0200 }, { 317, 0x0000 }, { 317, 0x0000 }, + { 317, 0x1000 }, { 318, 0x4002 }, { 320, 0x0201 }, { 322, 0x0200 }, + { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, /* 0x6000 */ - { 322, 0x0000 }, { 322, 0x0000 }, { 322, 0x0000 }, { 322, 0x0000 }, - { 322, 0x0000 }, { 322, 0x0000 }, { 322, 0x0000 }, { 322, 0x0000 }, - { 322, 0x0000 }, { 322, 0x0000 }, { 322, 0x0000 }, { 322, 0x0060 }, - { 324, 0x0000 }, { 324, 0x0000 }, { 324, 0x0002 }, { 325, 0x0806 }, + { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, + { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, + { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0060 }, + { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0002 }, { 326, 0x0806 }, /* 0x6100 */ - { 328, 0x0000 }, { 328, 0x1800 }, { 330, 0x0000 }, { 330, 0xc090 }, - { 334, 0x0800 }, { 335, 0x8500 }, { 338, 0x4c18 }, { 343, 0x0048 }, - { 345, 0x0404 }, { 347, 0x0407 }, { 351, 0x4810 }, { 354, 0x0044 }, - { 356, 0x1280 }, { 359, 0xc000 }, { 361, 0x0108 }, { 363, 0x55c4 }, + { 329, 0x0000 }, { 329, 0x1800 }, { 331, 0x0000 }, { 331, 0xc090 }, + { 335, 0x0800 }, { 336, 0x8500 }, { 339, 0x4c18 }, { 344, 0x0048 }, + { 346, 0x0404 }, { 348, 0x0407 }, { 352, 0x4810 }, { 355, 0x0044 }, + { 357, 0x1280 }, { 360, 0xc000 }, { 362, 0x0108 }, { 364, 0x55c4 }, /* 0x6200 */ - { 370, 0x0081 }, { 372, 0x0010 }, { 373, 0x0280 }, { 375, 0x0005 }, + { 371, 0x0081 }, { 373, 0x0010 }, { 374, 0x0080 }, { 375, 0x0005 }, { 377, 0x0000 }, { 377, 0x0002 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, /* 0x6300 */ { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x4000 }, { 379, 0x0000 }, { 379, 0x0000 }, { 379, 0x4900 }, { 382, 0x0004 }, - { 383, 0x0018 }, { 385, 0x0200 }, { 386, 0x0000 }, { 386, 0x0000 }, - { 386, 0x0001 }, { 387, 0x0c00 }, { 389, 0x4000 }, { 390, 0x0000 }, + { 383, 0x0018 }, { 385, 0x0000 }, { 385, 0x0000 }, { 385, 0x0000 }, + { 385, 0x0001 }, { 386, 0x0400 }, { 387, 0x4000 }, { 388, 0x0000 }, /* 0x6400 */ - { 390, 0x2000 }, { 391, 0x0080 }, { 392, 0x0000 }, { 392, 0x0040 }, - { 393, 0x0000 }, { 393, 0x9002 }, { 396, 0x8000 }, { 397, 0x0848 }, - { 400, 0x0100 }, { 401, 0x8008 }, { 403, 0x0828 }, { 406, 0xc80c }, - { 411, 0x0c92 }, { 416, 0x0410 }, { 418, 0x9001 }, { 421, 0x5c97 }, + { 388, 0x2000 }, { 389, 0x0080 }, { 390, 0x0000 }, { 390, 0x0040 }, + { 391, 0x0000 }, { 391, 0x9002 }, { 394, 0x8000 }, { 395, 0x0848 }, + { 398, 0x0100 }, { 399, 0x8008 }, { 401, 0x0828 }, { 404, 0xc80c }, + { 409, 0x0c92 }, { 414, 0x0410 }, { 416, 0x9001 }, { 419, 0x5c97 }, /* 0x6500 */ - { 430, 0x8050 }, { 433, 0x2a50 }, { 438, 0x141c }, { 443, 0x0000 }, - { 443, 0x0000 }, { 443, 0x0080 }, { 444, 0x0000 }, { 444, 0x0120 }, - { 446, 0x000c }, { 448, 0x00a0 }, { 450, 0x1000 }, { 451, 0x0080 }, - { 452, 0x0000 }, { 452, 0x0000 }, { 452, 0x0000 }, { 452, 0x0000 }, + { 428, 0x8050 }, { 431, 0x2a50 }, { 436, 0x141c }, { 441, 0x0000 }, + { 441, 0x0000 }, { 441, 0x0080 }, { 442, 0x0000 }, { 442, 0x0120 }, + { 444, 0x000c }, { 446, 0x00a0 }, { 448, 0x1000 }, { 449, 0x0080 }, + { 450, 0x0000 }, { 450, 0x0000 }, { 450, 0x0000 }, { 450, 0x0000 }, /* 0x6600 */ - { 452, 0x0000 }, { 452, 0x0000 }, { 452, 0x0000 }, { 452, 0x0000 }, - { 452, 0x0204 }, { 454, 0x2000 }, { 455, 0x0000 }, { 455, 0x0000 }, - { 455, 0x0300 }, { 457, 0x0000 }, { 457, 0x0804 }, { 459, 0x0000 }, - { 459, 0x02d0 }, { 463, 0x0040 }, { 464, 0x1001 }, { 466, 0x0100 }, + { 450, 0x0000 }, { 450, 0x0000 }, { 450, 0x0000 }, { 450, 0x0000 }, + { 450, 0x0004 }, { 451, 0x2000 }, { 452, 0x0000 }, { 452, 0x0000 }, + { 452, 0x0300 }, { 454, 0x0000 }, { 454, 0x0804 }, { 456, 0x0000 }, + { 456, 0x02d0 }, { 460, 0x0040 }, { 461, 0x1001 }, { 463, 0x0100 }, /* 0x6700 */ - { 467, 0x0008 }, { 468, 0x0000 }, { 468, 0x8080 }, { 470, 0x0010 }, - { 471, 0x0000 }, { 471, 0x0000 }, { 471, 0x0000 }, { 471, 0x4002 }, - { 473, 0x0000 }, { 473, 0x0000 }, { 473, 0x0000 }, { 473, 0x0000 }, - { 473, 0x0000 }, { 473, 0x0000 }, { 473, 0x0000 }, { 473, 0x0000 }, + { 464, 0x0008 }, { 465, 0x0000 }, { 465, 0x8080 }, { 467, 0x0010 }, + { 468, 0x0000 }, { 468, 0x0000 }, { 468, 0x0000 }, { 468, 0x4002 }, + { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, + { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, /* 0x6800 */ - { 473, 0x0000 }, { 473, 0x0000 }, { 473, 0x0000 }, { 473, 0x0000 }, - { 473, 0x0000 }, { 473, 0x0000 }, { 473, 0x0000 }, { 473, 0x0000 }, - { 473, 0x0000 }, { 473, 0xa100 }, { 476, 0x0000 }, { 476, 0x0000 }, - { 476, 0x0010 }, { 477, 0x80c0 }, { 480, 0x0080 }, { 481, 0x0004 }, + { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, + { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, + { 470, 0x0000 }, { 470, 0xa100 }, { 473, 0x0000 }, { 473, 0x0000 }, + { 473, 0x0000 }, { 473, 0x80c0 }, { 476, 0x0080 }, { 477, 0x0000 }, /* 0x6900 */ - { 482, 0x8000 }, { 483, 0x0000 }, { 483, 0x0000 }, { 483, 0x0000 }, - { 483, 0x0400 }, { 484, 0x0008 }, { 485, 0x2100 }, { 487, 0x0020 }, - { 488, 0x0000 }, { 488, 0x0000 }, { 488, 0x4400 }, { 490, 0x8000 }, - { 491, 0x2800 }, { 493, 0x0000 }, { 493, 0x0080 }, { 494, 0x0008 }, + { 477, 0x8000 }, { 478, 0x0000 }, { 478, 0x0000 }, { 478, 0x0000 }, + { 478, 0x0400 }, { 479, 0x0008 }, { 480, 0x2100 }, { 482, 0x0020 }, + { 483, 0x0000 }, { 483, 0x0000 }, { 483, 0x4400 }, { 485, 0x8000 }, + { 486, 0x2800 }, { 488, 0x0000 }, { 488, 0x0080 }, { 489, 0x0008 }, /* 0x6a00 */ - { 495, 0x0026 }, { 498, 0x4208 }, { 501, 0x0008 }, { 502, 0x0700 }, - { 505, 0x0900 }, { 507, 0x8000 }, { 508, 0x0004 }, { 509, 0x0000 }, - { 509, 0x0200 }, { 510, 0x1010 }, { 512, 0x800c }, { 515, 0x0908 }, - { 518, 0x0008 }, { 519, 0xec08 }, { 525, 0x1580 }, { 529, 0x0908 }, + { 490, 0x0026 }, { 493, 0x4208 }, { 496, 0x0008 }, { 497, 0x0700 }, + { 500, 0x0900 }, { 502, 0x8000 }, { 503, 0x0004 }, { 504, 0x0000 }, + { 504, 0x0200 }, { 505, 0x1010 }, { 507, 0x800c }, { 510, 0x0908 }, + { 513, 0x0008 }, { 514, 0xec08 }, { 520, 0x1580 }, { 524, 0x0908 }, /* 0x6b00 */ - { 532, 0x8410 }, { 535, 0x4044 }, { 538, 0x0000 }, { 538, 0x2000 }, - { 539, 0x0000 }, { 539, 0x8001 }, { 541, 0x0002 }, { 542, 0x0184 }, - { 545, 0x0000 }, { 545, 0x4100 }, { 547, 0xc810 }, { 551, 0x0c04 }, - { 554, 0x0040 }, { 555, 0x0000 }, { 555, 0x0000 }, { 555, 0x8000 }, + { 527, 0x8410 }, { 530, 0x4044 }, { 533, 0x0000 }, { 533, 0x2000 }, + { 534, 0x0000 }, { 534, 0x8001 }, { 536, 0x0002 }, { 537, 0x0184 }, + { 540, 0x0000 }, { 540, 0x4100 }, { 542, 0xc810 }, { 546, 0x0c04 }, + { 549, 0x0040 }, { 550, 0x0000 }, { 550, 0x0000 }, { 550, 0x8000 }, /* 0x6c00 */ - { 556, 0x1100 }, { 558, 0x0000 }, { 558, 0x1808 }, { 561, 0x0000 }, - { 561, 0x0000 }, { 561, 0x0000 }, { 561, 0x0000 }, { 561, 0x0000 }, - { 561, 0x0000 }, { 561, 0x0000 }, { 561, 0x0000 }, { 561, 0x0000 }, - { 561, 0x0000 }, { 561, 0x0000 }, { 561, 0x0000 }, { 561, 0x0000 }, + { 551, 0x1100 }, { 553, 0x0000 }, { 553, 0x1808 }, { 556, 0x0000 }, + { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, + { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, + { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, /* 0x6d00 */ - { 561, 0x0000 }, { 561, 0x0000 }, { 561, 0x0000 }, { 561, 0x0000 }, - { 561, 0x0000 }, { 561, 0x0000 }, { 561, 0x0000 }, { 561, 0x0200 }, - { 562, 0x0084 }, { 564, 0x0000 }, { 564, 0x0000 }, { 564, 0x0000 }, - { 564, 0x0001 }, { 565, 0x0000 }, { 565, 0x0400 }, { 566, 0x0460 }, + { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, + { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0200 }, + { 557, 0x0084 }, { 559, 0x0000 }, { 559, 0x0000 }, { 559, 0x0000 }, + { 559, 0x0001 }, { 560, 0x0000 }, { 560, 0x0400 }, { 561, 0x0460 }, /* 0x6e00 */ - { 569, 0x0000 }, { 569, 0x0200 }, { 570, 0x1040 }, { 572, 0x4000 }, - { 573, 0x0000 }, { 573, 0x4000 }, { 574, 0x8000 }, { 575, 0x0000 }, - { 575, 0x0000 }, { 575, 0x2040 }, { 577, 0x0000 }, { 577, 0x0000 }, - { 577, 0x5030 }, { 581, 0x0000 }, { 581, 0x9000 }, { 583, 0x8184 }, + { 564, 0x0000 }, { 564, 0x0000 }, { 564, 0x1040 }, { 566, 0x4000 }, + { 567, 0x0000 }, { 567, 0x4000 }, { 568, 0x8000 }, { 569, 0x0000 }, + { 569, 0x0000 }, { 569, 0x2040 }, { 571, 0x0000 }, { 571, 0x0000 }, + { 571, 0x5030 }, { 575, 0x0000 }, { 575, 0x9000 }, { 577, 0x8184 }, /* 0x6f00 */ - { 587, 0x0002 }, { 588, 0x0400 }, { 589, 0x100c }, { 592, 0x8104 }, - { 595, 0x0002 }, { 596, 0x0a12 }, { 600, 0x8010 }, { 602, 0x8081 }, - { 605, 0x00c1 }, { 608, 0x0080 }, { 609, 0x4211 }, { 613, 0x0002 }, - { 614, 0x000a }, { 616, 0x8920 }, { 620, 0x0810 }, { 622, 0x5403 }, + { 581, 0x0002 }, { 582, 0x0400 }, { 583, 0x100c }, { 586, 0x8104 }, + { 589, 0x0002 }, { 590, 0x0212 }, { 593, 0x8010 }, { 595, 0x8081 }, + { 598, 0x00c1 }, { 601, 0x0080 }, { 602, 0x4211 }, { 606, 0x0002 }, + { 607, 0x000a }, { 609, 0x8920 }, { 613, 0x0810 }, { 615, 0x5403 }, /* 0x7000 */ - { 627, 0x8a60 }, { 632, 0xa120 }, { 636, 0x0181 }, { 639, 0x4005 }, - { 642, 0x0018 }, { 644, 0x2122 }, { 648, 0x0098 }, { 651, 0x0000 }, - { 651, 0x0000 }, { 651, 0x0000 }, { 651, 0x0000 }, { 651, 0x0000 }, - { 651, 0x8000 }, { 652, 0x0000 }, { 652, 0x0000 }, { 652, 0x0010 }, + { 620, 0x8a60 }, { 625, 0xa120 }, { 629, 0x0181 }, { 632, 0x4005 }, + { 635, 0x0018 }, { 637, 0x2122 }, { 641, 0x0098 }, { 644, 0x0000 }, + { 644, 0x0000 }, { 644, 0x0000 }, { 644, 0x0000 }, { 644, 0x0000 }, + { 644, 0x8000 }, { 645, 0x0000 }, { 645, 0x0000 }, { 645, 0x0010 }, /* 0x7100 */ - { 653, 0x0000 }, { 653, 0x0000 }, { 653, 0x0002 }, { 654, 0x0000 }, - { 654, 0x0200 }, { 655, 0x0004 }, { 656, 0x1224 }, { 660, 0x0000 }, - { 660, 0x0000 }, { 660, 0x0084 }, { 662, 0x0000 }, { 662, 0x4002 }, - { 664, 0x0102 }, { 666, 0x9204 }, { 670, 0x2040 }, { 672, 0x5010 }, + { 646, 0x0000 }, { 646, 0x0000 }, { 646, 0x0002 }, { 647, 0x0000 }, + { 647, 0x0200 }, { 648, 0x0004 }, { 649, 0x1204 }, { 652, 0x0000 }, + { 652, 0x0000 }, { 652, 0x0084 }, { 654, 0x0000 }, { 654, 0x4002 }, + { 656, 0x0102 }, { 658, 0x9204 }, { 662, 0x2040 }, { 664, 0x5010 }, /* 0x7200 */ - { 675, 0x2000 }, { 676, 0x0801 }, { 678, 0x2000 }, { 679, 0x4404 }, - { 682, 0x0000 }, { 682, 0x0100 }, { 683, 0x0000 }, { 683, 0x2000 }, - { 684, 0x0000 }, { 684, 0x0040 }, { 685, 0x0084 }, { 687, 0x0000 }, - { 687, 0x0001 }, { 688, 0x0000 }, { 688, 0x0000 }, { 688, 0x2200 }, + { 667, 0x2000 }, { 668, 0x0801 }, { 670, 0x0000 }, { 670, 0x4404 }, + { 673, 0x0000 }, { 673, 0x0100 }, { 674, 0x0000 }, { 674, 0x2000 }, + { 675, 0x0000 }, { 675, 0x0040 }, { 676, 0x0084 }, { 678, 0x0000 }, + { 678, 0x0001 }, { 679, 0x0000 }, { 679, 0x0000 }, { 679, 0x2200 }, /* 0x7300 */ - { 690, 0x0000 }, { 690, 0x0200 }, { 691, 0x0000 }, { 691, 0x0840 }, - { 693, 0x0032 }, { 696, 0x0000 }, { 696, 0x0d00 }, { 699, 0x1da5 }, - { 707, 0x0001 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, - { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x4000 }, + { 681, 0x0000 }, { 681, 0x0000 }, { 681, 0x0000 }, { 681, 0x0840 }, + { 683, 0x0032 }, { 686, 0x0000 }, { 686, 0x0d00 }, { 689, 0x1da5 }, + { 697, 0x0001 }, { 698, 0x0000 }, { 698, 0x0000 }, { 698, 0x0000 }, + { 698, 0x0000 }, { 698, 0x0000 }, { 698, 0x0000 }, { 698, 0x4000 }, /* 0x7400 */ - { 709, 0x0000 }, { 709, 0x0000 }, { 709, 0x0000 }, { 709, 0x8000 }, - { 710, 0x0800 }, { 711, 0x0000 }, { 711, 0x0608 }, { 714, 0x0000 }, - { 714, 0x0200 }, { 715, 0x0000 }, { 715, 0x0048 }, { 717, 0x2001 }, - { 719, 0x8400 }, { 721, 0x0410 }, { 723, 0x0000 }, { 723, 0x0000 }, + { 699, 0x0000 }, { 699, 0x0000 }, { 699, 0x0000 }, { 699, 0x8000 }, + { 700, 0x0800 }, { 701, 0x0000 }, { 701, 0x0608 }, { 704, 0x0000 }, + { 704, 0x0200 }, { 705, 0x0000 }, { 705, 0x0048 }, { 707, 0x2001 }, + { 709, 0x8400 }, { 711, 0x0410 }, { 713, 0x0000 }, { 713, 0x0000 }, /* 0x7500 */ - { 723, 0x1000 }, { 724, 0x0000 }, { 724, 0x0008 }, { 725, 0x0000 }, - { 725, 0x0000 }, { 725, 0x2000 }, { 726, 0x0804 }, { 728, 0x0040 }, - { 729, 0x0480 }, { 731, 0x0000 }, { 731, 0x0000 }, { 731, 0x0000 }, - { 731, 0x0080 }, { 732, 0x0200 }, { 733, 0x0000 }, { 733, 0x0000 }, + { 713, 0x1000 }, { 714, 0x0000 }, { 714, 0x0008 }, { 715, 0x0000 }, + { 715, 0x0000 }, { 715, 0x2000 }, { 716, 0x0804 }, { 718, 0x0040 }, + { 719, 0x0080 }, { 720, 0x0000 }, { 720, 0x0000 }, { 720, 0x0000 }, + { 720, 0x0080 }, { 721, 0x0200 }, { 722, 0x0000 }, { 722, 0x0000 }, /* 0x7600 */ - { 733, 0x2804 }, { 736, 0x4008 }, { 738, 0x0082 }, { 740, 0x0800 }, - { 741, 0x02c4 }, { 745, 0x8100 }, { 747, 0x72b4 }, { 755, 0x1007 }, - { 759, 0x0000 }, { 759, 0x0400 }, { 760, 0x0000 }, { 760, 0x0500 }, - { 762, 0x0000 }, { 762, 0x4000 }, { 763, 0x009a }, { 767, 0x0000 }, + { 722, 0x2804 }, { 725, 0x4000 }, { 726, 0x0082 }, { 728, 0x0800 }, + { 729, 0x02c4 }, { 733, 0x8100 }, { 735, 0x72b4 }, { 743, 0x1007 }, + { 747, 0x0000 }, { 747, 0x0400 }, { 748, 0x0000 }, { 748, 0x0500 }, + { 750, 0x0000 }, { 750, 0x4000 }, { 751, 0x009a }, { 755, 0x0000 }, /* 0x7700 */ - { 767, 0x0000 }, { 767, 0x0000 }, { 767, 0x0000 }, { 767, 0x0000 }, - { 767, 0x8000 }, { 768, 0x5000 }, { 770, 0x0000 }, { 770, 0x0000 }, - { 770, 0x0000 }, { 770, 0x4100 }, { 772, 0x2000 }, { 773, 0x1000 }, - { 774, 0x0080 }, { 775, 0x0400 }, { 776, 0x8000 }, { 777, 0x0000 }, + { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x0000 }, + { 755, 0x8000 }, { 756, 0x4000 }, { 757, 0x0000 }, { 757, 0x0000 }, + { 757, 0x0000 }, { 757, 0x4100 }, { 759, 0x2000 }, { 760, 0x1000 }, + { 761, 0x0080 }, { 762, 0x0400 }, { 763, 0x8000 }, { 764, 0x0000 }, /* 0x7800 */ - { 777, 0x0000 }, { 777, 0x0000 }, { 777, 0x0000 }, { 777, 0x0000 }, - { 777, 0x0008 }, { 778, 0x0000 }, { 778, 0xc110 }, { 782, 0x0000 }, - { 782, 0x0000 }, { 782, 0x0000 }, { 782, 0x2200 }, { 784, 0x1500 }, - { 787, 0x0000 }, { 787, 0x0400 }, { 788, 0x8088 }, { 791, 0x2000 }, + { 764, 0x0000 }, { 764, 0x0000 }, { 764, 0x0000 }, { 764, 0x0000 }, + { 764, 0x0008 }, { 765, 0x0000 }, { 765, 0xc110 }, { 769, 0x0000 }, + { 769, 0x0000 }, { 769, 0x0000 }, { 769, 0x2200 }, { 771, 0x1500 }, + { 774, 0x0000 }, { 774, 0x0400 }, { 775, 0x8088 }, { 778, 0x2000 }, /* 0x7900 */ - { 792, 0x4000 }, { 793, 0x0200 }, { 794, 0x1c40 }, { 798, 0x0002 }, - { 799, 0x0000 }, { 799, 0x0000 }, { 799, 0x0000 }, { 799, 0x0000 }, - { 799, 0x6000 }, { 801, 0x0000 }, { 801, 0x4440 }, { 804, 0x0003 }, - { 806, 0x2000 }, { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x0000 }, + { 779, 0x4000 }, { 780, 0x0200 }, { 781, 0x1c40 }, { 785, 0x0002 }, + { 786, 0x0000 }, { 786, 0x0000 }, { 786, 0x0000 }, { 786, 0x0000 }, + { 786, 0x6000 }, { 788, 0x0000 }, { 788, 0x4440 }, { 791, 0x0003 }, + { 793, 0x2000 }, { 794, 0x0000 }, { 794, 0x0000 }, { 794, 0x0000 }, /* 0x7a00 */ - { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x4000 }, { 808, 0x0002 }, - { 809, 0x7001 }, { 813, 0x0000 }, { 813, 0x0a06 }, { 817, 0x0000 }, - { 817, 0x0000 }, { 817, 0x0000 }, { 817, 0x4600 }, { 820, 0x0440 }, - { 822, 0x05b0 }, { 827, 0x0000 }, { 827, 0x0400 }, { 828, 0x0040 }, + { 794, 0x0000 }, { 794, 0x0000 }, { 794, 0x4000 }, { 795, 0x0002 }, + { 796, 0x7001 }, { 800, 0x0000 }, { 800, 0x0a06 }, { 804, 0x0000 }, + { 804, 0x0000 }, { 804, 0x0000 }, { 804, 0x4600 }, { 807, 0x0440 }, + { 809, 0x05b0 }, { 814, 0x0000 }, { 814, 0x0400 }, { 815, 0x0040 }, /* 0x7b00 */ - { 829, 0x0000 }, { 829, 0x0000 }, { 829, 0x0000 }, { 829, 0x0000 }, - { 829, 0x0040 }, { 830, 0x0002 }, { 831, 0x0080 }, { 832, 0x0000 }, - { 832, 0x8800 }, { 834, 0x0000 }, { 834, 0x0000 }, { 834, 0x0000 }, - { 834, 0x0a11 }, { 838, 0x0000 }, { 838, 0x0210 }, { 840, 0x0008 }, + { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, + { 816, 0x0040 }, { 817, 0x0002 }, { 818, 0x0080 }, { 819, 0x0000 }, + { 819, 0x0800 }, { 820, 0x0000 }, { 820, 0x0000 }, { 820, 0x0000 }, + { 820, 0x0a11 }, { 824, 0x0000 }, { 824, 0x0210 }, { 826, 0x0008 }, /* 0x7c00 */ - { 841, 0x2001 }, { 843, 0x4000 }, { 844, 0x080a }, { 847, 0x6000 }, - { 849, 0x1008 }, { 851, 0x9000 }, { 853, 0x5611 }, { 859, 0x0004 }, - { 860, 0x0000 }, { 860, 0x0000 }, { 860, 0x0000 }, { 860, 0x0000 }, - { 860, 0x0000 }, { 860, 0x6000 }, { 862, 0x0080 }, { 863, 0x4255 }, + { 827, 0x2001 }, { 829, 0x4000 }, { 830, 0x080a }, { 833, 0x6000 }, + { 835, 0x1008 }, { 837, 0x9000 }, { 839, 0x5611 }, { 845, 0x0004 }, + { 846, 0x0000 }, { 846, 0x0000 }, { 846, 0x0000 }, { 846, 0x0000 }, + { 846, 0x0000 }, { 846, 0x6000 }, { 848, 0x0080 }, { 849, 0x4255 }, /* 0x7d00 */ - { 869, 0x2bf5 }, { 879, 0x1eb9 }, { 888, 0x0002 }, { 889, 0x960f }, - { 897, 0x4055 }, { 902, 0x6001 }, { 905, 0x0146 }, { 909, 0x024e }, - { 914, 0x834a }, { 920, 0x5008 }, { 923, 0x380c }, { 928, 0xef1f }, - { 940, 0x0c90 }, { 944, 0x6396 }, { 952, 0x934b }, { 960, 0x0a56 }, + { 855, 0x2bf5 }, { 865, 0x1eb9 }, { 874, 0x0002 }, { 875, 0x960f }, + { 883, 0x4055 }, { 888, 0x6001 }, { 891, 0x0146 }, { 895, 0x024e }, + { 900, 0x834a }, { 906, 0x5008 }, { 909, 0x380c }, { 914, 0xef1f }, + { 926, 0x0c90 }, { 930, 0x6396 }, { 938, 0x934b }, { 946, 0x0a56 }, /* 0x7e00 */ - { 966, 0x0f00 }, { 970, 0xe803 }, { 976, 0x6888 }, { 981, 0x62f6 }, - { 990, 0x0060 }, { 992, 0x4434 }, { 997, 0xee04 }, { 1004, 0x7209 }, - { 1010, 0xb500 }, { 1015, 0x1158 }, { 1020, 0x0000 }, { 1020, 0x0000 }, - { 1020, 0x0000 }, { 1020, 0x0000 }, { 1020, 0x0000 }, { 1020, 0x0000 }, + { 952, 0x0f00 }, { 956, 0xe803 }, { 962, 0x6888 }, { 967, 0x62f6 }, + { 976, 0x0060 }, { 978, 0x4434 }, { 983, 0xee04 }, { 990, 0x7209 }, + { 996, 0xb500 }, { 1001, 0x1158 }, { 1006, 0x0000 }, { 1006, 0x0000 }, + { 1006, 0x0000 }, { 1006, 0x0000 }, { 1006, 0x0000 }, { 1006, 0x0000 }, /* 0x7f00 */ - { 1020, 0x0000 }, { 1020, 0x0000 }, { 1020, 0x0000 }, { 1020, 0x0000 }, - { 1020, 0x5000 }, { 1022, 0x0000 }, { 1022, 0x0000 }, { 1022, 0x0081 }, - { 1024, 0x0160 }, { 1027, 0x0000 }, { 1027, 0x0220 }, { 1029, 0x0000 }, - { 1029, 0x0000 }, { 1029, 0x0004 }, { 1030, 0x0000 }, { 1030, 0x0200 }, + { 1006, 0x0000 }, { 1006, 0x0000 }, { 1006, 0x0000 }, { 1006, 0x0000 }, + { 1006, 0x5000 }, { 1008, 0x0000 }, { 1008, 0x0000 }, { 1008, 0x0081 }, + { 1010, 0x0160 }, { 1013, 0x0000 }, { 1013, 0x0220 }, { 1015, 0x0000 }, + { 1015, 0x0000 }, { 1015, 0x0004 }, { 1016, 0x0000 }, { 1016, 0x0200 }, /* 0x8000 */ - { 1031, 0x0000 }, { 1031, 0x0000 }, { 1031, 0x5000 }, { 1033, 0x0000 }, - { 1033, 0x0000 }, { 1033, 0x4040 }, { 1035, 0x8000 }, { 1036, 0x62ed }, - { 1045, 0x0020 }, { 1046, 0x0000 }, { 1046, 0x0000 }, { 1046, 0x0000 }, - { 1046, 0x0000 }, { 1046, 0x0000 }, { 1046, 0x0000 }, { 1046, 0x0000 }, + { 1017, 0x0000 }, { 1017, 0x0000 }, { 1017, 0x5000 }, { 1019, 0x0000 }, + { 1019, 0x0000 }, { 1019, 0x4040 }, { 1021, 0x8000 }, { 1022, 0x62ed }, + { 1031, 0x0020 }, { 1032, 0x0000 }, { 1032, 0x0000 }, { 1032, 0x0000 }, + { 1032, 0x0000 }, { 1032, 0x0000 }, { 1032, 0x0000 }, { 1032, 0x0000 }, /* 0x8100 */ - { 1046, 0x0020 }, { 1047, 0x0800 }, { 1048, 0x0000 }, { 1048, 0x0200 }, - { 1049, 0x4400 }, { 1051, 0x0040 }, { 1052, 0x0842 }, { 1055, 0x0100 }, - { 1056, 0x0000 }, { 1056, 0x0400 }, { 1057, 0x0201 }, { 1059, 0xe000 }, - { 1062, 0xa200 }, { 1065, 0x8500 }, { 1068, 0x0101 }, { 1070, 0x0400 }, + { 1032, 0x0020 }, { 1033, 0x0800 }, { 1034, 0x0000 }, { 1034, 0x0200 }, + { 1035, 0x4400 }, { 1037, 0x0040 }, { 1038, 0x0842 }, { 1041, 0x0100 }, + { 1042, 0x0000 }, { 1042, 0x0400 }, { 1043, 0x0201 }, { 1045, 0xe000 }, + { 1048, 0xa200 }, { 1051, 0x8500 }, { 1054, 0x0101 }, { 1056, 0x0400 }, /* 0x8200 */ - { 1071, 0x2780 }, { 1076, 0x0000 }, { 1076, 0x0000 }, { 1076, 0x0000 }, - { 1076, 0x0000 }, { 1076, 0x0200 }, { 1077, 0x0850 }, { 1080, 0x0082 }, - { 1082, 0x0000 }, { 1082, 0x0000 }, { 1082, 0x0000 }, { 1082, 0x0800 }, - { 1083, 0x0000 }, { 1083, 0x0000 }, { 1083, 0x0080 }, { 1084, 0x0200 }, + { 1057, 0x2780 }, { 1062, 0x0000 }, { 1062, 0x0000 }, { 1062, 0x0000 }, + { 1062, 0x0000 }, { 1062, 0x0200 }, { 1063, 0x0850 }, { 1066, 0x0082 }, + { 1068, 0x0000 }, { 1068, 0x0000 }, { 1068, 0x0000 }, { 1068, 0x0800 }, + { 1069, 0x0000 }, { 1069, 0x0000 }, { 1069, 0x0080 }, { 1070, 0x0200 }, /* 0x8300 */ - { 1085, 0x0008 }, { 1086, 0x0000 }, { 1086, 0x0000 }, { 1086, 0x0000 }, - { 1086, 0x0000 }, { 1086, 0x0001 }, { 1087, 0x0000 }, { 1087, 0x0000 }, - { 1087, 0x0400 }, { 1088, 0x0040 }, { 1089, 0x0084 }, { 1091, 0x0000 }, - { 1091, 0x0000 }, { 1091, 0x0000 }, { 1091, 0x8000 }, { 1092, 0x0000 }, + { 1071, 0x0008 }, { 1072, 0x0000 }, { 1072, 0x0000 }, { 1072, 0x0000 }, + { 1072, 0x0000 }, { 1072, 0x0001 }, { 1073, 0x0000 }, { 1073, 0x0000 }, + { 1073, 0x0400 }, { 1074, 0x0040 }, { 1075, 0x0084 }, { 1077, 0x0000 }, + { 1077, 0x0000 }, { 1077, 0x0000 }, { 1077, 0x8000 }, { 1078, 0x0000 }, /* 0x8400 */ - { 1092, 0x0480 }, { 1094, 0x0000 }, { 1094, 0x1000 }, { 1095, 0x0020 }, - { 1096, 0x0200 }, { 1097, 0x0004 }, { 1098, 0x8050 }, { 1101, 0x0080 }, - { 1102, 0x0000 }, { 1102, 0x0018 }, { 1104, 0x0000 }, { 1104, 0x1000 }, - { 1105, 0x0801 }, { 1107, 0x0000 }, { 1107, 0xc000 }, { 1109, 0x2000 }, + { 1078, 0x0480 }, { 1080, 0x0000 }, { 1080, 0x1000 }, { 1081, 0x0020 }, + { 1082, 0x0200 }, { 1083, 0x0004 }, { 1084, 0x8050 }, { 1087, 0x0080 }, + { 1088, 0x0000 }, { 1088, 0x0018 }, { 1090, 0x0000 }, { 1090, 0x1000 }, + { 1091, 0x0801 }, { 1093, 0x0000 }, { 1093, 0xc000 }, { 1095, 0x2000 }, /* 0x8500 */ - { 1110, 0x0000 }, { 1110, 0x4010 }, { 1112, 0x2048 }, { 1115, 0x0000 }, - { 1115, 0x4042 }, { 1118, 0x012c }, { 1122, 0x2604 }, { 1126, 0x0080 }, - { 1127, 0x1500 }, { 1130, 0x8012 }, { 1133, 0x0240 }, { 1135, 0x0400 }, - { 1136, 0x6000 }, { 1138, 0x2000 }, { 1139, 0x0420 }, { 1141, 0x0650 }, + { 1096, 0x0000 }, { 1096, 0x4010 }, { 1098, 0x2048 }, { 1101, 0x0000 }, + { 1101, 0x4042 }, { 1104, 0x012c }, { 1108, 0x2604 }, { 1112, 0x0080 }, + { 1113, 0x1500 }, { 1116, 0x8012 }, { 1119, 0x0240 }, { 1121, 0x0400 }, + { 1122, 0x6000 }, { 1124, 0x2000 }, { 1125, 0x0420 }, { 1127, 0x0650 }, /* 0x8600 */ - { 1145, 0x08d0 }, { 1149, 0x4400 }, { 1151, 0x2004 }, { 1153, 0x8400 }, - { 1155, 0x0000 }, { 1155, 0x9020 }, { 1158, 0x0080 }, { 1159, 0x0000 }, - { 1159, 0x0000 }, { 1159, 0x0000 }, { 1159, 0x0000 }, { 1159, 0x0000 }, - { 1159, 0x0000 }, { 1159, 0x0000 }, { 1159, 0x0000 }, { 1159, 0x0400 }, + { 1131, 0x08d0 }, { 1135, 0x4400 }, { 1137, 0x2004 }, { 1139, 0x8400 }, + { 1141, 0x0000 }, { 1141, 0x9020 }, { 1144, 0x0080 }, { 1145, 0x0000 }, + { 1145, 0x0000 }, { 1145, 0x0000 }, { 1145, 0x0000 }, { 1145, 0x0000 }, + { 1145, 0x0000 }, { 1145, 0x0000 }, { 1145, 0x0000 }, { 1145, 0x0400 }, /* 0x8700 */ - { 1160, 0x0040 }, { 1161, 0x0000 }, { 1161, 0x0002 }, { 1162, 0x0000 }, - { 1162, 0x0000 }, { 1162, 0x0020 }, { 1163, 0x0040 }, { 1164, 0x0100 }, - { 1165, 0x0010 }, { 1166, 0x4000 }, { 1167, 0x0004 }, { 1168, 0x0800 }, - { 1169, 0x4110 }, { 1172, 0x0000 }, { 1172, 0x9008 }, { 1175, 0x0844 }, + { 1146, 0x0040 }, { 1147, 0x0000 }, { 1147, 0x0002 }, { 1148, 0x0000 }, + { 1148, 0x0000 }, { 1148, 0x0020 }, { 1149, 0x0040 }, { 1150, 0x0100 }, + { 1151, 0x0010 }, { 1152, 0x4000 }, { 1153, 0x0004 }, { 1154, 0x0800 }, + { 1155, 0x4110 }, { 1158, 0x0000 }, { 1158, 0x9008 }, { 1161, 0x0844 }, /* 0x8800 */ - { 1178, 0x0060 }, { 1180, 0x8003 }, { 1183, 0x0008 }, { 1184, 0x0842 }, - { 1187, 0x0440 }, { 1189, 0x2808 }, { 1192, 0x0000 }, { 1192, 0x0200 }, - { 1193, 0x0000 }, { 1193, 0x0000 }, { 1193, 0x0000 }, { 1193, 0x0000 }, - { 1193, 0x8400 }, { 1195, 0x3000 }, { 1197, 0x0000 }, { 1197, 0x2000 }, + { 1164, 0x0060 }, { 1166, 0x8003 }, { 1169, 0x0008 }, { 1170, 0x0842 }, + { 1173, 0x0440 }, { 1175, 0x2808 }, { 1178, 0x0000 }, { 1178, 0x0200 }, + { 1179, 0x0000 }, { 1179, 0x0000 }, { 1179, 0x0000 }, { 1179, 0x0000 }, + { 1179, 0x8400 }, { 1181, 0x3000 }, { 1183, 0x0000 }, { 1183, 0x2000 }, /* 0x8900 */ - { 1198, 0x0080 }, { 1199, 0x0000 }, { 1199, 0x0000 }, { 1199, 0x090c }, - { 1203, 0x0080 }, { 1204, 0x2040 }, { 1206, 0x9411 }, { 1211, 0x0004 }, - { 1212, 0x8800 }, { 1214, 0x0148 }, { 1217, 0x9442 }, { 1222, 0xa484 }, - { 1227, 0x0001 }, { 1228, 0x0000 }, { 1228, 0x0000 }, { 1228, 0x0150 }, + { 1184, 0x0080 }, { 1185, 0x0000 }, { 1185, 0x0000 }, { 1185, 0x090c }, + { 1189, 0x0080 }, { 1190, 0x2040 }, { 1192, 0x9411 }, { 1197, 0x0004 }, + { 1198, 0x8800 }, { 1200, 0x0148 }, { 1203, 0x9442 }, { 1208, 0xa484 }, + { 1213, 0x0001 }, { 1214, 0x0000 }, { 1214, 0x0000 }, { 1214, 0x0150 }, /* 0x8a00 */ - { 1231, 0x550e }, { 1238, 0xa969 }, { 1246, 0x2428 }, { 1250, 0x0452 }, - { 1254, 0x4042 }, { 1257, 0x4935 }, { 1264, 0x7a4e }, { 1273, 0x902f }, - { 1280, 0x20f0 }, { 1285, 0x4526 }, { 1291, 0x117b }, { 1299, 0x9245 }, - { 1305, 0xaa94 }, { 1312, 0x58c6 }, { 1319, 0x68d4 }, { 1326, 0x55ca }, + { 1217, 0x550e }, { 1224, 0xa969 }, { 1232, 0x2428 }, { 1236, 0x0452 }, + { 1240, 0x4042 }, { 1243, 0x4935 }, { 1250, 0x7a4e }, { 1259, 0x902f }, + { 1266, 0x20f0 }, { 1271, 0x4526 }, { 1277, 0x117b }, { 1285, 0x9245 }, + { 1291, 0xaa94 }, { 1298, 0x58c6 }, { 1305, 0x68d4 }, { 1312, 0x55ca }, /* 0x8b00 */ - { 1334, 0x4437 }, { 1341, 0x2ed1 }, { 1349, 0x3902 }, { 1354, 0x4208 }, - { 1357, 0xc200 }, { 1360, 0x1740 }, { 1365, 0x8800 }, { 1367, 0x2091 }, - { 1371, 0x4401 }, { 1374, 0x506c }, { 1380, 0x0000 }, { 1380, 0x0000 }, - { 1380, 0x0000 }, { 1380, 0x0000 }, { 1380, 0x0000 }, { 1380, 0x0000 }, + { 1320, 0x4437 }, { 1327, 0x2ed1 }, { 1335, 0x3902 }, { 1340, 0x4208 }, + { 1343, 0xc200 }, { 1346, 0x1740 }, { 1351, 0x8800 }, { 1353, 0x2091 }, + { 1357, 0x4401 }, { 1360, 0x506c }, { 1366, 0x0000 }, { 1366, 0x0000 }, + { 1366, 0x0000 }, { 1366, 0x0000 }, { 1366, 0x0000 }, { 1366, 0x0000 }, /* 0x8c00 */ - { 1380, 0x0000 }, { 1380, 0x0000 }, { 1380, 0x0000 }, { 1380, 0x0000 }, - { 1380, 0x0100 }, { 1381, 0x0001 }, { 1382, 0x0000 }, { 1382, 0x0000 }, - { 1382, 0x0000 }, { 1382, 0x6000 }, { 1384, 0x9f87 }, { 1394, 0xbddd }, - { 1406, 0x05bf }, { 1415, 0x542e }, { 1422, 0x3cdf }, { 1433, 0x7c10 }, + { 1366, 0x0000 }, { 1366, 0x0000 }, { 1366, 0x0000 }, { 1366, 0x0000 }, + { 1366, 0x0100 }, { 1367, 0x0001 }, { 1368, 0x0000 }, { 1368, 0x0000 }, + { 1368, 0x0000 }, { 1368, 0x6000 }, { 1370, 0x9f87 }, { 1380, 0xbddd }, + { 1392, 0x05bf }, { 1401, 0x542e }, { 1408, 0x3cdf }, { 1419, 0x7c10 }, /* 0x8d00 */ - { 1439, 0xad30 }, { 1446, 0x1841 }, { 1450, 0x0000 }, { 1450, 0x0000 }, - { 1450, 0x0000 }, { 1450, 0x0000 }, { 1450, 0x0000 }, { 1450, 0x0000 }, - { 1450, 0x0000 }, { 1450, 0x0220 }, { 1452, 0x0100 }, { 1453, 0x0004 }, - { 1454, 0x0000 }, { 1454, 0x0000 }, { 1454, 0x0000 }, { 1454, 0x0000 }, + { 1425, 0xad30 }, { 1432, 0x1841 }, { 1436, 0x0000 }, { 1436, 0x0000 }, + { 1436, 0x0000 }, { 1436, 0x0000 }, { 1436, 0x0000 }, { 1436, 0x0000 }, + { 1436, 0x0000 }, { 1436, 0x0220 }, { 1438, 0x0100 }, { 1439, 0x0004 }, + { 1440, 0x0000 }, { 1440, 0x0000 }, { 1440, 0x0000 }, { 1440, 0x0000 }, /* 0x8e00 */ - { 1454, 0x0000 }, { 1454, 0x0001 }, { 1455, 0x0000 }, { 1455, 0x0010 }, - { 1456, 0x1000 }, { 1457, 0x0020 }, { 1458, 0x0008 }, { 1459, 0x0400 }, - { 1460, 0x2e00 }, { 1464, 0x040e }, { 1468, 0x0462 }, { 1472, 0x0000 }, - { 1472, 0x3c01 }, { 1477, 0x8814 }, { 1481, 0x0810 }, { 1483, 0x5f04 }, + { 1440, 0x0000 }, { 1440, 0x0001 }, { 1441, 0x0000 }, { 1441, 0x0010 }, + { 1442, 0x1000 }, { 1443, 0x0020 }, { 1444, 0x0008 }, { 1445, 0x0400 }, + { 1446, 0x2e00 }, { 1450, 0x040e }, { 1454, 0x0462 }, { 1458, 0x0000 }, + { 1458, 0x3c01 }, { 1463, 0x8814 }, { 1467, 0x0810 }, { 1469, 0x5f04 }, /* 0x8f00 */ - { 1490, 0x06a8 }, { 1495, 0xf834 }, { 1503, 0x8660 }, { 1508, 0xc908 }, - { 1513, 0x6274 }, { 1520, 0x8010 }, { 1522, 0x0016 }, { 1525, 0x0000 }, - { 1525, 0x0000 }, { 1525, 0x0000 }, { 1525, 0xe040 }, { 1529, 0x0004 }, - { 1530, 0x0000 }, { 1530, 0x0000 }, { 1530, 0x0000 }, { 1530, 0x0010 }, + { 1476, 0x06a8 }, { 1481, 0xf834 }, { 1489, 0x8660 }, { 1494, 0xc908 }, + { 1499, 0x6274 }, { 1506, 0x8010 }, { 1508, 0x0016 }, { 1511, 0x0000 }, + { 1511, 0x0000 }, { 1511, 0x0000 }, { 1511, 0xe040 }, { 1515, 0x0004 }, + { 1516, 0x0000 }, { 1516, 0x0000 }, { 1516, 0x0000 }, { 1516, 0x0010 }, /* 0x9000 */ - { 1531, 0x0000 }, { 1531, 0x0220 }, { 1533, 0x0008 }, { 1534, 0x0004 }, - { 1535, 0x4800 }, { 1537, 0x5030 }, { 1541, 0x0201 }, { 1543, 0x1584 }, - { 1548, 0x8492 }, { 1553, 0x0001 }, { 1554, 0x0000 }, { 1554, 0x0000 }, - { 1554, 0x0002 }, { 1555, 0x8000 }, { 1556, 0x0000 }, { 1556, 0x0020 }, + { 1517, 0x0000 }, { 1517, 0x0220 }, { 1519, 0x0008 }, { 1520, 0x0004 }, + { 1521, 0x4800 }, { 1523, 0x5030 }, { 1527, 0x0201 }, { 1529, 0x1584 }, + { 1534, 0x8492 }, { 1539, 0x0001 }, { 1540, 0x0000 }, { 1540, 0x0000 }, + { 1540, 0x0002 }, { 1541, 0x8000 }, { 1542, 0x0000 }, { 1542, 0x0020 }, /* 0x9100 */ - { 1557, 0x0240 }, { 1559, 0x0054 }, { 1562, 0x2080 }, { 1564, 0x0455 }, - { 1569, 0x0100 }, { 1570, 0x0000 }, { 1570, 0x0000 }, { 1570, 0x0000 }, - { 1570, 0x0000 }, { 1570, 0x1040 }, { 1572, 0x1800 }, { 1574, 0x0000 }, - { 1574, 0x182b }, { 1580, 0x23bc }, { 1588, 0x0298 }, { 1592, 0x06a0 }, + { 1543, 0x0240 }, { 1545, 0x0054 }, { 1548, 0x2080 }, { 1550, 0x0455 }, + { 1555, 0x0100 }, { 1556, 0x0000 }, { 1556, 0x0000 }, { 1556, 0x0000 }, + { 1556, 0x0000 }, { 1556, 0x1040 }, { 1558, 0x1800 }, { 1560, 0x0000 }, + { 1560, 0x182b }, { 1566, 0x23bc }, { 1574, 0x0298 }, { 1578, 0x06a0 }, /* 0x9200 */ - { 1596, 0x6313 }, { 1603, 0x4033 }, { 1608, 0x40e8 }, { 1613, 0xe799 }, - { 1623, 0x2321 }, { 1628, 0x4ca2 }, { 1634, 0x3044 }, { 1638, 0x8d00 }, - { 1642, 0x0029 }, { 1645, 0x154a }, { 1651, 0x1f69 }, { 1660, 0x1a82 }, - { 1665, 0x90aa }, { 1671, 0xa004 }, { 1674, 0xe578 }, { 1683, 0x1143 }, + { 1582, 0x6313 }, { 1589, 0x4033 }, { 1594, 0x40e8 }, { 1599, 0xe799 }, + { 1609, 0x2321 }, { 1614, 0x4ca2 }, { 1620, 0x3044 }, { 1624, 0x8d00 }, + { 1628, 0x0029 }, { 1631, 0x154a }, { 1637, 0x1f69 }, { 1646, 0x1a82 }, + { 1651, 0x90aa }, { 1657, 0xa004 }, { 1660, 0xe578 }, { 1669, 0x1143 }, /* 0x9300 */ - { 1688, 0x01c2 }, { 1692, 0x8f25 }, { 1700, 0xc945 }, { 1707, 0x014c }, - { 1711, 0x28cb }, { 1718, 0x0910 }, { 1721, 0x1230 }, { 1725, 0x4461 }, - { 1730, 0x0494 }, { 1734, 0x0140 }, { 1736, 0x56cc }, { 1744, 0x8129 }, - { 1749, 0x3188 }, { 1754, 0xf182 }, { 1761, 0x0116 }, { 1765, 0x02a0 }, + { 1674, 0x01c2 }, { 1678, 0x8f25 }, { 1686, 0xc945 }, { 1693, 0x014c }, + { 1697, 0x28cb }, { 1704, 0x0910 }, { 1707, 0x1230 }, { 1711, 0x4461 }, + { 1716, 0x0494 }, { 1720, 0x0140 }, { 1722, 0x56cc }, { 1730, 0x8129 }, + { 1735, 0x3188 }, { 1740, 0xf182 }, { 1747, 0x0116 }, { 1751, 0x02a0 }, /* 0x9400 */ - { 1768, 0x0808 }, { 1770, 0x231d }, { 1777, 0x41c1 }, { 1782, 0x852c }, - { 1788, 0x1410 }, { 1791, 0x0014 }, { 1793, 0x2029 }, { 1797, 0xf285 }, - { 1805, 0x0000 }, { 1805, 0x0000 }, { 1805, 0x0000 }, { 1805, 0x0000 }, - { 1805, 0x0000 }, { 1805, 0x0000 }, { 1805, 0x0000 }, { 1805, 0x0000 }, + { 1754, 0x0808 }, { 1756, 0x231d }, { 1763, 0x41c1 }, { 1768, 0x852c }, + { 1774, 0x1410 }, { 1777, 0x0014 }, { 1779, 0x2029 }, { 1783, 0xf285 }, + { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, + { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, /* 0x9500 */ - { 1805, 0x0000 }, { 1805, 0x0000 }, { 1805, 0x0000 }, { 1805, 0x0000 }, - { 1805, 0x0000 }, { 1805, 0x0000 }, { 1805, 0x0000 }, { 1805, 0x0080 }, - { 1806, 0xda4d }, { 1815, 0x011a }, { 1819, 0x3b3a }, { 1828, 0xfa44 }, - { 1836, 0x1d48 }, { 1842, 0x5071 }, { 1848, 0x0026 }, { 1851, 0x0000 }, + { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, + { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0080 }, + { 1792, 0xda4d }, { 1801, 0x011a }, { 1805, 0x3b3a }, { 1814, 0xfa44 }, + { 1822, 0x1d48 }, { 1828, 0x5071 }, { 1834, 0x0026 }, { 1837, 0x0000 }, /* 0x9600 */ - { 1851, 0x0000 }, { 1851, 0x0000 }, { 1851, 0x0000 }, { 1851, 0x0000 }, - { 1851, 0x0000 }, { 1851, 0x2100 }, { 1853, 0x0008 }, { 1854, 0x2109 }, - { 1858, 0x4600 }, { 1861, 0x0820 }, { 1863, 0x0500 }, { 1865, 0x0912 }, - { 1869, 0x0000 }, { 1869, 0x1a40 }, { 1873, 0x000c }, { 1875, 0x0804 }, + { 1837, 0x0000 }, { 1837, 0x0000 }, { 1837, 0x0000 }, { 1837, 0x0000 }, + { 1837, 0x0000 }, { 1837, 0x2100 }, { 1839, 0x0008 }, { 1840, 0x2109 }, + { 1844, 0x4400 }, { 1846, 0x0820 }, { 1848, 0x0500 }, { 1850, 0x0912 }, + { 1854, 0x0000 }, { 1854, 0x1a40 }, { 1858, 0x000c }, { 1860, 0x0804 }, /* 0x9700 */ - { 1877, 0x0000 }, { 1877, 0x0000 }, { 1877, 0x0080 }, { 1878, 0x2000 }, - { 1879, 0x0114 }, { 1882, 0x1400 }, { 1884, 0x0100 }, { 1885, 0x0000 }, - { 1885, 0x8000 }, { 1886, 0x0000 }, { 1886, 0x0040 }, { 1887, 0x2000 }, - { 1888, 0x1a48 }, { 1893, 0x5208 }, { 1897, 0x0000 }, { 1897, 0x8000 }, + { 1862, 0x0000 }, { 1862, 0x0000 }, { 1862, 0x0080 }, { 1863, 0x2000 }, + { 1864, 0x0114 }, { 1867, 0x0400 }, { 1868, 0x0100 }, { 1869, 0x0000 }, + { 1869, 0x8000 }, { 1870, 0x0000 }, { 1870, 0x0040 }, { 1871, 0x2000 }, + { 1872, 0x1a48 }, { 1877, 0x5208 }, { 1881, 0x0000 }, { 1881, 0x8000 }, /* 0x9800 */ - { 1898, 0xd5ee }, { 1909, 0x118f }, { 1916, 0x2052 }, { 1920, 0x2981 }, - { 1925, 0x7040 }, { 1929, 0x4b18 }, { 1935, 0x98a4 }, { 1941, 0x001b }, - { 1945, 0x0000 }, { 1945, 0x0000 }, { 1945, 0xc100 }, { 1948, 0x104a }, - { 1952, 0x0150 }, { 1955, 0x0800 }, { 1956, 0xae05 }, { 1963, 0x7014 }, + { 1882, 0xd5ee }, { 1893, 0x118f }, { 1900, 0x2052 }, { 1904, 0x2981 }, + { 1909, 0x7040 }, { 1913, 0x4b18 }, { 1919, 0x98a4 }, { 1925, 0x001b }, + { 1929, 0x0000 }, { 1929, 0x0000 }, { 1929, 0xc100 }, { 1932, 0x104a }, + { 1936, 0x0150 }, { 1939, 0x0800 }, { 1940, 0xae05 }, { 1947, 0x7014 }, /* 0x9900 */ - { 1968, 0x1628 }, { 1973, 0x490e }, { 1979, 0x0102 }, { 1981, 0xd088 }, - { 1986, 0x1f28 }, { 1993, 0x5086 }, { 1998, 0x0004 }, { 1999, 0x0000 }, - { 1999, 0x0000 }, { 1999, 0x0000 }, { 1999, 0x7000 }, { 2002, 0x001a }, - { 2005, 0x0002 }, { 2006, 0xab37 }, { 2016, 0x2006 }, { 2019, 0x8002 }, + { 1952, 0x1628 }, { 1957, 0x490e }, { 1963, 0x0102 }, { 1965, 0xd088 }, + { 1970, 0x1f28 }, { 1977, 0x5086 }, { 1982, 0x0004 }, { 1983, 0x0000 }, + { 1983, 0x0000 }, { 1983, 0x0000 }, { 1983, 0x7000 }, { 1986, 0x001a }, + { 1989, 0x0002 }, { 1990, 0xab37 }, { 2000, 0x2006 }, { 2003, 0x8002 }, /* 0x9a00 */ - { 2021, 0xe022 }, { 2026, 0x0240 }, { 2028, 0x6800 }, { 2031, 0x41c1 }, - { 2036, 0xa43f }, { 2045, 0x8ca0 }, { 2050, 0x0434 }, { 2054, 0x0000 }, - { 2054, 0x0000 }, { 2054, 0x0000 }, { 2054, 0x8000 }, { 2055, 0x0000 }, - { 2055, 0x8000 }, { 2056, 0x0074 }, { 2060, 0x4000 }, { 2061, 0x0000 }, + { 2005, 0xe022 }, { 2010, 0x0240 }, { 2012, 0x6800 }, { 2015, 0x41c1 }, + { 2020, 0xa43f }, { 2029, 0x8ca0 }, { 2034, 0x0434 }, { 2038, 0x0000 }, + { 2038, 0x0000 }, { 2038, 0x0000 }, { 2038, 0x8000 }, { 2039, 0x0000 }, + { 2039, 0x8000 }, { 2040, 0x0074 }, { 2044, 0x4000 }, { 2045, 0x0000 }, /* 0x9b00 */ - { 2061, 0x2040 }, { 2063, 0x0400 }, { 2064, 0x42a4 }, { 2069, 0x0002 }, - { 2070, 0x4000 }, { 2071, 0x0500 }, { 2073, 0x8000 }, { 2074, 0x0090 }, - { 2076, 0x400a }, { 2079, 0x6407 }, { 2085, 0x6c00 }, { 2089, 0x0000 }, - { 2089, 0x0683 }, { 2094, 0x2850 }, { 2098, 0x0d96 }, { 2105, 0xa011 }, + { 2045, 0x2040 }, { 2047, 0x0400 }, { 2048, 0x42a4 }, { 2053, 0x0002 }, + { 2054, 0x4000 }, { 2055, 0x0500 }, { 2057, 0x8000 }, { 2058, 0x0090 }, + { 2060, 0x400a }, { 2063, 0x6407 }, { 2069, 0x6c00 }, { 2073, 0x0000 }, + { 2073, 0x0683 }, { 2078, 0x2850 }, { 2082, 0x0d96 }, { 2089, 0xa011 }, /* 0x9c00 */ - { 2109, 0x2300 }, { 2112, 0x000d }, { 2115, 0x2329 }, { 2121, 0x4aae }, - { 2129, 0x0320 }, { 2132, 0xa1d4 }, { 2139, 0x2080 }, { 2141, 0x0500 }, - { 2143, 0x0000 }, { 2143, 0x0000 }, { 2143, 0x0000 }, { 2143, 0x0000 }, - { 2143, 0x0000 }, { 2143, 0x0000 }, { 2143, 0x1220 }, { 2146, 0x0058 }, + { 2093, 0x2300 }, { 2096, 0x000d }, { 2099, 0x2329 }, { 2105, 0x4aae }, + { 2113, 0x0320 }, { 2116, 0xa1d4 }, { 2123, 0x2080 }, { 2125, 0x0500 }, + { 2127, 0x0000 }, { 2127, 0x0000 }, { 2127, 0x0000 }, { 2127, 0x0000 }, + { 2127, 0x0000 }, { 2127, 0x0000 }, { 2127, 0x1220 }, { 2130, 0x0058 }, /* 0x9d00 */ - { 2149, 0x02c0 }, { 2152, 0xa820 }, { 2156, 0x8148 }, { 2160, 0x8801 }, - { 2163, 0x0004 }, { 2164, 0x300e }, { 2169, 0x9403 }, { 2174, 0x0004 }, - { 2175, 0x0280 }, { 2177, 0x0508 }, { 2180, 0x8220 }, { 2183, 0x1810 }, - { 2186, 0x0015 }, { 2189, 0x0688 }, { 2193, 0x8060 }, { 2196, 0x070c }, + { 2133, 0x02c0 }, { 2136, 0xa820 }, { 2140, 0x8148 }, { 2144, 0x8801 }, + { 2147, 0x0004 }, { 2148, 0x300e }, { 2153, 0x9403 }, { 2158, 0x0004 }, + { 2159, 0x0280 }, { 2161, 0x0508 }, { 2164, 0x8220 }, { 2167, 0x1810 }, + { 2170, 0x0015 }, { 2173, 0x0688 }, { 2177, 0x8060 }, { 2180, 0x070c }, /* 0x9e00 */ - { 2201, 0x1000 }, { 2202, 0x6c20 }, { 2207, 0x0000 }, { 2207, 0x0000 }, - { 2207, 0x0000 }, { 2207, 0x0000 }, { 2207, 0x0000 }, { 2207, 0x3620 }, - { 2212, 0x0000 }, { 2212, 0x0080 }, { 2213, 0x8220 }, { 2216, 0x2020 }, - { 2218, 0x1000 }, { 2219, 0x4000 }, { 2220, 0x0100 }, { 2221, 0xa094 }, + { 2185, 0x1000 }, { 2186, 0x6c20 }, { 2191, 0x0000 }, { 2191, 0x0000 }, + { 2191, 0x0000 }, { 2191, 0x0000 }, { 2191, 0x0000 }, { 2191, 0x3620 }, + { 2196, 0x0000 }, { 2196, 0x0080 }, { 2197, 0x8220 }, { 2200, 0x2020 }, + { 2202, 0x1000 }, { 2203, 0x4000 }, { 2204, 0x0100 }, { 2205, 0xa094 }, /* 0x9f00 */ - { 2226, 0x0200 }, { 2227, 0x0020 }, { 2228, 0x0000 }, { 2228, 0x0000 }, - { 2228, 0x8c00 }, { 2231, 0x9214 }, { 2236, 0x144b }, { 2242, 0x0084 }, - { 2244, 0x2000 }, { 2245, 0x1031 }, + { 2210, 0x0200 }, { 2211, 0x0020 }, { 2212, 0x0000 }, { 2212, 0x0000 }, + { 2212, 0x8c00 }, { 2215, 0x9214 }, { 2220, 0x144b }, { 2226, 0x0084 }, + { 2228, 0x2000 }, { 2229, 0x1031 }, +}; +static const Summary16 gb12345ext_uni2indx_pagefe[5] = { + /* 0xfe00 */ + { 2233, 0x0000 }, { 2233, 0x0000 }, { 2233, 0x0000 }, { 2233, 0xfffa }, + { 2247, 0x001f }, }; static int @@ -1698,10 +1744,16 @@ gb12345ext_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) { if (n >= 2) { const Summary16 *summary = NULL; - if (wc >= 0x2200 && wc < 0x2230) + if (wc >= 0x0100 && wc < 0x0270) + summary = &gb12345ext_uni2indx_page01[(wc>>4)-0x010]; + else if (wc >= 0x1e00 && wc < 0x1e40) + summary = &gb12345ext_uni2indx_page1e[(wc>>4)-0x1e0]; + else if (wc >= 0x2200 && wc < 0x2230) summary = &gb12345ext_uni2indx_page22[(wc>>4)-0x220]; else if (wc >= 0x4e00 && wc < 0x9fa0) summary = &gb12345ext_uni2indx_page4e[(wc>>4)-0x4e0]; + else if (wc >= 0xfe00 && wc < 0xfe50) + summary = &gb12345ext_uni2indx_pagefe[(wc>>4)-0xfe0]; if (summary) { unsigned short used = summary->used; unsigned int i = wc & 0x0f; diff --git a/libiconv/georgian_ps.h b/libiconv/georgian_ps.h index dd741c3..f82c5e9 100644 --- a/libiconv/georgian_ps.h +++ b/libiconv/georgian_ps.h @@ -84,7 +84,7 @@ georgian_ps_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) } else if (wc >= 0x0080 && wc < 0x00a0) c = georgian_ps_page00[wc-0x0080]; - else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e7 && wc < 0x0100)) + else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e6 && wc < 0x0100)) c = wc; else if (wc >= 0x0150 && wc < 0x0198) c = georgian_ps_page01[wc-0x0150]; diff --git a/libiconv/iconv.h b/libiconv/iconv.h new file mode 100644 index 0000000..9f1834e --- /dev/null +++ b/libiconv/iconv.h @@ -0,0 +1,111 @@ +/* Copyright (C) 1999-2000 Free Software Foundation, Inc. + This file is part of the GNU ICONV Library. + + The GNU ICONV Library 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 of the + License, or (at your option) any later version. + + The GNU ICONV Library is distributed in the hope that 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 the GNU ICONV Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* When installed, this file is called "iconv.h". */ + +#ifndef _LIBICONV_H +#define _LIBICONV_H + +#define _LIBICONV_VERSION 0x0103 /* version number: (major<<8) + minor */ + +/* We would like to #include any system header file which could define + iconv_t, 1. in order to eliminate the risk that the user gets compilation + errors because some other system header file includes /usr/include/iconv.h + which defines iconv_t or declares iconv after this file, 2. when compiling + for LIBICONV_PLUG, we need the proper iconv_t type in order to produce + binary compatible code. + But gcc's #include_next is not portable. Thus, once libiconv's iconv.h + has been installed in /usr/local/include, there is no way any more to + include the original /usr/include/iconv.h. We simply have to get away + without it. + Ad 1. The risk that a system header file does + #include "iconv.h" or #include_next "iconv.h" + is small. They all do #include . + Ad 2. The iconv_t type is a pointer type in all cases I have seen. (It + has to be a scalar type because (iconv_t)(-1) is a possible return value + from iconv_open().) */ + +/* Define iconv_t ourselves. */ +#undef iconv_t +#define iconv_t libiconv_t +typedef void* iconv_t; + +/* Get size_t declaration. */ +#include + +/* Get errno declaration and values. */ +#include +/* Some systems, like SunOS 4, don't have EILSEQ. On these systems, define + EILSEQ ourselves, but don't define it as EINVAL, because iconv() callers + want to distinguish EINVAL and EILSEQ. */ +#ifndef EILSEQ +#define EILSEQ ENOENT +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Allocates descriptor for code conversion from encoding `fromcode' to + encoding `tocode'. */ +#ifndef LIBICONV_PLUG +#define iconv_open libiconv_open +#endif +extern iconv_t iconv_open (const char* tocode, const char* fromcode); + +/* Converts, using conversion descriptor `cd', at most `*inbytesleft' bytes + starting at `*inbuf', writing at most `*outbytesleft' bytes starting at + `*outbuf'. + Decrements `*inbytesleft' and increments `*inbuf' by the same amount. + Decrements `*outbytesleft' and increments `*outbuf' by the same amount. */ +#ifndef LIBICONV_PLUG +#define iconv libiconv +#endif +extern size_t iconv (iconv_t cd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft); + +/* Frees resources allocated for conversion descriptor `cd'. */ +#ifndef LIBICONV_PLUG +#define iconv_close libiconv_close +#endif +extern int iconv_close (iconv_t cd); + + +#ifndef LIBICONV_PLUG + +/* Nonstandard extensions. */ + +/* Control of attributes. */ +#define iconvctl libiconvctl +extern int iconvctl (iconv_t cd, int request, void* argument); + +/* Requests for iconvctl. */ +#define ICONV_TRIVIALP 0 /* int *argument */ +#define ICONV_GET_TRANSLITERATE 1 /* int *argument */ +#define ICONV_SET_TRANSLITERATE 2 /* const int *argument */ + +#endif + + +#ifdef __cplusplus +} +#endif + + +#endif /* _LIBICONV_H */ diff --git a/libiconv/iso2022_cnext.h b/libiconv/iso2022_cnext.h index b46cfa1..5318d77 100644 --- a/libiconv/iso2022_cnext.h +++ b/libiconv/iso2022_cnext.h @@ -232,8 +232,7 @@ iso2022_cn_ext_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) case STATE2_DESIGNATED_CNS11643_1: ret = cns11643_1_mbtowc(conv,pwc,s,2); break; case STATE2_DESIGNATED_ISO_IR_165: - /* We don't have an ISO-IR-165 table yet. */ - ret = gb2312_mbtowc(conv,pwc,s,2); break; + ret = isoir165_mbtowc(conv,pwc,s,2); break; default: abort(); } if (ret == RET_ILSEQ) @@ -396,7 +395,34 @@ iso2022_cn_ext_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) } - /* No table for ISO-IR-165 yet. */ + /* Try ISO-IR-165. */ + ret = isoir165_wctomb(conv,buf,wc,2); + if (ret != RET_ILSEQ) { + if (ret != 2) abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) { + int count = (state2 == STATE2_DESIGNATED_ISO_IR_165 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; + if (n < count) + return RET_TOOSMALL; + if (state2 != STATE2_DESIGNATED_ISO_IR_165) { + r[0] = ESC; + r[1] = '$'; + r[2] = ')'; + r[3] = 'E'; + r += 4; + state2 = STATE2_DESIGNATED_ISO_IR_165; + } + if (state1 != STATE_TWOBYTE) { + r[0] = SO; + r += 1; + state1 = STATE_TWOBYTE; + } + r[0] = buf[0]; + r[1] = buf[1]; + COMBINE_STATE; + conv->ostate = state; + return count; + } + } return RET_ILSEQ; } diff --git a/libiconv/iso2022_kr.h b/libiconv/iso2022_kr.h index dd70c0d..d5a7427 100644 --- a/libiconv/iso2022_kr.h +++ b/libiconv/iso2022_kr.h @@ -6,9 +6,9 @@ /* Specification: RFC 1557 */ /* Note: CJK.INF says the SO designator needs to appear only once at the - beginning of a text, but RFC 1557 says it must appear once in every line - containing SO characters. So we produce ISO-2022-KR according to RFC 1557, - but accept ISO-2022-KR according to CJK.INF. */ + beginning of a text, but to decrease the risk of ambiguities, when + producing ISO-2022-KR, we repeat the designator in every line containing + SO characters. RFC 1557 does not mandate this. */ #define ESC 0x1b #define SO 0x0e @@ -117,7 +117,7 @@ iso2022_kr_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) { state_t state = conv->ostate; SPLIT_STATE; - unsigned char buf[3]; + unsigned char buf[2]; int ret; /* Try ASCII. */ @@ -171,38 +171,6 @@ iso2022_kr_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) } } - if (conv->transliterate) { - /* Decompose Hangul into Jamo */ - ret = johab_hangul_decompose(conv,buf,wc); - if (ret != RET_ILSEQ) { - int count = (state2 == STATE2_DESIGNATED_KSC5601 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2*ret; - int i; - if (n < count) - return RET_TOOSMALL; - if (state2 != STATE2_DESIGNATED_KSC5601) { - r[0] = ESC; - r[1] = '$'; - r[2] = ')'; - r[3] = 'C'; - r += 4; - state2 = STATE2_DESIGNATED_KSC5601; - } - if (state1 != STATE_TWOBYTE) { - r[0] = SO; - r += 1; - state1 = STATE_TWOBYTE; - } - for (i = 0; i < ret; i++) { - r[0] = 0x24; - r[1] = 0x20+buf[i]; - r += 2; - } - COMBINE_STATE; - conv->ostate = state; - return count; - } - } - return RET_ILSEQ; } diff --git a/libiconv/iso646_cn.h b/libiconv/iso646_cn.h new file mode 100644 index 0000000..80d0a65 --- /dev/null +++ b/libiconv/iso646_cn.h @@ -0,0 +1,39 @@ + +/* + * ISO646-CN + * also known as GB_1988-80 + */ + +static int +iso646_cn_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + unsigned char c = *s; + if (c < 0x80) { + if (c == 0x24) + *pwc = (wchar_t) 0x00a5; + else if (c == 0x7e) + *pwc = (wchar_t) 0x203e; + else + *pwc = (wchar_t) c; + return 1; + } + return RET_ILSEQ; +} + +static int +iso646_cn_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + if (wc < 0x0080 && !(wc == 0x0024 || wc == 0x007e)) { + *r = wc; + return 1; + } + if (wc == 0x00a5) { + *r = 0x24; + return 1; + } + if (wc == 0x203e) { + *r = 0x7e; + return 1; + } + return RET_ILSEQ; +} diff --git a/libiconv/iso646_jp.h b/libiconv/iso646_jp.h new file mode 100644 index 0000000..aceed91 --- /dev/null +++ b/libiconv/iso646_jp.h @@ -0,0 +1,41 @@ + +/* + * ISO646-JP + * also known as JIS_C6220-1969-RO + */ + +/* This is the lower half of JIS_X0201. */ + +static int +iso646_jp_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + unsigned char c = *s; + if (c < 0x80) { + if (c == 0x5c) + *pwc = (wchar_t) 0x00a5; + else if (c == 0x7e) + *pwc = (wchar_t) 0x203e; + else + *pwc = (wchar_t) c; + return 1; + } + return RET_ILSEQ; +} + +static int +iso646_jp_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) { + *r = wc; + return 1; + } + if (wc == 0x00a5) { + *r = 0x5c; + return 1; + } + if (wc == 0x203e) { + *r = 0x7e; + return 1; + } + return RET_ILSEQ; +} diff --git a/libiconv/iso8859_16.h b/libiconv/iso8859_16.h new file mode 100644 index 0000000..3dbf364 --- /dev/null +++ b/libiconv/iso8859_16.h @@ -0,0 +1,97 @@ + +/* + * ISO-8859-16 + */ + +static const unsigned short iso8859_16_2uni[96] = { + /* 0xa0 */ + 0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x00ab, 0x0160, 0x00a7, + 0x0161, 0x00a9, 0x0218, 0x201e, 0x0179, 0x00ad, 0x017a, 0x017b, + /* 0xb0 */ + 0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7, + 0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c, + /* 0xc0 */ + 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + /* 0xd0 */ + 0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a, + 0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df, + /* 0xe0 */ + 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + /* 0xf0 */ + 0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b, + 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff, +}; + +static int +iso8859_16_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + unsigned char c = *s; + if (c < 0xa0) + *pwc = (wchar_t) c; + else + *pwc = (wchar_t) iso8859_16_2uni[c-0xa0]; + return 1; +} + +static const unsigned char iso8859_16_page00[224] = { + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */ + 0x00, 0xa9, 0x00, 0xa5, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */ + 0xb0, 0xb1, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xb7, /* 0xb0-0xb7 */ + 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ + 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0xc6, 0xc7, /* 0xc0-0xc7 */ + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ + 0x00, 0x00, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0x00, /* 0xd0-0xd7 */ + 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */ + 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0xe6, 0xe7, /* 0xe0-0xe7 */ + 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */ + 0x00, 0x00, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0x00, /* 0xf0-0xf7 */ + 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */ + /* 0x0100 */ + 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xa2, 0xc5, 0xe5, /* 0x00-0x07 */ + 0x00, 0x00, 0x00, 0x00, 0xb2, 0xb9, 0x00, 0x00, /* 0x08-0x0f */ + 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ + 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ + 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0x00, /* 0x40-0x47 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ + 0xd5, 0xf5, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ + 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ + 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ + 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ + 0xbe, 0xac, 0xae, 0xaf, 0xbf, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */ +}; +static const unsigned char iso8859_16_page02[8] = { + 0xaa, 0xba, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ +}; +static const unsigned char iso8859_16_page20[8] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xab, 0x00, /* 0x18-0x1f */ +}; + +static int +iso8859_16_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + unsigned char c = 0; + if (wc < 0x00a0) { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0180) + c = iso8859_16_page00[wc-0x00a0]; + else if (wc >= 0x0218 && wc < 0x0220) + c = iso8859_16_page02[wc-0x0218]; + else if (wc >= 0x2018 && wc < 0x2020) + c = iso8859_16_page20[wc-0x2018]; + else if (wc == 0x20ac) + c = 0xa4; + if (c != 0) { + *r = c; + return 1; + } + return RET_ILSEQ; +} diff --git a/libiconv/iso8859_8.h b/libiconv/iso8859_8.h index 6ce175c..79569be 100644 --- a/libiconv/iso8859_8.h +++ b/libiconv/iso8859_8.h @@ -6,7 +6,7 @@ static const unsigned short iso8859_8_2uni[96] = { /* 0xa0 */ 0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, - 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x203e, + 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0xfffd, @@ -21,7 +21,7 @@ static const unsigned short iso8859_8_2uni[96] = { 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, /* 0xf0 */ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, - 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd, }; static int @@ -44,7 +44,7 @@ iso8859_8_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) static const unsigned char iso8859_8_page00[88] = { 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */ - 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */ + 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ @@ -61,13 +61,9 @@ static const unsigned char iso8859_8_page05[32] = { 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */ 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ }; -static const unsigned char iso8859_8_page20[48] = { +static const unsigned char iso8859_8_page20[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x10-0x17 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, /* 0x38-0x3f */ }; static int @@ -82,8 +78,8 @@ iso8859_8_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) c = iso8859_8_page00[wc-0x00a0]; else if (wc >= 0x05d0 && wc < 0x05f0) c = iso8859_8_page05[wc-0x05d0]; - else if (wc >= 0x2010 && wc < 0x2040) - c = iso8859_8_page20[wc-0x2010]; + else if (wc >= 0x2008 && wc < 0x2018) + c = iso8859_8_page20[wc-0x2008]; if (c != 0) { *r = c; return 1; diff --git a/libiconv/isoir165.h b/libiconv/isoir165.h new file mode 100644 index 0000000..40a3d42 --- /dev/null +++ b/libiconv/isoir165.h @@ -0,0 +1,133 @@ +/* + * ISO-IR-165 + */ + +/* + * ISO-IR-165 is an extension of GB 2312, consisting of: + * 1. GB 6345.1-86 corrections: + * Two corrections to GB 2312, at 0x2367 and 0x6F71. + * 2. GB 6345.1-86 additions: + * - 6 new full-width pinyin characters in row 0x28. + * - ISO646-CN in row 0x2A. + * - 32 half-width pinyin characters in row 0x2B. + * 3. GB 8565.2-88 additions: + * - 50 characters in row 0x2D. + * - 92 characters in row 0x2E. + * - 93 characters in row 0x2F. + * - 470 characters in rows 0x7A-0x7E. + * 4. ISO-IR-165 additions: + * - 22 characters in row 0x26. + * - 94 characters in row 0x2C. + * - 44 new characters in row 0x2D. + * - 1 new character in row 0x2F. + * + * The conversion table was created from the following sources: + * Ad 1. The 0x2367 correction is already integrated in the unicode.org + * GB2312.TXT table. The 0x6F71 mapping is the same in the unicode.org + * GB2312.TXT and UNIHAN.TXT table and in Koichi Yasuoka's Uni2GB table, + * so we assume it's correct. + * The unicode.org UNIHAN.TXT table about GB 8565 is not usable: it has + * extraneous code points at rows 0x28, 0x2C, 0x2D. Note also that it does + * not list the 69 non-hanzi in row 0x2F. Moreover, it has the characters + * 0x2F7A-0x2F7D shifted down by one to 0x2F79-0x2F7C. + * Therefore we take the GB8565 and ISO-IR-165 data from Koichi Yasuoka's + * Uni2GB table. + * Ad 1. Yasuoka maps 0x2367 to U+0261 (small script g) and 0x2840 to U+FF47 + * (full-width small normal g). While coherent with ISO-IR's 165.pdf, + * this disagrees with Ken Lunde's book: He says that ISO-IR-165 + * includes the GB6345 correction, i.e. maps 0x2367 to U+FF47 or U+0067 + * and _not_ to U+0261 (small script g). + * To overcome the confusion, we just map both 0x2367 and 0x2840 to + * U+FF47. + * Ad 2. Row 0x28: Add a mapping from 0x283F to U+01F9. + * Row 0x2A: Mapping is well-known, also present in Koichi Yasuoka's + * table. + * Row 0x2B: Typed in by hand from appendix E in Ken Lunde's book. + * When converting from Unicode to ISO-IR-165, prefer the half-width + * range 0x2B{21..40} to the full-width range 0x28{21..40}. + * Ad 3. Rows 0x2D, 0x2E: Both Koichi Yasuoka's Uni2GB table and the UNIHAN.TXT + * data for GB 8565 agree here. + * Row 0x2F: Taken from Koichi Yasuoka's Uni2GB table. + * Rows 0x7A-0x7E: Koichi Yasuoka's Uni2GB table and the UNIHAN.TXT + * data for GB 8565 agree here mostly. Differences: + * 0x7C38 -> U+6F26 or U+527A ? We choose U+6F26. + * 0x7C5A -> U+7A40 or U+6996 ? We choose U+6996. + * Ad 4. Row 0x26: Mapping unknown. + * Rows 0x2C, 0x2D: Both Koichi Yasuoka's Uni2GB table and the UNIHAN.TXT + * data for GB 8565 (!) agree here. + * Row 0x2F: Taken from Koichi Yasuoka's Uni2GB table. + */ + +#include "isoir165ext.h" + +static int +isoir165_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + int ret; + + /* Map full-width pinyin (row 0x28) like half-width pinyin (row 0x2B). */ + if (s[0] == 0x28) { + if (n >= 2) { + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 <= 0x40) { + unsigned char buf[2]; + buf[0] = 0x2b; + buf[1] = c2; + ret = isoir165ext_mbtowc(conv,pwc,buf,2); + if (ret != RET_ILSEQ) + return ret; + } + } + } + /* Try the GB2312 -> Unicode table. */ + ret = gb2312_mbtowc(conv,pwc,s,n); + if (ret != RET_ILSEQ) + return ret; + /* Row 0x2A is GB_1988-80. */ + if (s[0] == 0x2a) { + if (n >= 2) { + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) { + int ret = iso646_cn_mbtowc(conv,pwc,s+1,1); + if (ret != 1) abort(); + return 2; + } + return RET_ILSEQ; + } + return RET_TOOFEW(0); + } + /* Try the ISO-IR-165 extensions -> Unicode table. */ + ret = isoir165ext_mbtowc(conv,pwc,s,n); + return ret; +} + +static int +isoir165_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + unsigned char buf[1]; + int ret; + + /* Try the Unicode -> GB2312 table table. */ + ret = gb2312_wctomb(conv,r,wc,n); + if (ret != RET_ILSEQ) { + if (ret != 2) abort(); + if (!(r[0] == 0x28 && r[1] >= 0x21 && r[1] <= 0x40)) + return ret; + } + /* Row 0x2A is GB_1988-80. */ + ret = iso646_cn_wctomb(conv,buf,wc,1); + if (ret != RET_ILSEQ) { + if (ret != 1) abort(); + if (buf[0] >= 0x21 && buf[0] < 0x7f) { + if (n >= 2) { + r[0] = 0x2a; + r[1] = buf[0]; + return 2; + } + return RET_TOOSMALL; + } + } + /* Try the Unicode -> ISO-IR-165 extensions table. */ + ret = isoir165ext_wctomb(conv,r,wc,n); + return ret; +} diff --git a/libiconv/isoir165ext.h b/libiconv/isoir165ext.h new file mode 100644 index 0000000..e3bb1b5 --- /dev/null +++ b/libiconv/isoir165ext.h @@ -0,0 +1,781 @@ + +/* + * ISO-IR-165 extensions + */ + +static const unsigned short isoir165ext_2uni_page2b[470] = { + /* 0x2b */ + 0x1fb1, 0x03ac, 0x1fb0, 0x1f70, 0x0113, 0x00e9, 0x011b, 0x00e8, + 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2, + 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc, + 0x00fc, 0x00ea, 0x03b1, 0x1e3f, 0x0144, 0x0148, 0x01f9, 0xff47, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + /* 0x2c */ + 0x53be, 0x4eb8, 0x4f3e, 0x501e, 0x50c7, 0x9118, 0x6c98, 0x6cdc, + 0x6cc3, 0x6e5d, 0x6ea6, 0x6eeb, 0x6fa5, 0x6165, 0x5ea4, 0x9618, + 0x5848, 0x8453, 0x7cf5, 0x5f07, 0x6294, 0x647d, 0x725a, 0x5574, + 0x55a4, 0x5640, 0x5684, 0x5d1f, 0x72c9, 0x998c, 0x59de, 0x59fd, + 0x5a5e, 0x7ebb, 0x7ee4, 0x7ef9, 0x9a99, 0x71cf, 0x6245, 0x624a, + 0x797c, 0x739a, 0x742b, 0x7488, 0x74aa, 0x74d8, 0x6767, 0x6ab5, + 0x71ca, 0x6ba3, 0x8f80, 0x8f92, 0x8d5f, 0x9b36, 0x72a8, 0x87a3, + 0x8152, 0x6b38, 0x98d0, 0x8897, 0x88af, 0x8955, 0x770a, 0x94da, + 0x955a, 0x9560, 0x9e24, 0x9e40, 0x9e50, 0x9e5d, 0x9e60, 0x870e, + 0x7b5c, 0x7fd9, 0x7fef, 0x7e44, 0x8e45, 0x8e36, 0x8e62, 0x8e5c, + 0x9778, 0x9b46, 0x9f2b, 0x9f41, 0x7526, 0x4e26, 0x8bac, 0x8129, + 0x5091, 0x50cd, 0x52b9, 0x89d4, 0x5557, 0x94c7, + /* 0x2d */ + 0x9496, 0x9498, 0x94cf, 0x94d3, 0x94d4, 0x94e6, 0x9533, 0x951c, + 0x9520, 0x9527, 0x953d, 0x9543, 0x956e, 0x9574, 0x9c80, 0x9c84, + 0x9c8a, 0x9c93, 0x9c96, 0x9c97, 0x9c98, 0x9c99, 0x9cbf, 0x9cc0, + 0x9cc1, 0x9cd2, 0x9cdb, 0x9ce0, 0x9ce3, 0x9770, 0x977a, 0x97a1, + 0x97ae, 0x97a8, 0x9964, 0x9966, 0x9978, 0x9979, 0x997b, 0x997e, + 0x9982, 0x9983, 0x998e, 0x9b10, 0x9b18, 0x65a2, 0x9e80, 0x911c, + 0x9e91, 0x9f12, 0x52f3, 0x6c96, 0x6d44, 0x6e1b, 0x6e67, 0x6f82, + 0x6fec, 0x60ae, 0x5ec8, 0x8ffa, 0x577f, 0x5586, 0x849e, 0x8460, + 0x5c05, 0x5e0b, 0x5d11, 0x5d19, 0x5dd6, 0x59b3, 0x5aae, 0x9a94, + 0x658f, 0x709e, 0x7551, 0x71ff, 0x691d, 0x6a11, 0x68bf, 0x6607, + 0x668e, 0x6673, 0x6c25, 0x7652, 0x778b, 0x76ea, 0x9895, 0x8780, + 0x882d, 0x7b87, 0x7c50, 0x8ead, 0x9575, 0x65c2, + /* 0x2e */ + 0x5390, 0x79b8, 0x4f15, 0x4f21, 0x4f3b, 0x4fa2, 0x50a4, 0x5092, + 0x530a, 0x51c3, 0x51a8, 0x8d20, 0x5787, 0x579a, 0x5795, 0x57eb, + 0x585d, 0x585a, 0x5871, 0x5895, 0x5c30, 0x5f0c, 0x5f0d, 0x5f0e, + 0x5c72, 0x5cc7, 0x5fac, 0x5f68, 0x5f5f, 0x5a12, 0x5a65, 0x5a84, + 0x5ac4, 0x7394, 0x73ea, 0x73ee, 0x7437, 0x7415, 0x7454, 0x6799, + 0x686c, 0x68f8, 0x69fe, 0x72e2, 0x6667, 0x8d52, 0x89c3, 0x89cd, + 0x6427, 0x6477, 0x6c1d, 0x813f, 0x6b54, 0x98d6, 0x707a, 0x70f1, + 0x7120, 0x6153, 0x6c87, 0x6dad, 0x6e81, 0x6eb5, 0x6f94, 0x6f9b, + 0x793d, 0x794e, 0x7806, 0x7859, 0x7894, 0x78dc, 0x7903, 0x7a16, + 0x7a5e, 0x75e0, 0x7adc, 0x7676, 0x9892, 0x7bf2, 0x7c30, 0x7c5d, + 0x9c9d, 0x7cac, 0x8278, 0x83d1, 0x84ea, 0x7fc0, 0x7f1e, 0x8e21, + 0x8e53, 0x9754, 0x9f0c, 0x94fb, 0xfffd, 0xfffd, + /* 0x2f */ + 0x32c0, 0x32c1, 0x32c2, 0x32c3, 0x32c4, 0x32c5, 0x32c6, 0x32c7, + 0x32c8, 0x32c9, 0x32ca, 0x32cb, 0x33e0, 0x33e1, 0x33e2, 0x33e3, + 0x33e4, 0x33e5, 0x33e6, 0x33e7, 0x33e8, 0x33e9, 0x33ea, 0x33eb, + 0x33ec, 0x33ed, 0x33ee, 0x33ef, 0x33f0, 0x33f1, 0x33f2, 0x33f3, + 0x33f4, 0x33f5, 0x33f6, 0x33f7, 0x33f8, 0x33f9, 0x33fa, 0x33fb, + 0x33fc, 0x33fd, 0x33fe, 0x3358, 0x3359, 0x335a, 0x335b, 0x335c, + 0x335d, 0x335e, 0x335f, 0x3360, 0x3361, 0x3362, 0x3363, 0x3364, + 0x3365, 0x3366, 0x3367, 0x3368, 0x3369, 0x336a, 0x336b, 0x336c, + 0x336d, 0x336e, 0x336f, 0x3370, 0x3037, 0x90a8, 0x965e, 0x5842, + 0x5803, 0x6c3e, 0x6d29, 0x6ee7, 0x8534, 0x84c6, 0x633c, 0x5d05, + 0x7f10, 0x7eec, 0x7287, 0x712e, 0x8218, 0x8216, 0x756c, 0x75f3, + 0x9b25, 0x8980, 0x7ca6, 0x4e85, 0x5570, 0x91c6, +}; +static const unsigned short isoir165ext_2uni_page7a[470] = { + /* 0x7a */ + 0x4e0f, 0x673f, 0x4e42, 0x752a, 0x592c, 0x9ee1, 0x8652, 0x531c, + 0x5187, 0x518f, 0x50f0, 0x4f0b, 0x4f23, 0x4f03, 0x4f61, 0x4f7a, + 0x4f6b, 0x4feb, 0x4ff5, 0x5034, 0x5022, 0x4ff6, 0x5072, 0x4eb6, + 0x51ae, 0x5910, 0x6bda, 0x522c, 0x5232, 0x4fb4, 0x5298, 0x52bb, + 0x52bc, 0x52cd, 0x52da, 0x52f7, 0x53c6, 0x53c7, 0x5770, 0x576c, + 0x57b1, 0x579f, 0x579e, 0x57be, 0x57cc, 0x580e, 0x580c, 0x57f5, + 0x5809, 0x583c, 0x5843, 0x5845, 0x5846, 0x583d, 0x5853, 0x5888, + 0x5884, 0x58f8, 0x56ad, 0x5940, 0x5953, 0x596d, 0x5c2a, 0x54a5, + 0x551d, 0x5536, 0x556f, 0x554d, 0x569a, 0x569c, 0x56f7, 0x5710, + 0x5719, 0x5e17, 0x5e21, 0x5e28, 0x5e6a, 0x5c74, 0x5c7c, 0x5ca8, + 0x5c9e, 0x5cc3, 0x5cd3, 0x5ce3, 0x5ce7, 0x5cff, 0x5d04, 0x5d00, + 0x5d1a, 0x5d0c, 0x5d4e, 0x5d5a, 0x5d85, 0x5d93, + /* 0x7b */ + 0x5d92, 0x5dc2, 0x5dc9, 0x8852, 0x5faf, 0x5906, 0x65a8, 0x7241, + 0x7242, 0x5ebc, 0x5ecb, 0x95ec, 0x95ff, 0x8a1a, 0x9607, 0x9613, + 0x961b, 0x5bac, 0x5ba7, 0x5c5d, 0x5f22, 0x59ee, 0x5a7c, 0x5a96, + 0x5a73, 0x5a9e, 0x5aad, 0x5ada, 0x5aea, 0x5b1b, 0x5b56, 0x9a72, + 0x9a83, 0x9a89, 0x9a8d, 0x9a8e, 0x9a95, 0x9aa6, 0x7395, 0x7399, + 0x73a0, 0x73b1, 0x73a5, 0x73a6, 0x73d6, 0x73f0, 0x73fd, 0x73e3, + 0x7424, 0x740e, 0x7407, 0x73f6, 0x73fa, 0x7432, 0x742f, 0x7444, + 0x7442, 0x7471, 0x7478, 0x7462, 0x7486, 0x749f, 0x74a0, 0x7498, + 0x74b2, 0x97e8, 0x6745, 0x679f, 0x677b, 0x67c8, 0x67ee, 0x684b, + 0x68a0, 0x6812, 0x681f, 0x686a, 0x68bc, 0x68fb, 0x686f, 0x68b1, + 0x68c1, 0x68eb, 0x6913, 0x68d1, 0x6911, 0x68d3, 0x68ec, 0x692b, + 0x68e8, 0x69be, 0x6969, 0x6940, 0x696f, 0x695f, + /* 0x7c */ + 0x6962, 0x6935, 0x6959, 0x69bc, 0x69c5, 0x69da, 0x69dc, 0x6a0b, + 0x69e5, 0x6a66, 0x6a96, 0x6ab4, 0x72dd, 0x5cf1, 0x7314, 0x733a, + 0x6b95, 0x5f67, 0x80fe, 0x74fb, 0x7503, 0x655c, 0x6569, 0x6f26, + 0x65f8, 0x65fb, 0x6609, 0x663d, 0x6662, 0x665e, 0x666c, 0x668d, + 0x668b, 0x8d51, 0x8d57, 0x7263, 0x7277, 0x63b1, 0x6261, 0x6260, + 0x6283, 0x62e4, 0x62c3, 0x631c, 0x6326, 0x63af, 0x63fe, 0x6422, + 0x6412, 0x64ed, 0x6713, 0x6718, 0x8158, 0x81d1, 0x98cf, 0x98d4, + 0x98d7, 0x6996, 0x7098, 0x70dc, 0x70fa, 0x710c, 0x711c, 0x71cb, + 0x721f, 0x70dd, 0x659d, 0x6246, 0x6017, 0x60c7, 0x60d3, 0x60b0, + 0x60d9, 0x6114, 0x6c3f, 0x6c67, 0x6c84, 0x6c9a, 0x6c6d, 0x6ca8, + 0x6cc6, 0x6cb5, 0x6d49, 0x6d38, 0x6d11, 0x6d3a, 0x6d28, 0x6d50, + 0x6d34, 0x6d55, 0x6d61, 0x6da2, 0x6d65, 0x6d5b, + /* 0x7d */ + 0x6d64, 0x6db4, 0x6e9a, 0x6e5c, 0x6e72, 0x6ea0, 0x6e87, 0x6e8e, + 0x6ec9, 0x6ec3, 0x6f37, 0x6ed8, 0x6eea, 0x6f56, 0x6f75, 0x6f5f, + 0x6fb4, 0x6fbc, 0x7014, 0x700d, 0x700c, 0x703c, 0x7943, 0x7947, + 0x794a, 0x7950, 0x7972, 0x7998, 0x79a0, 0x79a4, 0x77fc, 0x77fb, + 0x7822, 0x7820, 0x7841, 0x785a, 0x7875, 0x78b6, 0x78e1, 0x7933, + 0x8a5f, 0x76fb, 0x771b, 0x772c, 0x7786, 0x77ab, 0x77ad, 0x7564, + 0x756f, 0x6983, 0x7f7d, 0x76dd, 0x76e6, 0x76ec, 0x7521, 0x79fe, + 0x7a44, 0x767f, 0x769e, 0x9e27, 0x9e2e, 0x9e30, 0x9e34, 0x9e4d, + 0x9e52, 0x9e53, 0x9e54, 0x9e56, 0x9e59, 0x9e61, 0x9e62, 0x9e65, + 0x9e6f, 0x9e74, 0x75a2, 0x7604, 0x7608, 0x761d, 0x7ad1, 0x7a85, + 0x7a8e, 0x7aa3, 0x7ab8, 0x7abe, 0x77de, 0x8030, 0x988b, 0x988e, + 0x9899, 0x98a3, 0x8683, 0x8705, 0x8758, 0x87cf, + /* 0x7e */ + 0x87e2, 0x880b, 0x80d4, 0x7f4d, 0x7b4a, 0x7b4e, 0x7b7f, 0x7b93, + 0x7bef, 0x7c09, 0x7bf0, 0x7c15, 0x7c03, 0x7c20, 0x823a, 0x8886, + 0x88aa, 0x88c0, 0x88c8, 0x8926, 0x8976, 0x7f91, 0x8283, 0x82bc, + 0x82a7, 0x8313, 0x82fe, 0x8300, 0x835d, 0x8345, 0x8344, 0x831d, + 0x83a6, 0x8399, 0x83fe, 0x841a, 0x83fc, 0x8429, 0x8439, 0x84a8, + 0x84cf, 0x849f, 0x84c2, 0x84f7, 0x8570, 0x85b3, 0x85a2, 0x96d8, + 0x85b8, 0x85e0, 0x7fda, 0x7eae, 0x7eb4, 0x7ebc, 0x7ed6, 0x7f0a, + 0x5b43, 0x8d6a, 0x5245, 0x8c68, 0x8c6e, 0x8c6d, 0x8e16, 0x8e26, + 0x8e27, 0x8e50, 0x9098, 0x90a0, 0x90bd, 0x90c8, 0x90c3, 0x90da, + 0x90ff, 0x911a, 0x910c, 0x9120, 0x9142, 0x8fb5, 0x90e4, 0x8c86, + 0x89f1, 0x8bb1, 0x8bbb, 0x8bc7, 0x8bea, 0x8c09, 0x8c1e, 0x9702, + 0x68d0, 0x7306, 0x9f81, 0x9f82, 0x92c6, 0x9491, +}; + +static int +isoir165ext_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + unsigned char c1 = s[0]; + if ((c1 >= 0x2b && c1 <= 0x2f) || (c1 >= 0x7a && c1 <= 0x7e)) { + if (n >= 2) { + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) { + unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); + unsigned short wc = 0xfffd; + if (i < 8366) { + if (i < 1410) + wc = isoir165ext_2uni_page2b[i-940]; + } else { + if (i < 8836) + wc = isoir165ext_2uni_page7a[i-8366]; + } + if (wc != 0xfffd) { + *pwc = (wchar_t) wc; + return 2; + } + } + return RET_ILSEQ; + } + return RET_TOOFEW(0); + } + return RET_ILSEQ; +} + +static const unsigned short isoir165ext_2charset[876] = { + 0x2b28, 0x2b26, 0x2b3a, 0x2b2c, 0x2b2a, 0x2b30, 0x2b2e, 0x2b34, + 0x2b32, 0x2b39, 0x2b25, 0x2b27, 0x2b29, 0x2b3d, 0x2b3e, 0x2b2d, + 0x2b31, 0x2b2b, 0x2b2f, 0x2b33, 0x2b35, 0x2b36, 0x2b37, 0x2b38, + 0x2b3f, 0x2b22, 0x2b3b, 0x2b3c, 0x2b24, 0x2b23, 0x2b21, 0x2f65, + 0x2f21, 0x2f22, 0x2f23, 0x2f24, 0x2f25, 0x2f26, 0x2f27, 0x2f28, + 0x2f29, 0x2f2a, 0x2f2b, 0x2f2c, 0x2f4c, 0x2f4d, 0x2f4e, 0x2f4f, + 0x2f50, 0x2f51, 0x2f52, 0x2f53, 0x2f54, 0x2f55, 0x2f56, 0x2f57, + 0x2f58, 0x2f59, 0x2f5a, 0x2f5b, 0x2f5c, 0x2f5d, 0x2f5e, 0x2f5f, + 0x2f60, 0x2f61, 0x2f62, 0x2f63, 0x2f64, 0x2f2d, 0x2f2e, 0x2f2f, + 0x2f30, 0x2f31, 0x2f32, 0x2f33, 0x2f34, 0x2f35, 0x2f36, 0x2f37, + 0x2f38, 0x2f39, 0x2f3a, 0x2f3b, 0x2f3c, 0x2f3d, 0x2f3e, 0x2f3f, + 0x2f40, 0x2f41, 0x2f42, 0x2f43, 0x2f44, 0x2f45, 0x2f46, 0x2f47, + 0x2f48, 0x2f49, 0x2f4a, 0x2f4b, 0x7a21, 0x2c76, 0x7a23, 0x2f7c, + 0x7a38, 0x2c22, 0x7a2e, 0x7a2c, 0x2e23, 0x2e24, 0x7a2d, 0x2e25, + 0x2c23, 0x7a2f, 0x7a31, 0x7a30, 0x2e26, 0x7a3e, 0x7a32, 0x7a33, + 0x7a36, 0x2c24, 0x7a35, 0x7a34, 0x7a37, 0x2c79, 0x2e28, 0x2e27, + 0x2c25, 0x2c7a, 0x7a2b, 0x7a29, 0x7a2a, 0x2e2b, 0x7a39, 0x2e2a, + 0x7a3c, 0x7a3d, 0x7e5b, 0x7a3f, 0x2c7b, 0x7a40, 0x7a41, 0x7a42, + 0x7a43, 0x2d53, 0x7a44, 0x2e29, 0x7a28, 0x2e21, 0x2c21, 0x7a45, + 0x7a46, 0x7a60, 0x7a61, 0x7a62, 0x7a64, 0x2c7d, 0x7a63, 0x2f7d, + 0x2c38, 0x2d5e, 0x2c39, 0x2c3a, 0x2c3b, 0x7a65, 0x7a66, 0x7a5b, + 0x7a67, 0x7a68, 0x7a69, 0x7a48, 0x7a47, 0x2d5d, 0x2e2d, 0x2e2f, + 0x2e2e, 0x7a4b, 0x7a4a, 0x7a49, 0x7a4c, 0x7a4d, 0x2e30, 0x7a50, + 0x2f69, 0x7a51, 0x7a4f, 0x7a4e, 0x7a52, 0x7a56, 0x2f68, 0x7a53, + 0x7a54, 0x7a55, 0x2c31, 0x7a57, 0x2e32, 0x2e31, 0x2e33, 0x7a59, + 0x7a58, 0x2e34, 0x7a5a, 0x7b26, 0x7a3a, 0x7a25, 0x7a5c, 0x7a5d, + 0x7a5e, 0x2d66, 0x2c3f, 0x7b36, 0x2c40, 0x2e3e, 0x2c41, 0x2e3f, + 0x7b39, 0x7b37, 0x2e40, 0x7b38, 0x7b3a, 0x7b3b, 0x2d67, 0x2e41, + 0x7b3c, 0x7b3d, 0x7b3e, 0x7e59, 0x7b3f, 0x7b33, 0x7b32, 0x2d61, + 0x7a5f, 0x2e35, 0x7b34, 0x2e39, 0x7a6e, 0x7a6f, 0x7a71, 0x7a70, + 0x7a72, 0x2e3a, 0x7a73, 0x7a74, 0x7a75, 0x7c2e, 0x7a76, 0x7a78, + 0x7a77, 0x2f70, 0x7a7a, 0x2d63, 0x2d64, 0x7a79, 0x2c3c, 0x7a7b, + 0x7a7c, 0x7a7d, 0x7b21, 0x7a7e, 0x7b22, 0x7b23, 0x2d65, 0x2d62, + 0x7a6a, 0x7a6b, 0x7a6c, 0x7a6d, 0x2c2f, 0x7b2a, 0x2d5b, 0x7b2b, + 0x2c34, 0x2e36, 0x2e37, 0x2e38, 0x7b35, 0x2e3d, 0x7c32, 0x2e3c, + 0x2e3b, 0x7b25, 0x7c65, 0x2d5a, 0x7c68, 0x7c66, 0x7c67, 0x7c69, + 0x7c6a, 0x2e5a, 0x2c2e, 0x2c47, 0x7c64, 0x2c48, 0x7c48, 0x7c47, + 0x7c49, 0x2c35, 0x7c4b, 0x7c4a, 0x7c4c, 0x7c4d, 0x2f6f, 0x7c4e, + 0x7c46, 0x7c4f, 0x7c51, 0x7c50, 0x2e51, 0x2e52, 0x2c36, 0x7c52, + 0x7c36, 0x7c37, 0x2d69, 0x7c63, 0x2d4e, 0x7b27, 0x2d7e, 0x7c39, + 0x7c3a, 0x2d70, 0x7c3b, 0x7c3c, 0x7c3e, 0x7c3d, 0x2e4d, 0x7c3f, + 0x2d72, 0x7c41, 0x7c40, 0x2d71, 0x7c53, 0x7c54, 0x7a22, 0x7b63, + 0x2c4f, 0x7b65, 0x2e48, 0x7b64, 0x7b66, 0x7b67, 0x7b6a, 0x7b6b, + 0x7b68, 0x7b6c, 0x2e49, 0x7b6f, 0x7b69, 0x7b70, 0x7b6d, 0x2d6f, + 0x7b71, 0x7e79, 0x7b74, 0x7b76, 0x7b79, 0x7b72, 0x7b77, 0x2e4a, + 0x7b6e, 0x7b75, 0x7b73, 0x2d6d, 0x7b78, 0x7c22, 0x7b7c, 0x7c23, + 0x7b7e, 0x7c21, 0x7b7b, 0x7b7d, 0x7d52, 0x7c5a, 0x7c24, 0x7b7a, + 0x7c25, 0x7c26, 0x7c27, 0x7c29, 0x2e4b, 0x7c28, 0x2d6e, 0x7c2a, + 0x7c2b, 0x7c2c, 0x2c50, 0x2c5a, 0x2e55, 0x7c31, 0x2c52, 0x7a3b, + 0x2e53, 0x2d73, 0x2f6a, 0x7c6b, 0x7c6c, 0x7c6f, 0x7c6d, 0x2e5b, + 0x2d54, 0x2c27, 0x7c6e, 0x7c70, 0x7c72, 0x2c29, 0x7c71, 0x2c28, + 0x7c75, 0x7c77, 0x2f6b, 0x7c79, 0x7c74, 0x7c76, 0x2d55, 0x7c73, + 0x7c78, 0x7c7a, 0x7c7e, 0x7c7b, 0x7d21, 0x7c7d, 0x7c7c, 0x2e5c, + 0x7d22, 0x2d56, 0x7d24, 0x2c2a, 0x2d57, 0x7d25, 0x2e5d, 0x7d27, + 0x7d28, 0x7d23, 0x7d26, 0x2c2b, 0x2e5e, 0x7d2a, 0x7d29, 0x7d2c, + 0x2f6c, 0x7d2d, 0x2c2c, 0x7c38, 0x7d2b, 0x7d2e, 0x7d30, 0x7d2f, + 0x2d58, 0x2e5f, 0x2e60, 0x2c2d, 0x7d31, 0x7d32, 0x2d59, 0x7d35, + 0x7d34, 0x7d33, 0x7d36, 0x2e57, 0x7c5b, 0x2d6a, 0x7c5c, 0x7c62, + 0x2e58, 0x7c5d, 0x7c5e, 0x7c5f, 0x2e59, 0x2f74, 0x2c51, 0x7c60, + 0x2c46, 0x2d6c, 0x7c61, 0x7b28, 0x7b29, 0x2c37, 0x7c44, 0x7c45, + 0x2f73, 0x2c57, 0x2c3d, 0x7c2d, 0x2e4c, 0x7e7a, 0x7c2f, 0x7c30, + 0x2e42, 0x7b47, 0x7b48, 0x2c4a, 0x7b49, 0x7b4b, 0x7b4c, 0x7b4a, + 0x7b4d, 0x7b50, 0x2e43, 0x2e44, 0x7b4e, 0x7b54, 0x7b55, 0x7b4f, + 0x7b53, 0x7b52, 0x2e46, 0x7b51, 0x2c4b, 0x7b57, 0x7b56, 0x2e45, + 0x7b59, 0x7b58, 0x2e47, 0x7b5c, 0x7b5a, 0x7b5b, 0x7b5d, 0x2c4c, + 0x7b60, 0x7b5e, 0x7b5f, 0x2c4d, 0x7b61, 0x2c4e, 0x7c34, 0x7c35, + 0x7d57, 0x2c75, 0x7a24, 0x2d6b, 0x7d50, 0x2f77, 0x7d51, 0x7d6b, + 0x2e6a, 0x2f78, 0x7d6c, 0x7d6d, 0x7d6e, 0x2d74, 0x2e6c, 0x7d5a, + 0x7d5b, 0x7d54, 0x7d55, 0x2d76, 0x7d56, 0x7d4a, 0x2c5f, 0x7d4b, + 0x7d4c, 0x7d4d, 0x2d75, 0x7d4e, 0x7d4f, 0x7d75, 0x7d40, 0x7d3f, + 0x2e63, 0x7d42, 0x7d41, 0x7d43, 0x2e64, 0x7d44, 0x7d45, 0x2e65, + 0x7d46, 0x2e66, 0x7d47, 0x2e67, 0x7d48, 0x2e61, 0x7d37, 0x7d38, + 0x7d39, 0x2e62, 0x7d3a, 0x7d3b, 0x2c49, 0x7d3c, 0x7d3d, 0x7d3e, + 0x2e22, 0x7d58, 0x2e68, 0x7d59, 0x2e69, 0x7d70, 0x7d71, 0x7d72, + 0x7d73, 0x7d74, 0x7d6f, 0x2e6b, 0x7e25, 0x7e26, 0x2c69, 0x7e27, + 0x2d7a, 0x7e28, 0x7e29, 0x7e2b, 0x2e6e, 0x7e2d, 0x7e2a, 0x7e2c, + 0x7e2e, 0x2e6f, 0x2d7b, 0x2e70, 0x2f7b, 0x2e72, 0x2c33, 0x2c6c, + 0x7e54, 0x7e55, 0x2c42, 0x7e56, 0x7e57, 0x2c43, 0x2f72, 0x2c44, + 0x7e58, 0x2f71, 0x2e77, 0x7e24, 0x7d53, 0x7e36, 0x2e76, 0x2c6a, + 0x7e53, 0x2c6b, 0x7d76, 0x7e23, 0x7c33, 0x2c78, 0x2e54, 0x2c59, + 0x7c55, 0x7c56, 0x2f76, 0x2f75, 0x7e2f, 0x2e73, 0x7e37, 0x7e39, + 0x7e38, 0x7e3b, 0x7e3c, 0x7e3a, 0x7e40, 0x7e3f, 0x7e3e, 0x7e3d, + 0x7e42, 0x7e41, 0x2e74, 0x7e45, 0x7e43, 0x7e44, 0x7e46, 0x7e47, + 0x2c32, 0x2d60, 0x2d5f, 0x7e4a, 0x7e48, 0x7e4b, 0x2f6e, 0x7e49, + 0x2e75, 0x7e4c, 0x2f6d, 0x7e4d, 0x7e4f, 0x7e4e, 0x7e51, 0x7e52, + 0x7a27, 0x7d7b, 0x7d7c, 0x2c68, 0x7d7d, 0x2d78, 0x2c58, 0x7d7e, + 0x7e21, 0x7e22, 0x2d79, 0x7b24, 0x7e30, 0x2c5c, 0x7e31, 0x2c5d, + 0x7e32, 0x7e33, 0x7e34, 0x2c5e, 0x7e35, 0x2f7a, 0x2e4f, 0x2e50, + 0x2c7c, 0x7e71, 0x7b2e, 0x7d49, 0x2c77, 0x7e72, 0x7e73, 0x7e74, + 0x7e75, 0x7e76, 0x7e77, 0x7e5c, 0x7e5e, 0x7e5d, 0x7e70, 0x2e2c, + 0x7c42, 0x2e4e, 0x7c43, 0x2c55, 0x7e5a, 0x7e5f, 0x2e78, 0x7e60, + 0x7e61, 0x2c6e, 0x2c6d, 0x7e62, 0x2e79, 0x2c70, 0x2c6f, 0x2d7c, + 0x2c53, 0x2c54, 0x7e6e, 0x2d5c, 0x7e63, 0x7e64, 0x2f66, 0x7e65, + 0x7e67, 0x7e66, 0x7e68, 0x7e6f, 0x7e69, 0x7e6b, 0x2c26, 0x7e6a, + 0x2d50, 0x7e6c, 0x7e6d, 0x2f7e, 0x7e7d, 0x7e7e, 0x2d21, 0x2d22, + 0x2c7e, 0x2d23, 0x2d24, 0x2d25, 0x2c60, 0x2d26, 0x2e7c, 0x2d28, + 0x2d29, 0x2d2a, 0x2d27, 0x2d2b, 0x2d2c, 0x2c61, 0x2c62, 0x2d2d, + 0x2d2e, 0x2d7d, 0x7b2c, 0x7b2d, 0x7b2f, 0x7b30, 0x2c30, 0x7b31, + 0x2f67, 0x7e50, 0x7e78, 0x2e7a, 0x2d3e, 0x2c71, 0x2d3f, 0x2d40, + 0x2d42, 0x2d41, 0x7b62, 0x7d77, 0x7d78, 0x2e6d, 0x2d77, 0x7d79, + 0x7d7a, 0x7c57, 0x2c5b, 0x7c58, 0x2e56, 0x7c59, 0x2d43, 0x2d44, + 0x2d45, 0x2d46, 0x2d47, 0x2d48, 0x2d49, 0x2d4a, 0x2c3e, 0x2d4b, + 0x7b40, 0x7b41, 0x7b42, 0x7b43, 0x7b44, 0x2d68, 0x7b45, 0x2c45, + 0x7b46, 0x2d4c, 0x2d4d, 0x2f79, 0x2c56, 0x2c72, 0x2d2f, 0x2d30, + 0x2d31, 0x2d32, 0x2d33, 0x2d34, 0x2d35, 0x2d36, 0x2e71, 0x2d37, + 0x2d38, 0x2d39, 0x2d3a, 0x2d3b, 0x2d3c, 0x2d3d, 0x2c63, 0x7d5c, + 0x7d5d, 0x7d5e, 0x7d5f, 0x2c64, 0x7d60, 0x2c65, 0x7d61, 0x7d62, + 0x7d63, 0x7d64, 0x7d65, 0x2c66, 0x2c67, 0x7d66, 0x7d67, 0x7d68, + 0x7d69, 0x7d6a, 0x2d4f, 0x2d51, 0x7a26, 0x2e7b, 0x2d52, 0x2c73, + 0x2c74, 0x7e7b, 0x7e7c, 0x2b40, +}; + +static const Summary16 isoir165ext_uni2indx_page00[32] = { + /* 0x0000 */ + { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, + { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, + { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, + { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x3700 }, { 5, 0x160c }, + /* 0x0100 */ + { 10, 0x0000 }, { 10, 0x0808 }, { 12, 0x0800 }, { 13, 0x0000 }, + { 13, 0x2110 }, { 16, 0x0000 }, { 16, 0x0800 }, { 17, 0x0000 }, + { 17, 0x0000 }, { 17, 0x0000 }, { 17, 0x0000 }, { 17, 0x0000 }, + { 17, 0x0000 }, { 17, 0x1555 }, { 24, 0x0000 }, { 24, 0x0200 }, +}; +static const Summary16 isoir165ext_uni2indx_page03[12] = { + /* 0x0300 */ + { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, + { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, + { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x1000 }, { 26, 0x0002 }, +}; +static const Summary16 isoir165ext_uni2indx_page1e[28] = { + /* 0x1e00 */ + { 27, 0x0000 }, { 27, 0x0000 }, { 27, 0x0000 }, { 27, 0x8000 }, + { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, + { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, + { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, + /* 0x1f00 */ + { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, + { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0001 }, + { 29, 0x0000 }, { 29, 0x0000 }, { 29, 0x0000 }, { 29, 0x0003 }, +}; +static const Summary16 isoir165ext_uni2indx_page30[4] = { + /* 0x3000 */ + { 31, 0x0000 }, { 31, 0x0000 }, { 31, 0x0000 }, { 31, 0x0080 }, +}; +static const Summary16 isoir165ext_uni2indx_page32[32] = { + /* 0x3200 */ + { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, + { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, + { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, + { 32, 0x0fff }, { 44, 0x0000 }, { 44, 0x0000 }, { 44, 0x0000 }, + /* 0x3300 */ + { 44, 0x0000 }, { 44, 0x0000 }, { 44, 0x0000 }, { 44, 0x0000 }, + { 44, 0x0000 }, { 44, 0xff00 }, { 52, 0xffff }, { 68, 0x0001 }, + { 69, 0x0000 }, { 69, 0x0000 }, { 69, 0x0000 }, { 69, 0x0000 }, + { 69, 0x0000 }, { 69, 0x0000 }, { 69, 0xffff }, { 85, 0x7fff }, +}; +static const Summary16 isoir165ext_uni2indx_page4e[752] = { + /* 0x4e00 */ + { 100, 0x8000 }, { 101, 0x0000 }, { 101, 0x0040 }, { 102, 0x0000 }, + { 102, 0x0004 }, { 103, 0x0000 }, { 103, 0x0000 }, { 103, 0x0000 }, + { 103, 0x0020 }, { 104, 0x0000 }, { 104, 0x0000 }, { 104, 0x0140 }, + { 106, 0x0000 }, { 106, 0x0000 }, { 106, 0x0000 }, { 106, 0x0000 }, + /* 0x4f00 */ + { 106, 0x0808 }, { 108, 0x0020 }, { 109, 0x000a }, { 111, 0x4800 }, + { 113, 0x0000 }, { 113, 0x0000 }, { 113, 0x0802 }, { 115, 0x0400 }, + { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0004 }, { 117, 0x0010 }, + { 118, 0x0000 }, { 118, 0x0000 }, { 118, 0x0800 }, { 119, 0x0060 }, + /* 0x5000 */ + { 121, 0x0000 }, { 121, 0x4000 }, { 122, 0x0004 }, { 123, 0x0010 }, + { 124, 0x0000 }, { 124, 0x0000 }, { 124, 0x0000 }, { 124, 0x0004 }, + { 125, 0x0000 }, { 125, 0x0006 }, { 127, 0x0010 }, { 128, 0x0000 }, + { 128, 0x2080 }, { 130, 0x0000 }, { 130, 0x0000 }, { 130, 0x0001 }, + /* 0x5100 */ + { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, + { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, + { 131, 0x8080 }, { 133, 0x0000 }, { 133, 0x4100 }, { 135, 0x0000 }, + { 135, 0x0008 }, { 136, 0x0000 }, { 136, 0x0000 }, { 136, 0x0000 }, + /* 0x5200 */ + { 136, 0x0000 }, { 136, 0x0000 }, { 136, 0x1000 }, { 137, 0x0004 }, + { 138, 0x0020 }, { 139, 0x0000 }, { 139, 0x0000 }, { 139, 0x0000 }, + { 139, 0x0000 }, { 139, 0x0100 }, { 140, 0x0000 }, { 140, 0x1a00 }, + { 143, 0x2000 }, { 144, 0x0400 }, { 145, 0x0000 }, { 145, 0x0088 }, + /* 0x5300 */ + { 147, 0x0400 }, { 148, 0x1000 }, { 149, 0x0000 }, { 149, 0x0000 }, + { 149, 0x0000 }, { 149, 0x0000 }, { 149, 0x0000 }, { 149, 0x0000 }, + { 149, 0x0000 }, { 149, 0x0001 }, { 150, 0x0000 }, { 150, 0x4000 }, + { 151, 0x00c0 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, + /* 0x5400 */ + { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, + { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, + { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0020 }, { 154, 0x0000 }, + { 154, 0x0000 }, { 154, 0x0000 }, { 154, 0x0000 }, { 154, 0x0000 }, + /* 0x5500 */ + { 154, 0x0000 }, { 154, 0x2000 }, { 155, 0x0000 }, { 155, 0x0040 }, + { 156, 0x2000 }, { 157, 0x0080 }, { 158, 0x8000 }, { 159, 0x0011 }, + { 161, 0x0040 }, { 162, 0x0000 }, { 162, 0x0010 }, { 163, 0x0000 }, + { 163, 0x0000 }, { 163, 0x0000 }, { 163, 0x0000 }, { 163, 0x0000 }, + /* 0x5600 */ + { 163, 0x0000 }, { 163, 0x0000 }, { 163, 0x0000 }, { 163, 0x0000 }, + { 163, 0x0001 }, { 164, 0x0000 }, { 164, 0x0000 }, { 164, 0x0000 }, + { 164, 0x0010 }, { 165, 0x1400 }, { 167, 0x2000 }, { 168, 0x0000 }, + { 168, 0x0000 }, { 168, 0x0000 }, { 168, 0x0000 }, { 168, 0x0080 }, + /* 0x5700 */ + { 169, 0x0000 }, { 169, 0x0201 }, { 171, 0x0000 }, { 171, 0x0000 }, + { 171, 0x0000 }, { 171, 0x0000 }, { 171, 0x1000 }, { 172, 0x8001 }, + { 174, 0x0080 }, { 175, 0xc420 }, { 179, 0x0000 }, { 179, 0x4002 }, + { 181, 0x1000 }, { 182, 0x0000 }, { 182, 0x0800 }, { 183, 0x0020 }, + /* 0x5800 */ + { 184, 0x5208 }, { 188, 0x0000 }, { 188, 0x0000 }, { 188, 0x3000 }, + { 190, 0x016c }, { 195, 0x2408 }, { 198, 0x0000 }, { 198, 0x0002 }, + { 199, 0x0110 }, { 201, 0x0020 }, { 202, 0x0000 }, { 202, 0x0000 }, + { 202, 0x0000 }, { 202, 0x0000 }, { 202, 0x0000 }, { 202, 0x0100 }, + /* 0x5900 */ + { 203, 0x0040 }, { 204, 0x0001 }, { 205, 0x1000 }, { 206, 0x0000 }, + { 206, 0x0001 }, { 207, 0x0008 }, { 208, 0x2000 }, { 209, 0x0000 }, + { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0008 }, + { 210, 0x0000 }, { 210, 0x4000 }, { 211, 0x4000 }, { 212, 0x2000 }, + /* 0x5a00 */ + { 213, 0x0000 }, { 213, 0x0004 }, { 214, 0x0000 }, { 214, 0x0000 }, + { 214, 0x0000 }, { 214, 0x4000 }, { 215, 0x0020 }, { 216, 0x1008 }, + { 218, 0x0010 }, { 219, 0x4040 }, { 221, 0x6000 }, { 223, 0x0000 }, + { 223, 0x0010 }, { 224, 0x0400 }, { 225, 0x0400 }, { 226, 0x0000 }, + /* 0x5b00 */ + { 226, 0x0000 }, { 226, 0x0800 }, { 227, 0x0000 }, { 227, 0x0000 }, + { 227, 0x0008 }, { 228, 0x0040 }, { 229, 0x0000 }, { 229, 0x0000 }, + { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x1080 }, { 231, 0x0000 }, + { 231, 0x0000 }, { 231, 0x0000 }, { 231, 0x0000 }, { 231, 0x0000 }, + /* 0x5c00 */ + { 231, 0x0020 }, { 232, 0x0000 }, { 232, 0x0400 }, { 233, 0x0001 }, + { 234, 0x0000 }, { 234, 0x2000 }, { 235, 0x0000 }, { 235, 0x1014 }, + { 238, 0x0000 }, { 238, 0x4000 }, { 239, 0x0100 }, { 240, 0x0000 }, + { 240, 0x0088 }, { 242, 0x0008 }, { 243, 0x0088 }, { 245, 0x8002 }, + /* 0x5d00 */ + { 247, 0x1031 }, { 251, 0x8602 }, { 255, 0x0000 }, { 255, 0x0000 }, + { 255, 0x4000 }, { 256, 0x0400 }, { 257, 0x0000 }, { 257, 0x0000 }, + { 257, 0x0020 }, { 258, 0x000c }, { 260, 0x0000 }, { 260, 0x0000 }, + { 260, 0x0204 }, { 262, 0x0040 }, { 263, 0x0000 }, { 263, 0x0000 }, + /* 0x5e00 */ + { 263, 0x0800 }, { 264, 0x0080 }, { 265, 0x0102 }, { 267, 0x0000 }, + { 267, 0x0000 }, { 267, 0x0000 }, { 267, 0x0400 }, { 268, 0x0000 }, + { 268, 0x0000 }, { 268, 0x0000 }, { 268, 0x0010 }, { 269, 0x1000 }, + { 270, 0x0900 }, { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 }, + /* 0x5f00 */ + { 272, 0x7080 }, { 276, 0x0000 }, { 276, 0x0004 }, { 277, 0x0000 }, + { 277, 0x0000 }, { 277, 0x8000 }, { 278, 0x0180 }, { 280, 0x0000 }, + { 280, 0x0000 }, { 280, 0x0000 }, { 280, 0x9000 }, { 282, 0x0000 }, + { 282, 0x0000 }, { 282, 0x0000 }, { 282, 0x0000 }, { 282, 0x0000 }, + /* 0x6000 */ + { 282, 0x0000 }, { 282, 0x0080 }, { 283, 0x0000 }, { 283, 0x0000 }, + { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x0000 }, + { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x4000 }, { 284, 0x0001 }, + { 285, 0x0080 }, { 286, 0x0208 }, { 288, 0x0000 }, { 288, 0x0000 }, + /* 0x6100 */ + { 288, 0x0000 }, { 288, 0x0010 }, { 289, 0x0000 }, { 289, 0x0000 }, + { 289, 0x0000 }, { 289, 0x0008 }, { 290, 0x0020 }, { 291, 0x0000 }, + { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, + { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, + /* 0x6200 */ + { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, + { 291, 0x0460 }, { 294, 0x0000 }, { 294, 0x0003 }, { 296, 0x0000 }, + { 296, 0x0008 }, { 297, 0x0010 }, { 298, 0x0000 }, { 298, 0x0000 }, + { 298, 0x0008 }, { 299, 0x0000 }, { 299, 0x0010 }, { 300, 0x0000 }, + /* 0x6300 */ + { 300, 0x0000 }, { 300, 0x1000 }, { 301, 0x0040 }, { 302, 0x1000 }, + { 303, 0x0000 }, { 303, 0x0000 }, { 303, 0x0000 }, { 303, 0x0000 }, + { 303, 0x0000 }, { 303, 0x0000 }, { 303, 0x8000 }, { 304, 0x0002 }, + { 305, 0x0000 }, { 305, 0x0000 }, { 305, 0x0000 }, { 305, 0x4000 }, + /* 0x6400 */ + { 306, 0x0000 }, { 306, 0x0004 }, { 307, 0x0084 }, { 309, 0x0000 }, + { 309, 0x0000 }, { 309, 0x0000 }, { 309, 0x0000 }, { 309, 0x2080 }, + { 311, 0x0000 }, { 311, 0x0000 }, { 311, 0x0000 }, { 311, 0x0000 }, + { 311, 0x0000 }, { 311, 0x0000 }, { 311, 0x2000 }, { 312, 0x0000 }, + /* 0x6500 */ + { 312, 0x0000 }, { 312, 0x0000 }, { 312, 0x0000 }, { 312, 0x0000 }, + { 312, 0x0000 }, { 312, 0x1000 }, { 313, 0x0200 }, { 314, 0x0000 }, + { 314, 0x8000 }, { 315, 0x2000 }, { 316, 0x0104 }, { 318, 0x0000 }, + { 318, 0x0004 }, { 319, 0x0000 }, { 319, 0x0000 }, { 319, 0x0900 }, + /* 0x6600 */ + { 321, 0x0280 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x2000 }, + { 324, 0x0000 }, { 324, 0x4000 }, { 325, 0x1084 }, { 328, 0x0008 }, + { 329, 0x6800 }, { 332, 0x0000 }, { 332, 0x0000 }, { 332, 0x0000 }, + { 332, 0x0000 }, { 332, 0x0000 }, { 332, 0x0000 }, { 332, 0x0000 }, + /* 0x6700 */ + { 332, 0x0000 }, { 332, 0x0108 }, { 334, 0x0000 }, { 334, 0x8000 }, + { 335, 0x0020 }, { 336, 0x0000 }, { 336, 0x0080 }, { 337, 0x0800 }, + { 338, 0x0000 }, { 338, 0x8200 }, { 340, 0x0000 }, { 340, 0x0000 }, + { 340, 0x0100 }, { 341, 0x0000 }, { 341, 0x4000 }, { 342, 0x0000 }, + /* 0x6800 */ + { 342, 0x0000 }, { 342, 0x8004 }, { 344, 0x0000 }, { 344, 0x0000 }, + { 344, 0x0800 }, { 345, 0x0000 }, { 345, 0x9400 }, { 348, 0x0000 }, + { 348, 0x0000 }, { 348, 0x0000 }, { 348, 0x0001 }, { 349, 0x9002 }, + { 352, 0x0002 }, { 353, 0x000b }, { 356, 0x1900 }, { 359, 0x0900 }, + /* 0x6900 */ + { 361, 0x0000 }, { 361, 0x200a }, { 364, 0x0800 }, { 365, 0x0020 }, + { 366, 0x0001 }, { 367, 0x8200 }, { 369, 0x8204 }, { 372, 0x0000 }, + { 372, 0x0008 }, { 373, 0x0040 }, { 374, 0x0000 }, { 374, 0x5000 }, + { 376, 0x0020 }, { 377, 0x1400 }, { 379, 0x0020 }, { 380, 0x4000 }, + /* 0x6a00 */ + { 381, 0x0800 }, { 382, 0x0002 }, { 383, 0x0000 }, { 383, 0x0000 }, + { 383, 0x0000 }, { 383, 0x0000 }, { 383, 0x0040 }, { 384, 0x0000 }, + { 384, 0x0000 }, { 384, 0x0040 }, { 385, 0x0000 }, { 385, 0x0030 }, + { 387, 0x0000 }, { 387, 0x0000 }, { 387, 0x0000 }, { 387, 0x0000 }, + /* 0x6b00 */ + { 387, 0x0000 }, { 387, 0x0000 }, { 387, 0x0000 }, { 387, 0x0100 }, + { 388, 0x0000 }, { 388, 0x0010 }, { 389, 0x0000 }, { 389, 0x0000 }, + { 389, 0x0000 }, { 389, 0x0020 }, { 390, 0x0008 }, { 391, 0x0000 }, + { 391, 0x0000 }, { 391, 0x0400 }, { 392, 0x0000 }, { 392, 0x0000 }, + /* 0x6c00 */ + { 392, 0x0000 }, { 392, 0x2000 }, { 393, 0x0020 }, { 394, 0xc000 }, + { 396, 0x0000 }, { 396, 0x0000 }, { 396, 0x2080 }, { 398, 0x0000 }, + { 398, 0x0090 }, { 400, 0x0540 }, { 403, 0x0100 }, { 404, 0x0020 }, + { 405, 0x0048 }, { 407, 0x1000 }, { 408, 0x0000 }, { 408, 0x0000 }, + /* 0x6d00 */ + { 408, 0x0000 }, { 408, 0x0002 }, { 409, 0x0300 }, { 411, 0x0510 }, + { 414, 0x0210 }, { 416, 0x0821 }, { 419, 0x0032 }, { 422, 0x0000 }, + { 422, 0x0000 }, { 422, 0x0000 }, { 422, 0x2004 }, { 424, 0x0010 }, + { 425, 0x0000 }, { 425, 0x0000 }, { 425, 0x0000 }, { 425, 0x0000 }, + /* 0x6e00 */ + { 425, 0x0000 }, { 425, 0x0800 }, { 426, 0x0000 }, { 426, 0x0000 }, + { 426, 0x0000 }, { 426, 0x3000 }, { 428, 0x0080 }, { 429, 0x0004 }, + { 430, 0x4082 }, { 433, 0x0400 }, { 434, 0x0041 }, { 436, 0x0020 }, + { 437, 0x0208 }, { 439, 0x0100 }, { 440, 0x0c80 }, { 443, 0x0000 }, + /* 0x6f00 */ + { 443, 0x0000 }, { 443, 0x0000 }, { 443, 0x0040 }, { 444, 0x0080 }, + { 445, 0x0000 }, { 445, 0x8040 }, { 447, 0x0000 }, { 447, 0x0020 }, + { 448, 0x0004 }, { 449, 0x0810 }, { 451, 0x0020 }, { 452, 0x1010 }, + { 454, 0x0000 }, { 454, 0x0000 }, { 454, 0x1000 }, { 455, 0x0000 }, + /* 0x7000 */ + { 455, 0x3000 }, { 457, 0x0010 }, { 458, 0x0000 }, { 458, 0x1000 }, + { 459, 0x0000 }, { 459, 0x0000 }, { 459, 0x0000 }, { 459, 0x0400 }, + { 460, 0x0000 }, { 460, 0x4100 }, { 462, 0x0000 }, { 462, 0x0000 }, + { 462, 0x0000 }, { 462, 0x3000 }, { 464, 0x0000 }, { 464, 0x0402 }, + /* 0x7100 */ + { 466, 0x1000 }, { 467, 0x1000 }, { 468, 0x4001 }, { 470, 0x0000 }, + { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, + { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, + { 470, 0x8c00 }, { 473, 0x0000 }, { 473, 0x0000 }, { 473, 0x8000 }, + /* 0x7200 */ + { 474, 0x0000 }, { 474, 0x8000 }, { 475, 0x0000 }, { 475, 0x0000 }, + { 475, 0x0006 }, { 477, 0x0400 }, { 478, 0x0008 }, { 479, 0x0080 }, + { 480, 0x0080 }, { 481, 0x0000 }, { 481, 0x0100 }, { 482, 0x0000 }, + { 482, 0x0200 }, { 483, 0x2000 }, { 484, 0x0004 }, { 485, 0x0000 }, + /* 0x7300 */ + { 485, 0x0040 }, { 486, 0x0010 }, { 487, 0x0000 }, { 487, 0x0400 }, + { 488, 0x0000 }, { 488, 0x0000 }, { 488, 0x0000 }, { 488, 0x0000 }, + { 488, 0x0000 }, { 488, 0x0630 }, { 492, 0x0061 }, { 495, 0x0002 }, + { 496, 0x0000 }, { 496, 0x0040 }, { 497, 0x4408 }, { 500, 0x2441 }, + /* 0x7400 */ + { 504, 0x4080 }, { 506, 0x0020 }, { 507, 0x8810 }, { 510, 0x0084 }, + { 512, 0x0014 }, { 514, 0x0010 }, { 515, 0x0004 }, { 516, 0x0102 }, + { 518, 0x0140 }, { 520, 0x8100 }, { 522, 0x0401 }, { 524, 0x0004 }, + { 525, 0x0000 }, { 525, 0x0100 }, { 526, 0x0000 }, { 526, 0x0800 }, + /* 0x7500 */ + { 527, 0x0008 }, { 528, 0x0000 }, { 528, 0x0442 }, { 531, 0x0000 }, + { 531, 0x0000 }, { 531, 0x0002 }, { 532, 0x9010 }, { 535, 0x0000 }, + { 535, 0x0000 }, { 535, 0x0000 }, { 535, 0x0004 }, { 536, 0x0000 }, + { 536, 0x0000 }, { 536, 0x0000 }, { 536, 0x0001 }, { 537, 0x0008 }, + /* 0x7600 */ + { 538, 0x0110 }, { 540, 0x2000 }, { 541, 0x0000 }, { 541, 0x0000 }, + { 541, 0x0000 }, { 541, 0x0004 }, { 542, 0x0000 }, { 542, 0x8040 }, + { 544, 0x0000 }, { 544, 0x4000 }, { 545, 0x0000 }, { 545, 0x0000 }, + { 545, 0x0000 }, { 545, 0x2000 }, { 546, 0x1440 }, { 549, 0x0800 }, + /* 0x7700 */ + { 550, 0x0400 }, { 551, 0x0800 }, { 552, 0x1000 }, { 553, 0x0000 }, + { 553, 0x0000 }, { 553, 0x0000 }, { 553, 0x0000 }, { 553, 0x0000 }, + { 553, 0x0840 }, { 555, 0x0000 }, { 555, 0x2800 }, { 557, 0x0000 }, + { 557, 0x0000 }, { 557, 0x4000 }, { 558, 0x0000 }, { 558, 0x1800 }, + /* 0x7800 */ + { 560, 0x0040 }, { 561, 0x0000 }, { 561, 0x0005 }, { 563, 0x0000 }, + { 563, 0x0002 }, { 564, 0x0600 }, { 566, 0x0000 }, { 566, 0x0020 }, + { 567, 0x0000 }, { 567, 0x0010 }, { 568, 0x0000 }, { 568, 0x0040 }, + { 569, 0x0000 }, { 569, 0x1000 }, { 570, 0x0002 }, { 571, 0x0000 }, + /* 0x7900 */ + { 571, 0x0008 }, { 572, 0x0000 }, { 572, 0x0000 }, { 572, 0x2008 }, + { 574, 0x4488 }, { 578, 0x0001 }, { 579, 0x0000 }, { 579, 0x1004 }, + { 581, 0x0000 }, { 581, 0x0100 }, { 582, 0x0011 }, { 584, 0x0100 }, + { 585, 0x0000 }, { 585, 0x0000 }, { 585, 0x0000 }, { 585, 0x4000 }, + /* 0x7a00 */ + { 586, 0x0000 }, { 586, 0x0040 }, { 587, 0x0000 }, { 587, 0x0000 }, + { 587, 0x0010 }, { 588, 0x4000 }, { 589, 0x0000 }, { 589, 0x0000 }, + { 589, 0x4020 }, { 591, 0x0000 }, { 591, 0x0008 }, { 592, 0x4100 }, + { 594, 0x0000 }, { 594, 0x1002 }, { 596, 0x0000 }, { 596, 0x0000 }, + /* 0x7b00 */ + { 596, 0x0000 }, { 596, 0x0000 }, { 596, 0x0000 }, { 596, 0x0000 }, + { 596, 0x4400 }, { 598, 0x1000 }, { 599, 0x0000 }, { 599, 0x8000 }, + { 600, 0x0080 }, { 601, 0x0008 }, { 602, 0x0000 }, { 602, 0x0000 }, + { 602, 0x0000 }, { 602, 0x0000 }, { 602, 0x8000 }, { 603, 0x0005 }, + /* 0x7c00 */ + { 605, 0x0208 }, { 607, 0x0020 }, { 608, 0x0001 }, { 609, 0x0001 }, + { 610, 0x0000 }, { 610, 0x2001 }, { 612, 0x0000 }, { 612, 0x0000 }, + { 612, 0x0000 }, { 612, 0x0000 }, { 612, 0x1040 }, { 614, 0x0000 }, + { 614, 0x0000 }, { 614, 0x0000 }, { 614, 0x0000 }, { 614, 0x0020 }, +}; +static const Summary16 isoir165ext_uni2indx_page7e[333] = { + /* 0x7e00 */ + { 615, 0x0000 }, { 615, 0x0000 }, { 615, 0x0000 }, { 615, 0x0000 }, + { 615, 0x0010 }, { 616, 0x0000 }, { 616, 0x0000 }, { 616, 0x0000 }, + { 616, 0x0000 }, { 616, 0x0000 }, { 616, 0x4000 }, { 617, 0x1810 }, + { 620, 0x0000 }, { 620, 0x0040 }, { 621, 0x1010 }, { 623, 0x0200 }, + /* 0x7f00 */ + { 624, 0x0400 }, { 625, 0x4001 }, { 627, 0x0000 }, { 627, 0x0000 }, + { 627, 0x2000 }, { 628, 0x0000 }, { 628, 0x0000 }, { 628, 0x2000 }, + { 629, 0x0000 }, { 629, 0x0002 }, { 630, 0x0000 }, { 630, 0x0000 }, + { 630, 0x0001 }, { 631, 0x0600 }, { 633, 0x8000 }, { 634, 0x0000 }, + /* 0x8000 */ + { 634, 0x0000 }, { 634, 0x0000 }, { 634, 0x0000 }, { 634, 0x0001 }, + { 635, 0x0000 }, { 635, 0x0000 }, { 635, 0x0000 }, { 635, 0x0000 }, + { 635, 0x0000 }, { 635, 0x0000 }, { 635, 0x0000 }, { 635, 0x0000 }, + { 635, 0x0000 }, { 635, 0x0010 }, { 636, 0x0000 }, { 636, 0x4000 }, + /* 0x8100 */ + { 637, 0x0000 }, { 637, 0x0000 }, { 637, 0x0200 }, { 638, 0x8000 }, + { 639, 0x0000 }, { 639, 0x0104 }, { 641, 0x0000 }, { 641, 0x0000 }, + { 641, 0x0000 }, { 641, 0x0000 }, { 641, 0x0000 }, { 641, 0x0000 }, + { 641, 0x0000 }, { 641, 0x0002 }, { 642, 0x0000 }, { 642, 0x0000 }, + /* 0x8200 */ + { 642, 0x0000 }, { 642, 0x0140 }, { 644, 0x0000 }, { 644, 0x0400 }, + { 645, 0x0000 }, { 645, 0x0000 }, { 645, 0x0000 }, { 645, 0x0100 }, + { 646, 0x0008 }, { 647, 0x0000 }, { 647, 0x0080 }, { 648, 0x1000 }, + { 649, 0x0000 }, { 649, 0x0000 }, { 649, 0x0000 }, { 649, 0x4000 }, + /* 0x8300 */ + { 650, 0x0001 }, { 651, 0x2008 }, { 653, 0x0000 }, { 653, 0x0000 }, + { 653, 0x0030 }, { 655, 0x2000 }, { 656, 0x0000 }, { 656, 0x0000 }, + { 656, 0x0000 }, { 656, 0x0200 }, { 657, 0x0040 }, { 658, 0x0000 }, + { 658, 0x0000 }, { 658, 0x0002 }, { 659, 0x0000 }, { 659, 0x5000 }, + /* 0x8400 */ + { 661, 0x0000 }, { 661, 0x0400 }, { 662, 0x0200 }, { 663, 0x0200 }, + { 664, 0x0000 }, { 664, 0x0008 }, { 665, 0x0001 }, { 666, 0x0000 }, + { 666, 0x0000 }, { 666, 0xc000 }, { 668, 0x0100 }, { 669, 0x0000 }, + { 669, 0x8044 }, { 672, 0x0000 }, { 672, 0x0400 }, { 673, 0x0080 }, + /* 0x8500 */ + { 674, 0x0000 }, { 674, 0x0000 }, { 674, 0x0000 }, { 674, 0x0010 }, + { 675, 0x0000 }, { 675, 0x0000 }, { 675, 0x0000 }, { 675, 0x0001 }, + { 676, 0x0000 }, { 676, 0x0000 }, { 676, 0x0004 }, { 677, 0x0108 }, + { 679, 0x0000 }, { 679, 0x0000 }, { 679, 0x0001 }, { 680, 0x0000 }, + /* 0x8600 */ + { 680, 0x0000 }, { 680, 0x0000 }, { 680, 0x0000 }, { 680, 0x0000 }, + { 680, 0x0000 }, { 680, 0x0004 }, { 681, 0x0000 }, { 681, 0x0000 }, + { 681, 0x0008 }, { 682, 0x0000 }, { 682, 0x0000 }, { 682, 0x0000 }, + { 682, 0x0000 }, { 682, 0x0000 }, { 682, 0x0000 }, { 682, 0x0000 }, + /* 0x8700 */ + { 682, 0x4020 }, { 684, 0x0000 }, { 684, 0x0000 }, { 684, 0x0000 }, + { 684, 0x0000 }, { 684, 0x0100 }, { 685, 0x0000 }, { 685, 0x0000 }, + { 685, 0x0001 }, { 686, 0x0000 }, { 686, 0x0008 }, { 687, 0x0000 }, + { 687, 0x8000 }, { 688, 0x0000 }, { 688, 0x0004 }, { 689, 0x0000 }, + /* 0x8800 */ + { 689, 0x0800 }, { 690, 0x0000 }, { 690, 0x2000 }, { 691, 0x0000 }, + { 691, 0x0000 }, { 691, 0x0004 }, { 692, 0x0000 }, { 692, 0x0000 }, + { 692, 0x0040 }, { 693, 0x0080 }, { 694, 0x8400 }, { 696, 0x0000 }, + { 696, 0x0101 }, { 698, 0x0000 }, { 698, 0x0000 }, { 698, 0x0000 }, + /* 0x8900 */ + { 698, 0x0000 }, { 698, 0x0000 }, { 698, 0x0040 }, { 699, 0x0000 }, + { 699, 0x0000 }, { 699, 0x0020 }, { 700, 0x0000 }, { 700, 0x0040 }, + { 701, 0x0001 }, { 702, 0x0000 }, { 702, 0x0000 }, { 702, 0x0000 }, + { 702, 0x2008 }, { 704, 0x0010 }, { 705, 0x0000 }, { 705, 0x0002 }, + /* 0x8a00 */ + { 706, 0x0000 }, { 706, 0x0400 }, { 707, 0x0000 }, { 707, 0x0000 }, + { 707, 0x0000 }, { 707, 0x8000 }, { 708, 0x0000 }, { 708, 0x0000 }, + { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, + { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, + /* 0x8b00 */ + { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, + { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, + { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x1000 }, { 709, 0x0802 }, + { 711, 0x0080 }, { 712, 0x0000 }, { 712, 0x0400 }, { 713, 0x0000 }, + /* 0x8c00 */ + { 713, 0x0200 }, { 714, 0x4000 }, { 715, 0x0000 }, { 715, 0x0000 }, + { 715, 0x0000 }, { 715, 0x0000 }, { 715, 0x6100 }, { 718, 0x0000 }, + { 718, 0x0040 }, { 719, 0x0000 }, { 719, 0x0000 }, { 719, 0x0000 }, + { 719, 0x0000 }, { 719, 0x0000 }, { 719, 0x0000 }, { 719, 0x0000 }, + /* 0x8d00 */ + { 719, 0x0000 }, { 719, 0x0000 }, { 719, 0x0001 }, { 720, 0x0000 }, + { 720, 0x0000 }, { 720, 0x8086 }, { 724, 0x0400 }, { 725, 0x0000 }, + { 725, 0x0000 }, { 725, 0x0000 }, { 725, 0x0000 }, { 725, 0x0000 }, + { 725, 0x0000 }, { 725, 0x0000 }, { 725, 0x0000 }, { 725, 0x0000 }, + /* 0x8e00 */ + { 725, 0x0000 }, { 725, 0x0040 }, { 726, 0x00c2 }, { 729, 0x0040 }, + { 730, 0x0020 }, { 731, 0x1009 }, { 734, 0x0004 }, { 735, 0x0000 }, + { 735, 0x0000 }, { 735, 0x0000 }, { 735, 0x2000 }, { 736, 0x0000 }, + { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, + /* 0x8f00 */ + { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, + { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, + { 736, 0x0001 }, { 737, 0x0004 }, { 738, 0x0000 }, { 738, 0x0020 }, + { 739, 0x0000 }, { 739, 0x0000 }, { 739, 0x0000 }, { 739, 0x0400 }, + /* 0x9000 */ + { 740, 0x0000 }, { 740, 0x0000 }, { 740, 0x0000 }, { 740, 0x0000 }, + { 740, 0x0000 }, { 740, 0x0000 }, { 740, 0x0000 }, { 740, 0x0000 }, + { 740, 0x0000 }, { 740, 0x0100 }, { 741, 0x0101 }, { 743, 0x2000 }, + { 744, 0x0108 }, { 746, 0x0400 }, { 747, 0x0010 }, { 748, 0x8000 }, + /* 0x9100 */ + { 749, 0x1000 }, { 750, 0x1500 }, { 753, 0x0001 }, { 754, 0x0000 }, + { 754, 0x0004 }, { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x0000 }, + { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x0000 }, + { 755, 0x0040 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, + /* 0x9200 */ + { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, + { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, + { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, + { 756, 0x0040 }, +}; +static const Summary16 isoir165ext_uni2indx_page94[143] = { + /* 0x9400 */ + { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x0000 }, + { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x0000 }, + { 757, 0x0000 }, { 757, 0x0142 }, { 760, 0x0000 }, { 760, 0x0000 }, + { 760, 0x8080 }, { 762, 0x0418 }, { 765, 0x0040 }, { 766, 0x0800 }, + /* 0x9500 */ + { 767, 0x0000 }, { 767, 0x1000 }, { 768, 0x0081 }, { 770, 0x2008 }, + { 772, 0x0008 }, { 773, 0x0400 }, { 774, 0x4001 }, { 776, 0x0030 }, + { 778, 0x0000 }, { 778, 0x0000 }, { 778, 0x0000 }, { 778, 0x0000 }, + { 778, 0x0000 }, { 778, 0x0000 }, { 778, 0x1000 }, { 779, 0x8000 }, + /* 0x9600 */ + { 780, 0x0080 }, { 781, 0x0908 }, { 784, 0x0000 }, { 784, 0x0000 }, + { 784, 0x0000 }, { 784, 0x4000 }, { 785, 0x0000 }, { 785, 0x0000 }, + { 785, 0x0000 }, { 785, 0x0000 }, { 785, 0x0000 }, { 785, 0x0000 }, + { 785, 0x0000 }, { 785, 0x0100 }, { 786, 0x0000 }, { 786, 0x0000 }, + /* 0x9700 */ + { 786, 0x0004 }, { 787, 0x0000 }, { 787, 0x0000 }, { 787, 0x0000 }, + { 787, 0x0000 }, { 787, 0x0010 }, { 788, 0x0000 }, { 788, 0x0501 }, + { 791, 0x0000 }, { 791, 0x0000 }, { 791, 0x4102 }, { 794, 0x0000 }, + { 794, 0x0000 }, { 794, 0x0000 }, { 794, 0x0100 }, { 795, 0x0000 }, + /* 0x9800 */ + { 795, 0x0000 }, { 795, 0x0000 }, { 795, 0x0000 }, { 795, 0x0000 }, + { 795, 0x0000 }, { 795, 0x0000 }, { 795, 0x0000 }, { 795, 0x0000 }, + { 795, 0x4800 }, { 797, 0x0224 }, { 800, 0x0008 }, { 801, 0x0000 }, + { 801, 0x8000 }, { 802, 0x00d1 }, { 806, 0x0000 }, { 806, 0x0000 }, + /* 0x9900 */ + { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, + { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0050 }, { 808, 0x4b00 }, + { 812, 0x500c }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, + { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, + /* 0x9a00 */ + { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, + { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0004 }, + { 817, 0x6208 }, { 821, 0x0230 }, { 824, 0x0040 }, { 825, 0x0000 }, + { 825, 0x0000 }, { 825, 0x0000 }, { 825, 0x0000 }, { 825, 0x0000 }, + /* 0x9b00 */ + { 825, 0x0000 }, { 825, 0x0101 }, { 827, 0x0020 }, { 828, 0x0040 }, + { 829, 0x0040 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, + { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, + { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, + /* 0x9c00 */ + { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, + { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, + { 830, 0x0411 }, { 833, 0x23c8 }, { 839, 0x0000 }, { 839, 0x8000 }, + { 840, 0x0003 }, { 842, 0x0804 }, { 844, 0x0009 }, +}; +static const Summary16 isoir165ext_uni2indx_page9e[25] = { + /* 0x9e00 */ + { 846, 0x0000 }, { 846, 0x0000 }, { 846, 0x4090 }, { 849, 0x0011 }, + { 851, 0x2001 }, { 853, 0x225d }, { 860, 0x8027 }, { 865, 0x0010 }, + { 866, 0x0001 }, { 867, 0x0002 }, { 868, 0x0000 }, { 868, 0x0000 }, + { 868, 0x0000 }, { 868, 0x0000 }, { 868, 0x0002 }, { 869, 0x0000 }, + /* 0x9f00 */ + { 869, 0x1000 }, { 870, 0x0004 }, { 871, 0x0800 }, { 872, 0x0000 }, + { 872, 0x0002 }, { 873, 0x0000 }, { 873, 0x0000 }, { 873, 0x0000 }, + { 873, 0x0006 }, +}; +static const Summary16 isoir165ext_uni2indx_pageff[5] = { + /* 0xff00 */ + { 875, 0x0000 }, { 875, 0x0000 }, { 875, 0x0000 }, { 875, 0x0000 }, + { 875, 0x0080 }, +}; + +static int +isoir165ext_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + if (n >= 2) { + const Summary16 *summary = NULL; + if (wc >= 0x0000 && wc < 0x0200) + summary = &isoir165ext_uni2indx_page00[(wc>>4)]; + else if (wc >= 0x0300 && wc < 0x03c0) + summary = &isoir165ext_uni2indx_page03[(wc>>4)-0x030]; + else if (wc >= 0x1e00 && wc < 0x1fc0) + summary = &isoir165ext_uni2indx_page1e[(wc>>4)-0x1e0]; + else if (wc >= 0x3000 && wc < 0x3040) + summary = &isoir165ext_uni2indx_page30[(wc>>4)-0x300]; + else if (wc >= 0x3200 && wc < 0x3400) + summary = &isoir165ext_uni2indx_page32[(wc>>4)-0x320]; + else if (wc >= 0x4e00 && wc < 0x7d00) + summary = &isoir165ext_uni2indx_page4e[(wc>>4)-0x4e0]; + else if (wc >= 0x7e00 && wc < 0x92d0) + summary = &isoir165ext_uni2indx_page7e[(wc>>4)-0x7e0]; + else if (wc >= 0x9400 && wc < 0x9cf0) + summary = &isoir165ext_uni2indx_page94[(wc>>4)-0x940]; + else if (wc >= 0x9e00 && wc < 0x9f90) + summary = &isoir165ext_uni2indx_page9e[(wc>>4)-0x9e0]; + else if (wc >= 0xff00 && wc < 0xff50) + summary = &isoir165ext_uni2indx_pageff[(wc>>4)-0xff0]; + if (summary) { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short) 1 << i)) { + unsigned short c; + /* Keep in `used' only the bits 0..i-1. */ + used &= ((unsigned short) 1 << i) - 1; + /* Add `summary->indx' and the number of bits set in `used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = isoir165ext_2charset[summary->indx + used]; + r[0] = (c >> 8); r[1] = (c & 0xff); + return 2; + } + } + return RET_ILSEQ; + } + return RET_TOOSMALL; +} diff --git a/libiconv/johab.h b/libiconv/johab.h index fe4d5c5..04891f2 100644 --- a/libiconv/johab.h +++ b/libiconv/johab.h @@ -48,12 +48,17 @@ johab_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) return RET_TOOFEW(0); s2 = s[1]; if ((s2 >= 0x31 && s2 <= 0x7e) || (s2 >= 0x91 && s2 <= 0xfe)) { - unsigned char t1 = (s1 < 0xe0 ? 2*(s1-0xd9) : 2*s1-0x197); - unsigned char t2 = (s2 < 0x91 ? s2-0x31 : s2-0x43); - unsigned char buf[2]; - buf[0] = t1 + (t2 < 0x5e ? 0 : 1) + 0x21; - buf[1] = (t2 < 0x5e ? t2 : t2-0x5e) + 0x21; - return ksc5601_mbtowc(conv,pwc,buf,2); + /* In KSC 5601, the region s1 = 0xDA, 0xA1 <= s2 <= 0xD3 contains + the 51 Jamo (Hangul letters). But in the Johab encoding, they + have been moved to the Hangul section, see johab_hangul_page31. */ + if (!(s1 == 0xda && (s2 >= 0xa1 && s2 <= 0xd3))) { + unsigned char t1 = (s1 < 0xe0 ? 2*(s1-0xd9) : 2*s1-0x197); + unsigned char t2 = (s2 < 0x91 ? s2-0x31 : s2-0x43); + unsigned char buf[2]; + buf[0] = t1 + (t2 < 0x5e ? 0 : 1) + 0x21; + buf[1] = (t2 < 0x5e ? t2 : t2-0x5e) + 0x21; + return ksc5601_mbtowc(conv,pwc,buf,2); + } } } return RET_ILSEQ; diff --git a/libiconv/johab_decomp.h b/libiconv/johab_decomp.h deleted file mode 100644 index 0a45635..0000000 --- a/libiconv/johab_decomp.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Decomposition of JOHAB Hangul in one to three Johab Jamo elements. - * - * See Ken Lunde's "CJKV Information Processing", p. 181-184. - */ - -/* Note that Jamo XX = UHC 0xA4A0+XX = Unicode 0x3130+XX */ -#define NONE 0xfd -#define FILL 0xff -static unsigned char jamo_initial[32] = { - NONE, FILL, 0x01, 0x02, 0x04, 0x07, 0x08, 0x09, - 0x11, 0x12, 0x13, 0x15, 0x16, 0x17, 0x18, 0x19, - 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, NONE, NONE, NONE, - NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, -}; -static unsigned char jamo_medial[32] = { - NONE, NONE, FILL, 0x1f, 0x20, 0x21, 0x22, 0x23, - NONE, NONE, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, - NONE, NONE, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, - NONE, NONE, 0x30, 0x31, 0x32, 0x33, NONE, NONE, -}; -static unsigned char jamo_final[32] = { - NONE, FILL, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, - 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, NONE, 0x12, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, NONE, NONE, -}; - -/* Decompose wc into r[0..2], and return the number of resulting Jamo elements. - Return RET_ILSEQ if decomposition is not possible. */ - -static int johab_hangul_decompose (conv_t conv, unsigned char* r, wchar_t wc) -{ - unsigned char buf[2]; - int ret = johab_hangul_wctomb(conv,buf,wc,2); - if (ret != RET_ILSEQ) { - unsigned int hangul = (buf[0] << 8) | buf[1]; - unsigned char jamo1 = jamo_initial[(hangul >> 10) & 31]; - unsigned char jamo2 = jamo_medial[(hangul >> 5) & 31]; - unsigned char jamo3 = jamo_final[hangul & 31]; - if ((hangul >> 15) != 1) abort(); - if (jamo1 != NONE && jamo2 != NONE && jamo3 != NONE) { - /* They are not all three == FILL because that would correspond to - hangul = 0x8441, but that is unmapped in the johab_hangul table. */ - unsigned char* p = r; - if (jamo1 != FILL) - *p++ = jamo1; - if (jamo2 != FILL) - *p++ = jamo2; - if (jamo3 != FILL) - *p++ = jamo3; - return p-r; - } - } - return RET_ILSEQ; -} - -#undef FILL -#undef NONE diff --git a/libiconv/johab_hangul.h b/libiconv/johab_hangul.h index ec73be5..96b25ee 100644 --- a/libiconv/johab_hangul.h +++ b/libiconv/johab_hangul.h @@ -1,2001 +1,85 @@ /* * JOHAB Hangul + * + * Ken Lunde writes in his "CJKV Information Processing" book, p. 114: + * "Hangul can be composed of two or three jamo (some jamo are considered + * compound). Johab uses 19 initial jamo (consonants), 21 medial jamo (vowels) + * and 27 final jamo (consonants; 28 when you include the "fill" character + * for Hangul containing only two jamo). Multiplying these numbers results in + * 11172." + * + * Structure of the Johab encoding (see p. 181-184): + * bit 15 = 1 + * bit 14..10 = initial jamo, only 19+1 out of 32 possible values are used + * bit 9..5 = medial jamo, only 21+1 out of 32 possible values are used + * bit 4..0 = final jamo, only 27+1 out of 32 possible values are used + * + * Structure of the Unicode encoding: + * grep '^0x\([8-C]...\|D[0-7]..\)' unicode.org-mappings/EASTASIA/KSC/JOHAB.TXT + * You see that all characters there are marked "HANGUL LETTER" or "HANGUL + * SYLLABLE". If you eliminate the "HANGUL LETTER"s, the table is sorted + * in ascending order according to Johab encoding and according to the Unicode + * encoding. Now look a little more carefully, and you see that the following + * formula holds: + * unicode == 0xAC00 + * + 21 * 28 * (jamo_initial_index[(johab >> 10) & 31] - 1) + * + 28 * (jamo_medial_index[(johab >> 5) & 31] - 1) + * + jamo_final_index[johab & 31] + * where the index tables are defined as below. */ -static const unsigned short johab_hangul_2uni_page84[14975] = { - /* 0x84 */ - 0xfffd, 0xfffd, 0xfffd, 0x3133, 0xfffd, 0x3135, 0x3136, 0xfffd, - 0xfffd, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140, - 0xfffd, 0xfffd, 0xfffd, 0x3144, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0x314f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3150, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3151, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3152, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3153, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0x85 */ - 0x3154, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0x3155, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3156, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3157, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3158, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3159, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0x86 */ - 0x315a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0x315b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x315c, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x315d, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x315e, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x315f, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0x87 */ - 0x3160, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0x3161, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3162, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3163, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0x88 */ - 0x3131, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xac00, 0xac01, 0xac02, 0xac03, 0xac04, 0xac05, 0xac06, 0xac07, - 0xac08, 0xac09, 0xac0a, 0xac0b, 0xac0c, 0xac0d, 0xac0e, 0xac0f, - 0xac10, 0xfffd, 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, - 0xac17, 0xac18, 0xac19, 0xac1a, 0xac1b, 0xfffd, 0xac1c, 0xac1d, - 0xac1e, 0xac1f, 0xac20, 0xac21, 0xac22, 0xac23, 0xac24, 0xac25, - 0xac26, 0xac27, 0xac28, 0xac29, 0xac2a, 0xac2b, 0xac2c, 0xfffd, - 0xac2d, 0xac2e, 0xac2f, 0xac30, 0xac31, 0xac32, 0xac33, 0xac34, - 0xac35, 0xac36, 0xac37, 0xfffd, 0xfffd, 0xfffd, 0xac38, 0xac39, - 0xac3a, 0xac3b, 0xac3c, 0xac3d, 0xac3e, 0xac3f, 0xac40, 0xac41, - 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47, 0xac48, 0xfffd, - 0xac49, 0xac4a, 0xac4b, 0xac4c, 0xac4d, 0xac4e, 0xac4f, 0xac50, - 0xac51, 0xac52, 0xac53, 0xfffd, 0xfffd, 0xfffd, 0xac54, 0xac55, - 0xac56, 0xac57, 0xac58, 0xac59, 0xac5a, 0xac5b, 0xac5c, 0xac5d, - 0xac5e, 0xac5f, 0xac60, 0xac61, 0xac62, 0xac63, 0xac64, 0xfffd, - 0xac65, 0xac66, 0xac67, 0xac68, 0xac69, 0xac6a, 0xac6b, 0xac6c, - 0xac6d, 0xac6e, 0xac6f, 0xfffd, 0xfffd, 0xfffd, 0xac70, 0xac71, - 0xac72, 0xac73, 0xac74, 0xac75, 0xac76, 0xac77, 0xac78, 0xac79, - 0xac7a, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac7f, 0xac80, 0xfffd, - 0xac81, 0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xac87, 0xac88, - 0xac89, 0xac8a, 0xac8b, 0xfffd, - /* 0x89 */ - 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90, 0xac91, 0xac92, 0xac93, - 0xac94, 0xac95, 0xac96, 0xac97, 0xac98, 0xac99, 0xac9a, 0xac9b, - 0xac9c, 0xfffd, 0xac9d, 0xac9e, 0xac9f, 0xaca0, 0xaca1, 0xaca2, - 0xaca3, 0xaca4, 0xaca5, 0xaca6, 0xaca7, 0xfffd, 0xfffd, 0xfffd, - 0xaca8, 0xaca9, 0xacaa, 0xacab, 0xacac, 0xacad, 0xacae, 0xacaf, - 0xacb0, 0xacb1, 0xacb2, 0xacb3, 0xacb4, 0xacb5, 0xacb6, 0xacb7, - 0xacb8, 0xfffd, 0xacb9, 0xacba, 0xacbb, 0xacbc, 0xacbd, 0xacbe, - 0xacbf, 0xacc0, 0xacc1, 0xacc2, 0xacc3, 0xfffd, 0xacc4, 0xacc5, - 0xacc6, 0xacc7, 0xacc8, 0xacc9, 0xacca, 0xaccb, 0xaccc, 0xaccd, - 0xacce, 0xaccf, 0xacd0, 0xacd1, 0xacd2, 0xacd3, 0xacd4, 0xfffd, - 0xacd5, 0xacd6, 0xacd7, 0xacd8, 0xacd9, 0xacda, 0xacdb, 0xacdc, - 0xacdd, 0xacde, 0xacdf, 0xfffd, 0xfffd, 0xfffd, 0xace0, 0xace1, - 0xace2, 0xace3, 0xace4, 0xace5, 0xace6, 0xace7, 0xace8, 0xace9, - 0xacea, 0xaceb, 0xacec, 0xaced, 0xacee, 0xacef, 0xacf0, 0xfffd, - 0xacf1, 0xacf2, 0xacf3, 0xacf4, 0xacf5, 0xacf6, 0xacf7, 0xacf8, - 0xacf9, 0xacfa, 0xacfb, 0xfffd, 0xfffd, 0xfffd, 0xacfc, 0xacfd, - 0xacfe, 0xacff, 0xad00, 0xad01, 0xad02, 0xad03, 0xad04, 0xad05, - 0xad06, 0xad07, 0xad08, 0xad09, 0xad0a, 0xad0b, 0xad0c, 0xfffd, - 0xad0d, 0xad0e, 0xad0f, 0xad10, 0xad11, 0xad12, 0xad13, 0xad14, - 0xad15, 0xad16, 0xad17, 0xfffd, 0xfffd, 0xfffd, 0xad18, 0xad19, - 0xad1a, 0xad1b, 0xad1c, 0xad1d, 0xad1e, 0xad1f, 0xad20, 0xad21, - 0xad22, 0xad23, 0xad24, 0xad25, 0xad26, 0xad27, 0xad28, 0xfffd, - 0xad29, 0xad2a, 0xad2b, 0xad2c, 0xad2d, 0xad2e, 0xad2f, 0xad30, - 0xad31, 0xad32, 0xad33, 0xfffd, - /* 0x8a */ - 0xad34, 0xad35, 0xad36, 0xad37, 0xad38, 0xad39, 0xad3a, 0xad3b, - 0xad3c, 0xad3d, 0xad3e, 0xad3f, 0xad40, 0xad41, 0xad42, 0xad43, - 0xad44, 0xfffd, 0xad45, 0xad46, 0xad47, 0xad48, 0xad49, 0xad4a, - 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, 0xfffd, 0xfffd, 0xfffd, - 0xad50, 0xad51, 0xad52, 0xad53, 0xad54, 0xad55, 0xad56, 0xad57, - 0xad58, 0xad59, 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f, - 0xad60, 0xfffd, 0xad61, 0xad62, 0xad63, 0xad64, 0xad65, 0xad66, - 0xad67, 0xad68, 0xad69, 0xad6a, 0xad6b, 0xfffd, 0xad6c, 0xad6d, - 0xad6e, 0xad6f, 0xad70, 0xad71, 0xad72, 0xad73, 0xad74, 0xad75, - 0xad76, 0xad77, 0xad78, 0xad79, 0xad7a, 0xad7b, 0xad7c, 0xfffd, - 0xad7d, 0xad7e, 0xad7f, 0xad80, 0xad81, 0xad82, 0xad83, 0xad84, - 0xad85, 0xad86, 0xad87, 0xfffd, 0xfffd, 0xfffd, 0xad88, 0xad89, - 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e, 0xad8f, 0xad90, 0xad91, - 0xad92, 0xad93, 0xad94, 0xad95, 0xad96, 0xad97, 0xad98, 0xfffd, - 0xad99, 0xad9a, 0xad9b, 0xad9c, 0xad9d, 0xad9e, 0xad9f, 0xada0, - 0xada1, 0xada2, 0xada3, 0xfffd, 0xfffd, 0xfffd, 0xada4, 0xada5, - 0xada6, 0xada7, 0xada8, 0xada9, 0xadaa, 0xadab, 0xadac, 0xadad, - 0xadae, 0xadaf, 0xadb0, 0xadb1, 0xadb2, 0xadb3, 0xadb4, 0xfffd, - 0xadb5, 0xadb6, 0xadb7, 0xadb8, 0xadb9, 0xadba, 0xadbb, 0xadbc, - 0xadbd, 0xadbe, 0xadbf, 0xfffd, 0xfffd, 0xfffd, 0xadc0, 0xadc1, - 0xadc2, 0xadc3, 0xadc4, 0xadc5, 0xadc6, 0xadc7, 0xadc8, 0xadc9, - 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce, 0xadcf, 0xadd0, 0xfffd, - 0xadd1, 0xadd2, 0xadd3, 0xadd4, 0xadd5, 0xadd6, 0xadd7, 0xadd8, - 0xadd9, 0xadda, 0xaddb, 0xfffd, - /* 0x8b */ - 0xaddc, 0xaddd, 0xadde, 0xaddf, 0xade0, 0xade1, 0xade2, 0xade3, - 0xade4, 0xade5, 0xade6, 0xade7, 0xade8, 0xade9, 0xadea, 0xadeb, - 0xadec, 0xfffd, 0xaded, 0xadee, 0xadef, 0xadf0, 0xadf1, 0xadf2, - 0xadf3, 0xadf4, 0xadf5, 0xadf6, 0xadf7, 0xfffd, 0xfffd, 0xfffd, - 0xadf8, 0xadf9, 0xadfa, 0xadfb, 0xadfc, 0xadfd, 0xadfe, 0xadff, - 0xae00, 0xae01, 0xae02, 0xae03, 0xae04, 0xae05, 0xae06, 0xae07, - 0xae08, 0xfffd, 0xae09, 0xae0a, 0xae0b, 0xae0c, 0xae0d, 0xae0e, - 0xae0f, 0xae10, 0xae11, 0xae12, 0xae13, 0xfffd, 0xae14, 0xae15, - 0xae16, 0xae17, 0xae18, 0xae19, 0xae1a, 0xae1b, 0xae1c, 0xae1d, - 0xae1e, 0xae1f, 0xae20, 0xae21, 0xae22, 0xae23, 0xae24, 0xfffd, - 0xae25, 0xae26, 0xae27, 0xae28, 0xae29, 0xae2a, 0xae2b, 0xae2c, - 0xae2d, 0xae2e, 0xae2f, 0xfffd, 0xfffd, 0xfffd, 0xae30, 0xae31, - 0xae32, 0xae33, 0xae34, 0xae35, 0xae36, 0xae37, 0xae38, 0xae39, - 0xae3a, 0xae3b, 0xae3c, 0xae3d, 0xae3e, 0xae3f, 0xae40, 0xfffd, - 0xae41, 0xae42, 0xae43, 0xae44, 0xae45, 0xae46, 0xae47, 0xae48, - 0xae49, 0xae4a, 0xae4b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0x8c */ - 0x3132, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xae4c, 0xae4d, 0xae4e, 0xae4f, 0xae50, 0xae51, 0xae52, 0xae53, - 0xae54, 0xae55, 0xae56, 0xae57, 0xae58, 0xae59, 0xae5a, 0xae5b, - 0xae5c, 0xfffd, 0xae5d, 0xae5e, 0xae5f, 0xae60, 0xae61, 0xae62, - 0xae63, 0xae64, 0xae65, 0xae66, 0xae67, 0xfffd, 0xae68, 0xae69, - 0xae6a, 0xae6b, 0xae6c, 0xae6d, 0xae6e, 0xae6f, 0xae70, 0xae71, - 0xae72, 0xae73, 0xae74, 0xae75, 0xae76, 0xae77, 0xae78, 0xfffd, - 0xae79, 0xae7a, 0xae7b, 0xae7c, 0xae7d, 0xae7e, 0xae7f, 0xae80, - 0xae81, 0xae82, 0xae83, 0xfffd, 0xfffd, 0xfffd, 0xae84, 0xae85, - 0xae86, 0xae87, 0xae88, 0xae89, 0xae8a, 0xae8b, 0xae8c, 0xae8d, - 0xae8e, 0xae8f, 0xae90, 0xae91, 0xae92, 0xae93, 0xae94, 0xfffd, - 0xae95, 0xae96, 0xae97, 0xae98, 0xae99, 0xae9a, 0xae9b, 0xae9c, - 0xae9d, 0xae9e, 0xae9f, 0xfffd, 0xfffd, 0xfffd, 0xaea0, 0xaea1, - 0xaea2, 0xaea3, 0xaea4, 0xaea5, 0xaea6, 0xaea7, 0xaea8, 0xaea9, - 0xaeaa, 0xaeab, 0xaeac, 0xaead, 0xaeae, 0xaeaf, 0xaeb0, 0xfffd, - 0xaeb1, 0xaeb2, 0xaeb3, 0xaeb4, 0xaeb5, 0xaeb6, 0xaeb7, 0xaeb8, - 0xaeb9, 0xaeba, 0xaebb, 0xfffd, 0xfffd, 0xfffd, 0xaebc, 0xaebd, - 0xaebe, 0xaebf, 0xaec0, 0xaec1, 0xaec2, 0xaec3, 0xaec4, 0xaec5, - 0xaec6, 0xaec7, 0xaec8, 0xaec9, 0xaeca, 0xaecb, 0xaecc, 0xfffd, - 0xaecd, 0xaece, 0xaecf, 0xaed0, 0xaed1, 0xaed2, 0xaed3, 0xaed4, - 0xaed5, 0xaed6, 0xaed7, 0xfffd, - /* 0x8d */ - 0xaed8, 0xaed9, 0xaeda, 0xaedb, 0xaedc, 0xaedd, 0xaede, 0xaedf, - 0xaee0, 0xaee1, 0xaee2, 0xaee3, 0xaee4, 0xaee5, 0xaee6, 0xaee7, - 0xaee8, 0xfffd, 0xaee9, 0xaeea, 0xaeeb, 0xaeec, 0xaeed, 0xaeee, - 0xaeef, 0xaef0, 0xaef1, 0xaef2, 0xaef3, 0xfffd, 0xfffd, 0xfffd, - 0xaef4, 0xaef5, 0xaef6, 0xaef7, 0xaef8, 0xaef9, 0xaefa, 0xaefb, - 0xaefc, 0xaefd, 0xaefe, 0xaeff, 0xaf00, 0xaf01, 0xaf02, 0xaf03, - 0xaf04, 0xfffd, 0xaf05, 0xaf06, 0xaf07, 0xaf08, 0xaf09, 0xaf0a, - 0xaf0b, 0xaf0c, 0xaf0d, 0xaf0e, 0xaf0f, 0xfffd, 0xaf10, 0xaf11, - 0xaf12, 0xaf13, 0xaf14, 0xaf15, 0xaf16, 0xaf17, 0xaf18, 0xaf19, - 0xaf1a, 0xaf1b, 0xaf1c, 0xaf1d, 0xaf1e, 0xaf1f, 0xaf20, 0xfffd, - 0xaf21, 0xaf22, 0xaf23, 0xaf24, 0xaf25, 0xaf26, 0xaf27, 0xaf28, - 0xaf29, 0xaf2a, 0xaf2b, 0xfffd, 0xfffd, 0xfffd, 0xaf2c, 0xaf2d, - 0xaf2e, 0xaf2f, 0xaf30, 0xaf31, 0xaf32, 0xaf33, 0xaf34, 0xaf35, - 0xaf36, 0xaf37, 0xaf38, 0xaf39, 0xaf3a, 0xaf3b, 0xaf3c, 0xfffd, - 0xaf3d, 0xaf3e, 0xaf3f, 0xaf40, 0xaf41, 0xaf42, 0xaf43, 0xaf44, - 0xaf45, 0xaf46, 0xaf47, 0xfffd, 0xfffd, 0xfffd, 0xaf48, 0xaf49, - 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, 0xaf4e, 0xaf4f, 0xaf50, 0xaf51, - 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57, 0xaf58, 0xfffd, - 0xaf59, 0xaf5a, 0xaf5b, 0xaf5c, 0xaf5d, 0xaf5e, 0xaf5f, 0xaf60, - 0xaf61, 0xaf62, 0xaf63, 0xfffd, 0xfffd, 0xfffd, 0xaf64, 0xaf65, - 0xaf66, 0xaf67, 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c, 0xaf6d, - 0xaf6e, 0xaf6f, 0xaf70, 0xaf71, 0xaf72, 0xaf73, 0xaf74, 0xfffd, - 0xaf75, 0xaf76, 0xaf77, 0xaf78, 0xaf79, 0xaf7a, 0xaf7b, 0xaf7c, - 0xaf7d, 0xaf7e, 0xaf7f, 0xfffd, - /* 0x8e */ - 0xaf80, 0xaf81, 0xaf82, 0xaf83, 0xaf84, 0xaf85, 0xaf86, 0xaf87, - 0xaf88, 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, 0xaf8f, - 0xaf90, 0xfffd, 0xaf91, 0xaf92, 0xaf93, 0xaf94, 0xaf95, 0xaf96, - 0xaf97, 0xaf98, 0xaf99, 0xaf9a, 0xaf9b, 0xfffd, 0xfffd, 0xfffd, - 0xaf9c, 0xaf9d, 0xaf9e, 0xaf9f, 0xafa0, 0xafa1, 0xafa2, 0xafa3, - 0xafa4, 0xafa5, 0xafa6, 0xafa7, 0xafa8, 0xafa9, 0xafaa, 0xafab, - 0xafac, 0xfffd, 0xafad, 0xafae, 0xafaf, 0xafb0, 0xafb1, 0xafb2, - 0xafb3, 0xafb4, 0xafb5, 0xafb6, 0xafb7, 0xfffd, 0xafb8, 0xafb9, - 0xafba, 0xafbb, 0xafbc, 0xafbd, 0xafbe, 0xafbf, 0xafc0, 0xafc1, - 0xafc2, 0xafc3, 0xafc4, 0xafc5, 0xafc6, 0xafc7, 0xafc8, 0xfffd, - 0xafc9, 0xafca, 0xafcb, 0xafcc, 0xafcd, 0xafce, 0xafcf, 0xafd0, - 0xafd1, 0xafd2, 0xafd3, 0xfffd, 0xfffd, 0xfffd, 0xafd4, 0xafd5, - 0xafd6, 0xafd7, 0xafd8, 0xafd9, 0xafda, 0xafdb, 0xafdc, 0xafdd, - 0xafde, 0xafdf, 0xafe0, 0xafe1, 0xafe2, 0xafe3, 0xafe4, 0xfffd, - 0xafe5, 0xafe6, 0xafe7, 0xafe8, 0xafe9, 0xafea, 0xafeb, 0xafec, - 0xafed, 0xafee, 0xafef, 0xfffd, 0xfffd, 0xfffd, 0xaff0, 0xaff1, - 0xaff2, 0xaff3, 0xaff4, 0xaff5, 0xaff6, 0xaff7, 0xaff8, 0xaff9, - 0xaffa, 0xaffb, 0xaffc, 0xaffd, 0xaffe, 0xafff, 0xb000, 0xfffd, - 0xb001, 0xb002, 0xb003, 0xb004, 0xb005, 0xb006, 0xb007, 0xb008, - 0xb009, 0xb00a, 0xb00b, 0xfffd, 0xfffd, 0xfffd, 0xb00c, 0xb00d, - 0xb00e, 0xb00f, 0xb010, 0xb011, 0xb012, 0xb013, 0xb014, 0xb015, - 0xb016, 0xb017, 0xb018, 0xb019, 0xb01a, 0xb01b, 0xb01c, 0xfffd, - 0xb01d, 0xb01e, 0xb01f, 0xb020, 0xb021, 0xb022, 0xb023, 0xb024, - 0xb025, 0xb026, 0xb027, 0xfffd, - /* 0x8f */ - 0xb028, 0xb029, 0xb02a, 0xb02b, 0xb02c, 0xb02d, 0xb02e, 0xb02f, - 0xb030, 0xb031, 0xb032, 0xb033, 0xb034, 0xb035, 0xb036, 0xb037, - 0xb038, 0xfffd, 0xb039, 0xb03a, 0xb03b, 0xb03c, 0xb03d, 0xb03e, - 0xb03f, 0xb040, 0xb041, 0xb042, 0xb043, 0xfffd, 0xfffd, 0xfffd, - 0xb044, 0xb045, 0xb046, 0xb047, 0xb048, 0xb049, 0xb04a, 0xb04b, - 0xb04c, 0xb04d, 0xb04e, 0xb04f, 0xb050, 0xb051, 0xb052, 0xb053, - 0xb054, 0xfffd, 0xb055, 0xb056, 0xb057, 0xb058, 0xb059, 0xb05a, - 0xb05b, 0xb05c, 0xb05d, 0xb05e, 0xb05f, 0xfffd, 0xb060, 0xb061, - 0xb062, 0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068, 0xb069, - 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e, 0xb06f, 0xb070, 0xfffd, - 0xb071, 0xb072, 0xb073, 0xb074, 0xb075, 0xb076, 0xb077, 0xb078, - 0xb079, 0xb07a, 0xb07b, 0xfffd, 0xfffd, 0xfffd, 0xb07c, 0xb07d, - 0xb07e, 0xb07f, 0xb080, 0xb081, 0xb082, 0xb083, 0xb084, 0xb085, - 0xb086, 0xb087, 0xb088, 0xb089, 0xb08a, 0xb08b, 0xb08c, 0xfffd, - 0xb08d, 0xb08e, 0xb08f, 0xb090, 0xb091, 0xb092, 0xb093, 0xb094, - 0xb095, 0xb096, 0xb097, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0x90 */ - 0x3134, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, 0xb09e, 0xb09f, - 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, 0xb0a7, - 0xb0a8, 0xfffd, 0xb0a9, 0xb0aa, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, - 0xb0af, 0xb0b0, 0xb0b1, 0xb0b2, 0xb0b3, 0xfffd, 0xb0b4, 0xb0b5, - 0xb0b6, 0xb0b7, 0xb0b8, 0xb0b9, 0xb0ba, 0xb0bb, 0xb0bc, 0xb0bd, - 0xb0be, 0xb0bf, 0xb0c0, 0xb0c1, 0xb0c2, 0xb0c3, 0xb0c4, 0xfffd, - 0xb0c5, 0xb0c6, 0xb0c7, 0xb0c8, 0xb0c9, 0xb0ca, 0xb0cb, 0xb0cc, - 0xb0cd, 0xb0ce, 0xb0cf, 0xfffd, 0xfffd, 0xfffd, 0xb0d0, 0xb0d1, - 0xb0d2, 0xb0d3, 0xb0d4, 0xb0d5, 0xb0d6, 0xb0d7, 0xb0d8, 0xb0d9, - 0xb0da, 0xb0db, 0xb0dc, 0xb0dd, 0xb0de, 0xb0df, 0xb0e0, 0xfffd, - 0xb0e1, 0xb0e2, 0xb0e3, 0xb0e4, 0xb0e5, 0xb0e6, 0xb0e7, 0xb0e8, - 0xb0e9, 0xb0ea, 0xb0eb, 0xfffd, 0xfffd, 0xfffd, 0xb0ec, 0xb0ed, - 0xb0ee, 0xb0ef, 0xb0f0, 0xb0f1, 0xb0f2, 0xb0f3, 0xb0f4, 0xb0f5, - 0xb0f6, 0xb0f7, 0xb0f8, 0xb0f9, 0xb0fa, 0xb0fb, 0xb0fc, 0xfffd, - 0xb0fd, 0xb0fe, 0xb0ff, 0xb100, 0xb101, 0xb102, 0xb103, 0xb104, - 0xb105, 0xb106, 0xb107, 0xfffd, 0xfffd, 0xfffd, 0xb108, 0xb109, - 0xb10a, 0xb10b, 0xb10c, 0xb10d, 0xb10e, 0xb10f, 0xb110, 0xb111, - 0xb112, 0xb113, 0xb114, 0xb115, 0xb116, 0xb117, 0xb118, 0xfffd, - 0xb119, 0xb11a, 0xb11b, 0xb11c, 0xb11d, 0xb11e, 0xb11f, 0xb120, - 0xb121, 0xb122, 0xb123, 0xfffd, - /* 0x91 */ - 0xb124, 0xb125, 0xb126, 0xb127, 0xb128, 0xb129, 0xb12a, 0xb12b, - 0xb12c, 0xb12d, 0xb12e, 0xb12f, 0xb130, 0xb131, 0xb132, 0xb133, - 0xb134, 0xfffd, 0xb135, 0xb136, 0xb137, 0xb138, 0xb139, 0xb13a, - 0xb13b, 0xb13c, 0xb13d, 0xb13e, 0xb13f, 0xfffd, 0xfffd, 0xfffd, - 0xb140, 0xb141, 0xb142, 0xb143, 0xb144, 0xb145, 0xb146, 0xb147, - 0xb148, 0xb149, 0xb14a, 0xb14b, 0xb14c, 0xb14d, 0xb14e, 0xb14f, - 0xb150, 0xfffd, 0xb151, 0xb152, 0xb153, 0xb154, 0xb155, 0xb156, - 0xb157, 0xb158, 0xb159, 0xb15a, 0xb15b, 0xfffd, 0xb15c, 0xb15d, - 0xb15e, 0xb15f, 0xb160, 0xb161, 0xb162, 0xb163, 0xb164, 0xb165, - 0xb166, 0xb167, 0xb168, 0xb169, 0xb16a, 0xb16b, 0xb16c, 0xfffd, - 0xb16d, 0xb16e, 0xb16f, 0xb170, 0xb171, 0xb172, 0xb173, 0xb174, - 0xb175, 0xb176, 0xb177, 0xfffd, 0xfffd, 0xfffd, 0xb178, 0xb179, - 0xb17a, 0xb17b, 0xb17c, 0xb17d, 0xb17e, 0xb17f, 0xb180, 0xb181, - 0xb182, 0xb183, 0xb184, 0xb185, 0xb186, 0xb187, 0xb188, 0xfffd, - 0xb189, 0xb18a, 0xb18b, 0xb18c, 0xb18d, 0xb18e, 0xb18f, 0xb190, - 0xb191, 0xb192, 0xb193, 0xfffd, 0xfffd, 0xfffd, 0xb194, 0xb195, - 0xb196, 0xb197, 0xb198, 0xb199, 0xb19a, 0xb19b, 0xb19c, 0xb19d, - 0xb19e, 0xb19f, 0xb1a0, 0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4, 0xfffd, - 0xb1a5, 0xb1a6, 0xb1a7, 0xb1a8, 0xb1a9, 0xb1aa, 0xb1ab, 0xb1ac, - 0xb1ad, 0xb1ae, 0xb1af, 0xfffd, 0xfffd, 0xfffd, 0xb1b0, 0xb1b1, - 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, 0xb1b7, 0xb1b8, 0xb1b9, - 0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1be, 0xb1bf, 0xb1c0, 0xfffd, - 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, 0xb1c5, 0xb1c6, 0xb1c7, 0xb1c8, - 0xb1c9, 0xb1ca, 0xb1cb, 0xfffd, - /* 0x92 */ - 0xb1cc, 0xb1cd, 0xb1ce, 0xb1cf, 0xb1d0, 0xb1d1, 0xb1d2, 0xb1d3, - 0xb1d4, 0xb1d5, 0xb1d6, 0xb1d7, 0xb1d8, 0xb1d9, 0xb1da, 0xb1db, - 0xb1dc, 0xfffd, 0xb1dd, 0xb1de, 0xb1df, 0xb1e0, 0xb1e1, 0xb1e2, - 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, 0xfffd, 0xfffd, 0xfffd, - 0xb1e8, 0xb1e9, 0xb1ea, 0xb1eb, 0xb1ec, 0xb1ed, 0xb1ee, 0xb1ef, - 0xb1f0, 0xb1f1, 0xb1f2, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6, 0xb1f7, - 0xb1f8, 0xfffd, 0xb1f9, 0xb1fa, 0xb1fb, 0xb1fc, 0xb1fd, 0xb1fe, - 0xb1ff, 0xb200, 0xb201, 0xb202, 0xb203, 0xfffd, 0xb204, 0xb205, - 0xb206, 0xb207, 0xb208, 0xb209, 0xb20a, 0xb20b, 0xb20c, 0xb20d, - 0xb20e, 0xb20f, 0xb210, 0xb211, 0xb212, 0xb213, 0xb214, 0xfffd, - 0xb215, 0xb216, 0xb217, 0xb218, 0xb219, 0xb21a, 0xb21b, 0xb21c, - 0xb21d, 0xb21e, 0xb21f, 0xfffd, 0xfffd, 0xfffd, 0xb220, 0xb221, - 0xb222, 0xb223, 0xb224, 0xb225, 0xb226, 0xb227, 0xb228, 0xb229, - 0xb22a, 0xb22b, 0xb22c, 0xb22d, 0xb22e, 0xb22f, 0xb230, 0xfffd, - 0xb231, 0xb232, 0xb233, 0xb234, 0xb235, 0xb236, 0xb237, 0xb238, - 0xb239, 0xb23a, 0xb23b, 0xfffd, 0xfffd, 0xfffd, 0xb23c, 0xb23d, - 0xb23e, 0xb23f, 0xb240, 0xb241, 0xb242, 0xb243, 0xb244, 0xb245, - 0xb246, 0xb247, 0xb248, 0xb249, 0xb24a, 0xb24b, 0xb24c, 0xfffd, - 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb252, 0xb253, 0xb254, - 0xb255, 0xb256, 0xb257, 0xfffd, 0xfffd, 0xfffd, 0xb258, 0xb259, - 0xb25a, 0xb25b, 0xb25c, 0xb25d, 0xb25e, 0xb25f, 0xb260, 0xb261, - 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, 0xb267, 0xb268, 0xfffd, - 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xb26e, 0xb26f, 0xb270, - 0xb271, 0xb272, 0xb273, 0xfffd, - /* 0x93 */ - 0xb274, 0xb275, 0xb276, 0xb277, 0xb278, 0xb279, 0xb27a, 0xb27b, - 0xb27c, 0xb27d, 0xb27e, 0xb27f, 0xb280, 0xb281, 0xb282, 0xb283, - 0xb284, 0xfffd, 0xb285, 0xb286, 0xb287, 0xb288, 0xb289, 0xb28a, - 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xb28f, 0xfffd, 0xfffd, 0xfffd, - 0xb290, 0xb291, 0xb292, 0xb293, 0xb294, 0xb295, 0xb296, 0xb297, - 0xb298, 0xb299, 0xb29a, 0xb29b, 0xb29c, 0xb29d, 0xb29e, 0xb29f, - 0xb2a0, 0xfffd, 0xb2a1, 0xb2a2, 0xb2a3, 0xb2a4, 0xb2a5, 0xb2a6, - 0xb2a7, 0xb2a8, 0xb2a9, 0xb2aa, 0xb2ab, 0xfffd, 0xb2ac, 0xb2ad, - 0xb2ae, 0xb2af, 0xb2b0, 0xb2b1, 0xb2b2, 0xb2b3, 0xb2b4, 0xb2b5, - 0xb2b6, 0xb2b7, 0xb2b8, 0xb2b9, 0xb2ba, 0xb2bb, 0xb2bc, 0xfffd, - 0xb2bd, 0xb2be, 0xb2bf, 0xb2c0, 0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4, - 0xb2c5, 0xb2c6, 0xb2c7, 0xfffd, 0xfffd, 0xfffd, 0xb2c8, 0xb2c9, - 0xb2ca, 0xb2cb, 0xb2cc, 0xb2cd, 0xb2ce, 0xb2cf, 0xb2d0, 0xb2d1, - 0xb2d2, 0xb2d3, 0xb2d4, 0xb2d5, 0xb2d6, 0xb2d7, 0xb2d8, 0xfffd, - 0xb2d9, 0xb2da, 0xb2db, 0xb2dc, 0xb2dd, 0xb2de, 0xb2df, 0xb2e0, - 0xb2e1, 0xb2e2, 0xb2e3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0x94 */ - 0x3137, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e7, 0xb2e8, 0xb2e9, 0xb2ea, 0xb2eb, - 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef, 0xb2f0, 0xb2f1, 0xb2f2, 0xb2f3, - 0xb2f4, 0xfffd, 0xb2f5, 0xb2f6, 0xb2f7, 0xb2f8, 0xb2f9, 0xb2fa, - 0xb2fb, 0xb2fc, 0xb2fd, 0xb2fe, 0xb2ff, 0xfffd, 0xb300, 0xb301, - 0xb302, 0xb303, 0xb304, 0xb305, 0xb306, 0xb307, 0xb308, 0xb309, - 0xb30a, 0xb30b, 0xb30c, 0xb30d, 0xb30e, 0xb30f, 0xb310, 0xfffd, - 0xb311, 0xb312, 0xb313, 0xb314, 0xb315, 0xb316, 0xb317, 0xb318, - 0xb319, 0xb31a, 0xb31b, 0xfffd, 0xfffd, 0xfffd, 0xb31c, 0xb31d, - 0xb31e, 0xb31f, 0xb320, 0xb321, 0xb322, 0xb323, 0xb324, 0xb325, - 0xb326, 0xb327, 0xb328, 0xb329, 0xb32a, 0xb32b, 0xb32c, 0xfffd, - 0xb32d, 0xb32e, 0xb32f, 0xb330, 0xb331, 0xb332, 0xb333, 0xb334, - 0xb335, 0xb336, 0xb337, 0xfffd, 0xfffd, 0xfffd, 0xb338, 0xb339, - 0xb33a, 0xb33b, 0xb33c, 0xb33d, 0xb33e, 0xb33f, 0xb340, 0xb341, - 0xb342, 0xb343, 0xb344, 0xb345, 0xb346, 0xb347, 0xb348, 0xfffd, - 0xb349, 0xb34a, 0xb34b, 0xb34c, 0xb34d, 0xb34e, 0xb34f, 0xb350, - 0xb351, 0xb352, 0xb353, 0xfffd, 0xfffd, 0xfffd, 0xb354, 0xb355, - 0xb356, 0xb357, 0xb358, 0xb359, 0xb35a, 0xb35b, 0xb35c, 0xb35d, - 0xb35e, 0xb35f, 0xb360, 0xb361, 0xb362, 0xb363, 0xb364, 0xfffd, - 0xb365, 0xb366, 0xb367, 0xb368, 0xb369, 0xb36a, 0xb36b, 0xb36c, - 0xb36d, 0xb36e, 0xb36f, 0xfffd, - /* 0x95 */ - 0xb370, 0xb371, 0xb372, 0xb373, 0xb374, 0xb375, 0xb376, 0xb377, - 0xb378, 0xb379, 0xb37a, 0xb37b, 0xb37c, 0xb37d, 0xb37e, 0xb37f, - 0xb380, 0xfffd, 0xb381, 0xb382, 0xb383, 0xb384, 0xb385, 0xb386, - 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, 0xfffd, 0xfffd, 0xfffd, - 0xb38c, 0xb38d, 0xb38e, 0xb38f, 0xb390, 0xb391, 0xb392, 0xb393, - 0xb394, 0xb395, 0xb396, 0xb397, 0xb398, 0xb399, 0xb39a, 0xb39b, - 0xb39c, 0xfffd, 0xb39d, 0xb39e, 0xb39f, 0xb3a0, 0xb3a1, 0xb3a2, - 0xb3a3, 0xb3a4, 0xb3a5, 0xb3a6, 0xb3a7, 0xfffd, 0xb3a8, 0xb3a9, - 0xb3aa, 0xb3ab, 0xb3ac, 0xb3ad, 0xb3ae, 0xb3af, 0xb3b0, 0xb3b1, - 0xb3b2, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6, 0xb3b7, 0xb3b8, 0xfffd, - 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd, 0xb3be, 0xb3bf, 0xb3c0, - 0xb3c1, 0xb3c2, 0xb3c3, 0xfffd, 0xfffd, 0xfffd, 0xb3c4, 0xb3c5, - 0xb3c6, 0xb3c7, 0xb3c8, 0xb3c9, 0xb3ca, 0xb3cb, 0xb3cc, 0xb3cd, - 0xb3ce, 0xb3cf, 0xb3d0, 0xb3d1, 0xb3d2, 0xb3d3, 0xb3d4, 0xfffd, - 0xb3d5, 0xb3d6, 0xb3d7, 0xb3d8, 0xb3d9, 0xb3da, 0xb3db, 0xb3dc, - 0xb3dd, 0xb3de, 0xb3df, 0xfffd, 0xfffd, 0xfffd, 0xb3e0, 0xb3e1, - 0xb3e2, 0xb3e3, 0xb3e4, 0xb3e5, 0xb3e6, 0xb3e7, 0xb3e8, 0xb3e9, - 0xb3ea, 0xb3eb, 0xb3ec, 0xb3ed, 0xb3ee, 0xb3ef, 0xb3f0, 0xfffd, - 0xb3f1, 0xb3f2, 0xb3f3, 0xb3f4, 0xb3f5, 0xb3f6, 0xb3f7, 0xb3f8, - 0xb3f9, 0xb3fa, 0xb3fb, 0xfffd, 0xfffd, 0xfffd, 0xb3fc, 0xb3fd, - 0xb3fe, 0xb3ff, 0xb400, 0xb401, 0xb402, 0xb403, 0xb404, 0xb405, - 0xb406, 0xb407, 0xb408, 0xb409, 0xb40a, 0xb40b, 0xb40c, 0xfffd, - 0xb40d, 0xb40e, 0xb40f, 0xb410, 0xb411, 0xb412, 0xb413, 0xb414, - 0xb415, 0xb416, 0xb417, 0xfffd, - /* 0x96 */ - 0xb418, 0xb419, 0xb41a, 0xb41b, 0xb41c, 0xb41d, 0xb41e, 0xb41f, - 0xb420, 0xb421, 0xb422, 0xb423, 0xb424, 0xb425, 0xb426, 0xb427, - 0xb428, 0xfffd, 0xb429, 0xb42a, 0xb42b, 0xb42c, 0xb42d, 0xb42e, - 0xb42f, 0xb430, 0xb431, 0xb432, 0xb433, 0xfffd, 0xfffd, 0xfffd, - 0xb434, 0xb435, 0xb436, 0xb437, 0xb438, 0xb439, 0xb43a, 0xb43b, - 0xb43c, 0xb43d, 0xb43e, 0xb43f, 0xb440, 0xb441, 0xb442, 0xb443, - 0xb444, 0xfffd, 0xb445, 0xb446, 0xb447, 0xb448, 0xb449, 0xb44a, - 0xb44b, 0xb44c, 0xb44d, 0xb44e, 0xb44f, 0xfffd, 0xb450, 0xb451, - 0xb452, 0xb453, 0xb454, 0xb455, 0xb456, 0xb457, 0xb458, 0xb459, - 0xb45a, 0xb45b, 0xb45c, 0xb45d, 0xb45e, 0xb45f, 0xb460, 0xfffd, - 0xb461, 0xb462, 0xb463, 0xb464, 0xb465, 0xb466, 0xb467, 0xb468, - 0xb469, 0xb46a, 0xb46b, 0xfffd, 0xfffd, 0xfffd, 0xb46c, 0xb46d, - 0xb46e, 0xb46f, 0xb470, 0xb471, 0xb472, 0xb473, 0xb474, 0xb475, - 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, 0xb47b, 0xb47c, 0xfffd, - 0xb47d, 0xb47e, 0xb47f, 0xb480, 0xb481, 0xb482, 0xb483, 0xb484, - 0xb485, 0xb486, 0xb487, 0xfffd, 0xfffd, 0xfffd, 0xb488, 0xb489, - 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e, 0xb48f, 0xb490, 0xb491, - 0xb492, 0xb493, 0xb494, 0xb495, 0xb496, 0xb497, 0xb498, 0xfffd, - 0xb499, 0xb49a, 0xb49b, 0xb49c, 0xb49d, 0xb49e, 0xb49f, 0xb4a0, - 0xb4a1, 0xb4a2, 0xb4a3, 0xfffd, 0xfffd, 0xfffd, 0xb4a4, 0xb4a5, - 0xb4a6, 0xb4a7, 0xb4a8, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ac, 0xb4ad, - 0xb4ae, 0xb4af, 0xb4b0, 0xb4b1, 0xb4b2, 0xb4b3, 0xb4b4, 0xfffd, - 0xb4b5, 0xb4b6, 0xb4b7, 0xb4b8, 0xb4b9, 0xb4ba, 0xb4bb, 0xb4bc, - 0xb4bd, 0xb4be, 0xb4bf, 0xfffd, - /* 0x97 */ - 0xb4c0, 0xb4c1, 0xb4c2, 0xb4c3, 0xb4c4, 0xb4c5, 0xb4c6, 0xb4c7, - 0xb4c8, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce, 0xb4cf, - 0xb4d0, 0xfffd, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d5, 0xb4d6, - 0xb4d7, 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0xfffd, 0xfffd, 0xfffd, - 0xb4dc, 0xb4dd, 0xb4de, 0xb4df, 0xb4e0, 0xb4e1, 0xb4e2, 0xb4e3, - 0xb4e4, 0xb4e5, 0xb4e6, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea, 0xb4eb, - 0xb4ec, 0xfffd, 0xb4ed, 0xb4ee, 0xb4ef, 0xb4f0, 0xb4f1, 0xb4f2, - 0xb4f3, 0xb4f4, 0xb4f5, 0xb4f6, 0xb4f7, 0xfffd, 0xb4f8, 0xb4f9, - 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe, 0xb4ff, 0xb500, 0xb501, - 0xb502, 0xb503, 0xb504, 0xb505, 0xb506, 0xb507, 0xb508, 0xfffd, - 0xb509, 0xb50a, 0xb50b, 0xb50c, 0xb50d, 0xb50e, 0xb50f, 0xb510, - 0xb511, 0xb512, 0xb513, 0xfffd, 0xfffd, 0xfffd, 0xb514, 0xb515, - 0xb516, 0xb517, 0xb518, 0xb519, 0xb51a, 0xb51b, 0xb51c, 0xb51d, - 0xb51e, 0xb51f, 0xb520, 0xb521, 0xb522, 0xb523, 0xb524, 0xfffd, - 0xb525, 0xb526, 0xb527, 0xb528, 0xb529, 0xb52a, 0xb52b, 0xb52c, - 0xb52d, 0xb52e, 0xb52f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0x98 */ - 0x3138, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xb530, 0xb531, 0xb532, 0xb533, 0xb534, 0xb535, 0xb536, 0xb537, - 0xb538, 0xb539, 0xb53a, 0xb53b, 0xb53c, 0xb53d, 0xb53e, 0xb53f, - 0xb540, 0xfffd, 0xb541, 0xb542, 0xb543, 0xb544, 0xb545, 0xb546, - 0xb547, 0xb548, 0xb549, 0xb54a, 0xb54b, 0xfffd, 0xb54c, 0xb54d, - 0xb54e, 0xb54f, 0xb550, 0xb551, 0xb552, 0xb553, 0xb554, 0xb555, - 0xb556, 0xb557, 0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55c, 0xfffd, - 0xb55d, 0xb55e, 0xb55f, 0xb560, 0xb561, 0xb562, 0xb563, 0xb564, - 0xb565, 0xb566, 0xb567, 0xfffd, 0xfffd, 0xfffd, 0xb568, 0xb569, - 0xb56a, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xb56f, 0xb570, 0xb571, - 0xb572, 0xb573, 0xb574, 0xb575, 0xb576, 0xb577, 0xb578, 0xfffd, - 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d, 0xb57e, 0xb57f, 0xb580, - 0xb581, 0xb582, 0xb583, 0xfffd, 0xfffd, 0xfffd, 0xb584, 0xb585, - 0xb586, 0xb587, 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, - 0xb58e, 0xb58f, 0xb590, 0xb591, 0xb592, 0xb593, 0xb594, 0xfffd, - 0xb595, 0xb596, 0xb597, 0xb598, 0xb599, 0xb59a, 0xb59b, 0xb59c, - 0xb59d, 0xb59e, 0xb59f, 0xfffd, 0xfffd, 0xfffd, 0xb5a0, 0xb5a1, - 0xb5a2, 0xb5a3, 0xb5a4, 0xb5a5, 0xb5a6, 0xb5a7, 0xb5a8, 0xb5a9, - 0xb5aa, 0xb5ab, 0xb5ac, 0xb5ad, 0xb5ae, 0xb5af, 0xb5b0, 0xfffd, - 0xb5b1, 0xb5b2, 0xb5b3, 0xb5b4, 0xb5b5, 0xb5b6, 0xb5b7, 0xb5b8, - 0xb5b9, 0xb5ba, 0xb5bb, 0xfffd, - /* 0x99 */ - 0xb5bc, 0xb5bd, 0xb5be, 0xb5bf, 0xb5c0, 0xb5c1, 0xb5c2, 0xb5c3, - 0xb5c4, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8, 0xb5c9, 0xb5ca, 0xb5cb, - 0xb5cc, 0xfffd, 0xb5cd, 0xb5ce, 0xb5cf, 0xb5d0, 0xb5d1, 0xb5d2, - 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7, 0xfffd, 0xfffd, 0xfffd, - 0xb5d8, 0xb5d9, 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5de, 0xb5df, - 0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6, 0xb5e7, - 0xb5e8, 0xfffd, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ec, 0xb5ed, 0xb5ee, - 0xb5ef, 0xb5f0, 0xb5f1, 0xb5f2, 0xb5f3, 0xfffd, 0xb5f4, 0xb5f5, - 0xb5f6, 0xb5f7, 0xb5f8, 0xb5f9, 0xb5fa, 0xb5fb, 0xb5fc, 0xb5fd, - 0xb5fe, 0xb5ff, 0xb600, 0xb601, 0xb602, 0xb603, 0xb604, 0xfffd, - 0xb605, 0xb606, 0xb607, 0xb608, 0xb609, 0xb60a, 0xb60b, 0xb60c, - 0xb60d, 0xb60e, 0xb60f, 0xfffd, 0xfffd, 0xfffd, 0xb610, 0xb611, - 0xb612, 0xb613, 0xb614, 0xb615, 0xb616, 0xb617, 0xb618, 0xb619, - 0xb61a, 0xb61b, 0xb61c, 0xb61d, 0xb61e, 0xb61f, 0xb620, 0xfffd, - 0xb621, 0xb622, 0xb623, 0xb624, 0xb625, 0xb626, 0xb627, 0xb628, - 0xb629, 0xb62a, 0xb62b, 0xfffd, 0xfffd, 0xfffd, 0xb62c, 0xb62d, - 0xb62e, 0xb62f, 0xb630, 0xb631, 0xb632, 0xb633, 0xb634, 0xb635, - 0xb636, 0xb637, 0xb638, 0xb639, 0xb63a, 0xb63b, 0xb63c, 0xfffd, - 0xb63d, 0xb63e, 0xb63f, 0xb640, 0xb641, 0xb642, 0xb643, 0xb644, - 0xb645, 0xb646, 0xb647, 0xfffd, 0xfffd, 0xfffd, 0xb648, 0xb649, - 0xb64a, 0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, 0xb651, - 0xb652, 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xfffd, - 0xb659, 0xb65a, 0xb65b, 0xb65c, 0xb65d, 0xb65e, 0xb65f, 0xb660, - 0xb661, 0xb662, 0xb663, 0xfffd, - /* 0x9a */ - 0xb664, 0xb665, 0xb666, 0xb667, 0xb668, 0xb669, 0xb66a, 0xb66b, - 0xb66c, 0xb66d, 0xb66e, 0xb66f, 0xb670, 0xb671, 0xb672, 0xb673, - 0xb674, 0xfffd, 0xb675, 0xb676, 0xb677, 0xb678, 0xb679, 0xb67a, - 0xb67b, 0xb67c, 0xb67d, 0xb67e, 0xb67f, 0xfffd, 0xfffd, 0xfffd, - 0xb680, 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, - 0xb688, 0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e, 0xb68f, - 0xb690, 0xfffd, 0xb691, 0xb692, 0xb693, 0xb694, 0xb695, 0xb696, - 0xb697, 0xb698, 0xb699, 0xb69a, 0xb69b, 0xfffd, 0xb69c, 0xb69d, - 0xb69e, 0xb69f, 0xb6a0, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a4, 0xb6a5, - 0xb6a6, 0xb6a7, 0xb6a8, 0xb6a9, 0xb6aa, 0xb6ab, 0xb6ac, 0xfffd, - 0xb6ad, 0xb6ae, 0xb6af, 0xb6b0, 0xb6b1, 0xb6b2, 0xb6b3, 0xb6b4, - 0xb6b5, 0xb6b6, 0xb6b7, 0xfffd, 0xfffd, 0xfffd, 0xb6b8, 0xb6b9, - 0xb6ba, 0xb6bb, 0xb6bc, 0xb6bd, 0xb6be, 0xb6bf, 0xb6c0, 0xb6c1, - 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6, 0xb6c7, 0xb6c8, 0xfffd, - 0xb6c9, 0xb6ca, 0xb6cb, 0xb6cc, 0xb6cd, 0xb6ce, 0xb6cf, 0xb6d0, - 0xb6d1, 0xb6d2, 0xb6d3, 0xfffd, 0xfffd, 0xfffd, 0xb6d4, 0xb6d5, - 0xb6d6, 0xb6d7, 0xb6d8, 0xb6d9, 0xb6da, 0xb6db, 0xb6dc, 0xb6dd, - 0xb6de, 0xb6df, 0xb6e0, 0xb6e1, 0xb6e2, 0xb6e3, 0xb6e4, 0xfffd, - 0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9, 0xb6ea, 0xb6eb, 0xb6ec, - 0xb6ed, 0xb6ee, 0xb6ef, 0xfffd, 0xfffd, 0xfffd, 0xb6f0, 0xb6f1, - 0xb6f2, 0xb6f3, 0xb6f4, 0xb6f5, 0xb6f6, 0xb6f7, 0xb6f8, 0xb6f9, - 0xb6fa, 0xb6fb, 0xb6fc, 0xb6fd, 0xb6fe, 0xb6ff, 0xb700, 0xfffd, - 0xb701, 0xb702, 0xb703, 0xb704, 0xb705, 0xb706, 0xb707, 0xb708, - 0xb709, 0xb70a, 0xb70b, 0xfffd, - /* 0x9b */ - 0xb70c, 0xb70d, 0xb70e, 0xb70f, 0xb710, 0xb711, 0xb712, 0xb713, - 0xb714, 0xb715, 0xb716, 0xb717, 0xb718, 0xb719, 0xb71a, 0xb71b, - 0xb71c, 0xfffd, 0xb71d, 0xb71e, 0xb71f, 0xb720, 0xb721, 0xb722, - 0xb723, 0xb724, 0xb725, 0xb726, 0xb727, 0xfffd, 0xfffd, 0xfffd, - 0xb728, 0xb729, 0xb72a, 0xb72b, 0xb72c, 0xb72d, 0xb72e, 0xb72f, - 0xb730, 0xb731, 0xb732, 0xb733, 0xb734, 0xb735, 0xb736, 0xb737, - 0xb738, 0xfffd, 0xb739, 0xb73a, 0xb73b, 0xb73c, 0xb73d, 0xb73e, - 0xb73f, 0xb740, 0xb741, 0xb742, 0xb743, 0xfffd, 0xb744, 0xb745, - 0xb746, 0xb747, 0xb748, 0xb749, 0xb74a, 0xb74b, 0xb74c, 0xb74d, - 0xb74e, 0xb74f, 0xb750, 0xb751, 0xb752, 0xb753, 0xb754, 0xfffd, - 0xb755, 0xb756, 0xb757, 0xb758, 0xb759, 0xb75a, 0xb75b, 0xb75c, - 0xb75d, 0xb75e, 0xb75f, 0xfffd, 0xfffd, 0xfffd, 0xb760, 0xb761, - 0xb762, 0xb763, 0xb764, 0xb765, 0xb766, 0xb767, 0xb768, 0xb769, - 0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xb76e, 0xb76f, 0xb770, 0xfffd, - 0xb771, 0xb772, 0xb773, 0xb774, 0xb775, 0xb776, 0xb777, 0xb778, - 0xb779, 0xb77a, 0xb77b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0x9c */ - 0x3139, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xb77c, 0xb77d, 0xb77e, 0xb77f, 0xb780, 0xb781, 0xb782, 0xb783, - 0xb784, 0xb785, 0xb786, 0xb787, 0xb788, 0xb789, 0xb78a, 0xb78b, - 0xb78c, 0xfffd, 0xb78d, 0xb78e, 0xb78f, 0xb790, 0xb791, 0xb792, - 0xb793, 0xb794, 0xb795, 0xb796, 0xb797, 0xfffd, 0xb798, 0xb799, - 0xb79a, 0xb79b, 0xb79c, 0xb79d, 0xb79e, 0xb79f, 0xb7a0, 0xb7a1, - 0xb7a2, 0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6, 0xb7a7, 0xb7a8, 0xfffd, - 0xb7a9, 0xb7aa, 0xb7ab, 0xb7ac, 0xb7ad, 0xb7ae, 0xb7af, 0xb7b0, - 0xb7b1, 0xb7b2, 0xb7b3, 0xfffd, 0xfffd, 0xfffd, 0xb7b4, 0xb7b5, - 0xb7b6, 0xb7b7, 0xb7b8, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd, - 0xb7be, 0xb7bf, 0xb7c0, 0xb7c1, 0xb7c2, 0xb7c3, 0xb7c4, 0xfffd, - 0xb7c5, 0xb7c6, 0xb7c7, 0xb7c8, 0xb7c9, 0xb7ca, 0xb7cb, 0xb7cc, - 0xb7cd, 0xb7ce, 0xb7cf, 0xfffd, 0xfffd, 0xfffd, 0xb7d0, 0xb7d1, - 0xb7d2, 0xb7d3, 0xb7d4, 0xb7d5, 0xb7d6, 0xb7d7, 0xb7d8, 0xb7d9, - 0xb7da, 0xb7db, 0xb7dc, 0xb7dd, 0xb7de, 0xb7df, 0xb7e0, 0xfffd, - 0xb7e1, 0xb7e2, 0xb7e3, 0xb7e4, 0xb7e5, 0xb7e6, 0xb7e7, 0xb7e8, - 0xb7e9, 0xb7ea, 0xb7eb, 0xfffd, 0xfffd, 0xfffd, 0xb7ec, 0xb7ed, - 0xb7ee, 0xb7ef, 0xb7f0, 0xb7f1, 0xb7f2, 0xb7f3, 0xb7f4, 0xb7f5, - 0xb7f6, 0xb7f7, 0xb7f8, 0xb7f9, 0xb7fa, 0xb7fb, 0xb7fc, 0xfffd, - 0xb7fd, 0xb7fe, 0xb7ff, 0xb800, 0xb801, 0xb802, 0xb803, 0xb804, - 0xb805, 0xb806, 0xb807, 0xfffd, - /* 0x9d */ - 0xb808, 0xb809, 0xb80a, 0xb80b, 0xb80c, 0xb80d, 0xb80e, 0xb80f, - 0xb810, 0xb811, 0xb812, 0xb813, 0xb814, 0xb815, 0xb816, 0xb817, - 0xb818, 0xfffd, 0xb819, 0xb81a, 0xb81b, 0xb81c, 0xb81d, 0xb81e, - 0xb81f, 0xb820, 0xb821, 0xb822, 0xb823, 0xfffd, 0xfffd, 0xfffd, - 0xb824, 0xb825, 0xb826, 0xb827, 0xb828, 0xb829, 0xb82a, 0xb82b, - 0xb82c, 0xb82d, 0xb82e, 0xb82f, 0xb830, 0xb831, 0xb832, 0xb833, - 0xb834, 0xfffd, 0xb835, 0xb836, 0xb837, 0xb838, 0xb839, 0xb83a, - 0xb83b, 0xb83c, 0xb83d, 0xb83e, 0xb83f, 0xfffd, 0xb840, 0xb841, - 0xb842, 0xb843, 0xb844, 0xb845, 0xb846, 0xb847, 0xb848, 0xb849, - 0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e, 0xb84f, 0xb850, 0xfffd, - 0xb851, 0xb852, 0xb853, 0xb854, 0xb855, 0xb856, 0xb857, 0xb858, - 0xb859, 0xb85a, 0xb85b, 0xfffd, 0xfffd, 0xfffd, 0xb85c, 0xb85d, - 0xb85e, 0xb85f, 0xb860, 0xb861, 0xb862, 0xb863, 0xb864, 0xb865, - 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a, 0xb86b, 0xb86c, 0xfffd, - 0xb86d, 0xb86e, 0xb86f, 0xb870, 0xb871, 0xb872, 0xb873, 0xb874, - 0xb875, 0xb876, 0xb877, 0xfffd, 0xfffd, 0xfffd, 0xb878, 0xb879, - 0xb87a, 0xb87b, 0xb87c, 0xb87d, 0xb87e, 0xb87f, 0xb880, 0xb881, - 0xb882, 0xb883, 0xb884, 0xb885, 0xb886, 0xb887, 0xb888, 0xfffd, - 0xb889, 0xb88a, 0xb88b, 0xb88c, 0xb88d, 0xb88e, 0xb88f, 0xb890, - 0xb891, 0xb892, 0xb893, 0xfffd, 0xfffd, 0xfffd, 0xb894, 0xb895, - 0xb896, 0xb897, 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c, 0xb89d, - 0xb89e, 0xb89f, 0xb8a0, 0xb8a1, 0xb8a2, 0xb8a3, 0xb8a4, 0xfffd, - 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a8, 0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, - 0xb8ad, 0xb8ae, 0xb8af, 0xfffd, - /* 0x9e */ - 0xb8b0, 0xb8b1, 0xb8b2, 0xb8b3, 0xb8b4, 0xb8b5, 0xb8b6, 0xb8b7, - 0xb8b8, 0xb8b9, 0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8be, 0xb8bf, - 0xb8c0, 0xfffd, 0xb8c1, 0xb8c2, 0xb8c3, 0xb8c4, 0xb8c5, 0xb8c6, - 0xb8c7, 0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0xfffd, 0xfffd, 0xfffd, - 0xb8cc, 0xb8cd, 0xb8ce, 0xb8cf, 0xb8d0, 0xb8d1, 0xb8d2, 0xb8d3, - 0xb8d4, 0xb8d5, 0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9, 0xb8da, 0xb8db, - 0xb8dc, 0xfffd, 0xb8dd, 0xb8de, 0xb8df, 0xb8e0, 0xb8e1, 0xb8e2, - 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7, 0xfffd, 0xb8e8, 0xb8e9, - 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ed, 0xb8ee, 0xb8ef, 0xb8f0, 0xb8f1, - 0xb8f2, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7, 0xb8f8, 0xfffd, - 0xb8f9, 0xb8fa, 0xb8fb, 0xb8fc, 0xb8fd, 0xb8fe, 0xb8ff, 0xb900, - 0xb901, 0xb902, 0xb903, 0xfffd, 0xfffd, 0xfffd, 0xb904, 0xb905, - 0xb906, 0xb907, 0xb908, 0xb909, 0xb90a, 0xb90b, 0xb90c, 0xb90d, - 0xb90e, 0xb90f, 0xb910, 0xb911, 0xb912, 0xb913, 0xb914, 0xfffd, - 0xb915, 0xb916, 0xb917, 0xb918, 0xb919, 0xb91a, 0xb91b, 0xb91c, - 0xb91d, 0xb91e, 0xb91f, 0xfffd, 0xfffd, 0xfffd, 0xb920, 0xb921, - 0xb922, 0xb923, 0xb924, 0xb925, 0xb926, 0xb927, 0xb928, 0xb929, - 0xb92a, 0xb92b, 0xb92c, 0xb92d, 0xb92e, 0xb92f, 0xb930, 0xfffd, - 0xb931, 0xb932, 0xb933, 0xb934, 0xb935, 0xb936, 0xb937, 0xb938, - 0xb939, 0xb93a, 0xb93b, 0xfffd, 0xfffd, 0xfffd, 0xb93c, 0xb93d, - 0xb93e, 0xb93f, 0xb940, 0xb941, 0xb942, 0xb943, 0xb944, 0xb945, - 0xb946, 0xb947, 0xb948, 0xb949, 0xb94a, 0xb94b, 0xb94c, 0xfffd, - 0xb94d, 0xb94e, 0xb94f, 0xb950, 0xb951, 0xb952, 0xb953, 0xb954, - 0xb955, 0xb956, 0xb957, 0xfffd, - /* 0x9f */ - 0xb958, 0xb959, 0xb95a, 0xb95b, 0xb95c, 0xb95d, 0xb95e, 0xb95f, - 0xb960, 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, - 0xb968, 0xfffd, 0xb969, 0xb96a, 0xb96b, 0xb96c, 0xb96d, 0xb96e, - 0xb96f, 0xb970, 0xb971, 0xb972, 0xb973, 0xfffd, 0xfffd, 0xfffd, - 0xb974, 0xb975, 0xb976, 0xb977, 0xb978, 0xb979, 0xb97a, 0xb97b, - 0xb97c, 0xb97d, 0xb97e, 0xb97f, 0xb980, 0xb981, 0xb982, 0xb983, - 0xb984, 0xfffd, 0xb985, 0xb986, 0xb987, 0xb988, 0xb989, 0xb98a, - 0xb98b, 0xb98c, 0xb98d, 0xb98e, 0xb98f, 0xfffd, 0xb990, 0xb991, - 0xb992, 0xb993, 0xb994, 0xb995, 0xb996, 0xb997, 0xb998, 0xb999, - 0xb99a, 0xb99b, 0xb99c, 0xb99d, 0xb99e, 0xb99f, 0xb9a0, 0xfffd, - 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5, 0xb9a6, 0xb9a7, 0xb9a8, - 0xb9a9, 0xb9aa, 0xb9ab, 0xfffd, 0xfffd, 0xfffd, 0xb9ac, 0xb9ad, - 0xb9ae, 0xb9af, 0xb9b0, 0xb9b1, 0xb9b2, 0xb9b3, 0xb9b4, 0xb9b5, - 0xb9b6, 0xb9b7, 0xb9b8, 0xb9b9, 0xb9ba, 0xb9bb, 0xb9bc, 0xfffd, - 0xb9bd, 0xb9be, 0xb9bf, 0xb9c0, 0xb9c1, 0xb9c2, 0xb9c3, 0xb9c4, - 0xb9c5, 0xb9c6, 0xb9c7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0xa0 */ - 0x3141, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xb9c8, 0xb9c9, 0xb9ca, 0xb9cb, 0xb9cc, 0xb9cd, 0xb9ce, 0xb9cf, - 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d3, 0xb9d4, 0xb9d5, 0xb9d6, 0xb9d7, - 0xb9d8, 0xfffd, 0xb9d9, 0xb9da, 0xb9db, 0xb9dc, 0xb9dd, 0xb9de, - 0xb9df, 0xb9e0, 0xb9e1, 0xb9e2, 0xb9e3, 0xfffd, 0xb9e4, 0xb9e5, - 0xb9e6, 0xb9e7, 0xb9e8, 0xb9e9, 0xb9ea, 0xb9eb, 0xb9ec, 0xb9ed, - 0xb9ee, 0xb9ef, 0xb9f0, 0xb9f1, 0xb9f2, 0xb9f3, 0xb9f4, 0xfffd, - 0xb9f5, 0xb9f6, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xb9fb, 0xb9fc, - 0xb9fd, 0xb9fe, 0xb9ff, 0xfffd, 0xfffd, 0xfffd, 0xba00, 0xba01, - 0xba02, 0xba03, 0xba04, 0xba05, 0xba06, 0xba07, 0xba08, 0xba09, - 0xba0a, 0xba0b, 0xba0c, 0xba0d, 0xba0e, 0xba0f, 0xba10, 0xfffd, - 0xba11, 0xba12, 0xba13, 0xba14, 0xba15, 0xba16, 0xba17, 0xba18, - 0xba19, 0xba1a, 0xba1b, 0xfffd, 0xfffd, 0xfffd, 0xba1c, 0xba1d, - 0xba1e, 0xba1f, 0xba20, 0xba21, 0xba22, 0xba23, 0xba24, 0xba25, - 0xba26, 0xba27, 0xba28, 0xba29, 0xba2a, 0xba2b, 0xba2c, 0xfffd, - 0xba2d, 0xba2e, 0xba2f, 0xba30, 0xba31, 0xba32, 0xba33, 0xba34, - 0xba35, 0xba36, 0xba37, 0xfffd, 0xfffd, 0xfffd, 0xba38, 0xba39, - 0xba3a, 0xba3b, 0xba3c, 0xba3d, 0xba3e, 0xba3f, 0xba40, 0xba41, - 0xba42, 0xba43, 0xba44, 0xba45, 0xba46, 0xba47, 0xba48, 0xfffd, - 0xba49, 0xba4a, 0xba4b, 0xba4c, 0xba4d, 0xba4e, 0xba4f, 0xba50, - 0xba51, 0xba52, 0xba53, 0xfffd, - /* 0xa1 */ - 0xba54, 0xba55, 0xba56, 0xba57, 0xba58, 0xba59, 0xba5a, 0xba5b, - 0xba5c, 0xba5d, 0xba5e, 0xba5f, 0xba60, 0xba61, 0xba62, 0xba63, - 0xba64, 0xfffd, 0xba65, 0xba66, 0xba67, 0xba68, 0xba69, 0xba6a, - 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xfffd, 0xfffd, 0xfffd, - 0xba70, 0xba71, 0xba72, 0xba73, 0xba74, 0xba75, 0xba76, 0xba77, - 0xba78, 0xba79, 0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba7e, 0xba7f, - 0xba80, 0xfffd, 0xba81, 0xba82, 0xba83, 0xba84, 0xba85, 0xba86, - 0xba87, 0xba88, 0xba89, 0xba8a, 0xba8b, 0xfffd, 0xba8c, 0xba8d, - 0xba8e, 0xba8f, 0xba90, 0xba91, 0xba92, 0xba93, 0xba94, 0xba95, - 0xba96, 0xba97, 0xba98, 0xba99, 0xba9a, 0xba9b, 0xba9c, 0xfffd, - 0xba9d, 0xba9e, 0xba9f, 0xbaa0, 0xbaa1, 0xbaa2, 0xbaa3, 0xbaa4, - 0xbaa5, 0xbaa6, 0xbaa7, 0xfffd, 0xfffd, 0xfffd, 0xbaa8, 0xbaa9, - 0xbaaa, 0xbaab, 0xbaac, 0xbaad, 0xbaae, 0xbaaf, 0xbab0, 0xbab1, - 0xbab2, 0xbab3, 0xbab4, 0xbab5, 0xbab6, 0xbab7, 0xbab8, 0xfffd, - 0xbab9, 0xbaba, 0xbabb, 0xbabc, 0xbabd, 0xbabe, 0xbabf, 0xbac0, - 0xbac1, 0xbac2, 0xbac3, 0xfffd, 0xfffd, 0xfffd, 0xbac4, 0xbac5, - 0xbac6, 0xbac7, 0xbac8, 0xbac9, 0xbaca, 0xbacb, 0xbacc, 0xbacd, - 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad2, 0xbad3, 0xbad4, 0xfffd, - 0xbad5, 0xbad6, 0xbad7, 0xbad8, 0xbad9, 0xbada, 0xbadb, 0xbadc, - 0xbadd, 0xbade, 0xbadf, 0xfffd, 0xfffd, 0xfffd, 0xbae0, 0xbae1, - 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6, 0xbae7, 0xbae8, 0xbae9, - 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef, 0xbaf0, 0xfffd, - 0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5, 0xbaf6, 0xbaf7, 0xbaf8, - 0xbaf9, 0xbafa, 0xbafb, 0xfffd, - /* 0xa2 */ - 0xbafc, 0xbafd, 0xbafe, 0xbaff, 0xbb00, 0xbb01, 0xbb02, 0xbb03, - 0xbb04, 0xbb05, 0xbb06, 0xbb07, 0xbb08, 0xbb09, 0xbb0a, 0xbb0b, - 0xbb0c, 0xfffd, 0xbb0d, 0xbb0e, 0xbb0f, 0xbb10, 0xbb11, 0xbb12, - 0xbb13, 0xbb14, 0xbb15, 0xbb16, 0xbb17, 0xfffd, 0xfffd, 0xfffd, - 0xbb18, 0xbb19, 0xbb1a, 0xbb1b, 0xbb1c, 0xbb1d, 0xbb1e, 0xbb1f, - 0xbb20, 0xbb21, 0xbb22, 0xbb23, 0xbb24, 0xbb25, 0xbb26, 0xbb27, - 0xbb28, 0xfffd, 0xbb29, 0xbb2a, 0xbb2b, 0xbb2c, 0xbb2d, 0xbb2e, - 0xbb2f, 0xbb30, 0xbb31, 0xbb32, 0xbb33, 0xfffd, 0xbb34, 0xbb35, - 0xbb36, 0xbb37, 0xbb38, 0xbb39, 0xbb3a, 0xbb3b, 0xbb3c, 0xbb3d, - 0xbb3e, 0xbb3f, 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb44, 0xfffd, - 0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49, 0xbb4a, 0xbb4b, 0xbb4c, - 0xbb4d, 0xbb4e, 0xbb4f, 0xfffd, 0xfffd, 0xfffd, 0xbb50, 0xbb51, - 0xbb52, 0xbb53, 0xbb54, 0xbb55, 0xbb56, 0xbb57, 0xbb58, 0xbb59, - 0xbb5a, 0xbb5b, 0xbb5c, 0xbb5d, 0xbb5e, 0xbb5f, 0xbb60, 0xfffd, - 0xbb61, 0xbb62, 0xbb63, 0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68, - 0xbb69, 0xbb6a, 0xbb6b, 0xfffd, 0xfffd, 0xfffd, 0xbb6c, 0xbb6d, - 0xbb6e, 0xbb6f, 0xbb70, 0xbb71, 0xbb72, 0xbb73, 0xbb74, 0xbb75, - 0xbb76, 0xbb77, 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xfffd, - 0xbb7d, 0xbb7e, 0xbb7f, 0xbb80, 0xbb81, 0xbb82, 0xbb83, 0xbb84, - 0xbb85, 0xbb86, 0xbb87, 0xfffd, 0xfffd, 0xfffd, 0xbb88, 0xbb89, - 0xbb8a, 0xbb8b, 0xbb8c, 0xbb8d, 0xbb8e, 0xbb8f, 0xbb90, 0xbb91, - 0xbb92, 0xbb93, 0xbb94, 0xbb95, 0xbb96, 0xbb97, 0xbb98, 0xfffd, - 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, 0xbb9e, 0xbb9f, 0xbba0, - 0xbba1, 0xbba2, 0xbba3, 0xfffd, - /* 0xa3 */ - 0xbba4, 0xbba5, 0xbba6, 0xbba7, 0xbba8, 0xbba9, 0xbbaa, 0xbbab, - 0xbbac, 0xbbad, 0xbbae, 0xbbaf, 0xbbb0, 0xbbb1, 0xbbb2, 0xbbb3, - 0xbbb4, 0xfffd, 0xbbb5, 0xbbb6, 0xbbb7, 0xbbb8, 0xbbb9, 0xbbba, - 0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf, 0xfffd, 0xfffd, 0xfffd, - 0xbbc0, 0xbbc1, 0xbbc2, 0xbbc3, 0xbbc4, 0xbbc5, 0xbbc6, 0xbbc7, - 0xbbc8, 0xbbc9, 0xbbca, 0xbbcb, 0xbbcc, 0xbbcd, 0xbbce, 0xbbcf, - 0xbbd0, 0xfffd, 0xbbd1, 0xbbd2, 0xbbd3, 0xbbd4, 0xbbd5, 0xbbd6, - 0xbbd7, 0xbbd8, 0xbbd9, 0xbbda, 0xbbdb, 0xfffd, 0xbbdc, 0xbbdd, - 0xbbde, 0xbbdf, 0xbbe0, 0xbbe1, 0xbbe2, 0xbbe3, 0xbbe4, 0xbbe5, - 0xbbe6, 0xbbe7, 0xbbe8, 0xbbe9, 0xbbea, 0xbbeb, 0xbbec, 0xfffd, - 0xbbed, 0xbbee, 0xbbef, 0xbbf0, 0xbbf1, 0xbbf2, 0xbbf3, 0xbbf4, - 0xbbf5, 0xbbf6, 0xbbf7, 0xfffd, 0xfffd, 0xfffd, 0xbbf8, 0xbbf9, - 0xbbfa, 0xbbfb, 0xbbfc, 0xbbfd, 0xbbfe, 0xbbff, 0xbc00, 0xbc01, - 0xbc02, 0xbc03, 0xbc04, 0xbc05, 0xbc06, 0xbc07, 0xbc08, 0xfffd, - 0xbc09, 0xbc0a, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0e, 0xbc0f, 0xbc10, - 0xbc11, 0xbc12, 0xbc13, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0xa4 */ - 0x3142, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc19, 0xbc1a, 0xbc1b, - 0xbc1c, 0xbc1d, 0xbc1e, 0xbc1f, 0xbc20, 0xbc21, 0xbc22, 0xbc23, - 0xbc24, 0xfffd, 0xbc25, 0xbc26, 0xbc27, 0xbc28, 0xbc29, 0xbc2a, - 0xbc2b, 0xbc2c, 0xbc2d, 0xbc2e, 0xbc2f, 0xfffd, 0xbc30, 0xbc31, - 0xbc32, 0xbc33, 0xbc34, 0xbc35, 0xbc36, 0xbc37, 0xbc38, 0xbc39, - 0xbc3a, 0xbc3b, 0xbc3c, 0xbc3d, 0xbc3e, 0xbc3f, 0xbc40, 0xfffd, - 0xbc41, 0xbc42, 0xbc43, 0xbc44, 0xbc45, 0xbc46, 0xbc47, 0xbc48, - 0xbc49, 0xbc4a, 0xbc4b, 0xfffd, 0xfffd, 0xfffd, 0xbc4c, 0xbc4d, - 0xbc4e, 0xbc4f, 0xbc50, 0xbc51, 0xbc52, 0xbc53, 0xbc54, 0xbc55, - 0xbc56, 0xbc57, 0xbc58, 0xbc59, 0xbc5a, 0xbc5b, 0xbc5c, 0xfffd, - 0xbc5d, 0xbc5e, 0xbc5f, 0xbc60, 0xbc61, 0xbc62, 0xbc63, 0xbc64, - 0xbc65, 0xbc66, 0xbc67, 0xfffd, 0xfffd, 0xfffd, 0xbc68, 0xbc69, - 0xbc6a, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, 0xbc6f, 0xbc70, 0xbc71, - 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, 0xbc77, 0xbc78, 0xfffd, - 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, 0xbc7e, 0xbc7f, 0xbc80, - 0xbc81, 0xbc82, 0xbc83, 0xfffd, 0xfffd, 0xfffd, 0xbc84, 0xbc85, - 0xbc86, 0xbc87, 0xbc88, 0xbc89, 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8d, - 0xbc8e, 0xbc8f, 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbc94, 0xfffd, - 0xbc95, 0xbc96, 0xbc97, 0xbc98, 0xbc99, 0xbc9a, 0xbc9b, 0xbc9c, - 0xbc9d, 0xbc9e, 0xbc9f, 0xfffd, - /* 0xa5 */ - 0xbca0, 0xbca1, 0xbca2, 0xbca3, 0xbca4, 0xbca5, 0xbca6, 0xbca7, - 0xbca8, 0xbca9, 0xbcaa, 0xbcab, 0xbcac, 0xbcad, 0xbcae, 0xbcaf, - 0xbcb0, 0xfffd, 0xbcb1, 0xbcb2, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcb6, - 0xbcb7, 0xbcb8, 0xbcb9, 0xbcba, 0xbcbb, 0xfffd, 0xfffd, 0xfffd, - 0xbcbc, 0xbcbd, 0xbcbe, 0xbcbf, 0xbcc0, 0xbcc1, 0xbcc2, 0xbcc3, - 0xbcc4, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, 0xbcc9, 0xbcca, 0xbccb, - 0xbccc, 0xfffd, 0xbccd, 0xbcce, 0xbccf, 0xbcd0, 0xbcd1, 0xbcd2, - 0xbcd3, 0xbcd4, 0xbcd5, 0xbcd6, 0xbcd7, 0xfffd, 0xbcd8, 0xbcd9, - 0xbcda, 0xbcdb, 0xbcdc, 0xbcdd, 0xbcde, 0xbcdf, 0xbce0, 0xbce1, - 0xbce2, 0xbce3, 0xbce4, 0xbce5, 0xbce6, 0xbce7, 0xbce8, 0xfffd, - 0xbce9, 0xbcea, 0xbceb, 0xbcec, 0xbced, 0xbcee, 0xbcef, 0xbcf0, - 0xbcf1, 0xbcf2, 0xbcf3, 0xfffd, 0xfffd, 0xfffd, 0xbcf4, 0xbcf5, - 0xbcf6, 0xbcf7, 0xbcf8, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfc, 0xbcfd, - 0xbcfe, 0xbcff, 0xbd00, 0xbd01, 0xbd02, 0xbd03, 0xbd04, 0xfffd, - 0xbd05, 0xbd06, 0xbd07, 0xbd08, 0xbd09, 0xbd0a, 0xbd0b, 0xbd0c, - 0xbd0d, 0xbd0e, 0xbd0f, 0xfffd, 0xfffd, 0xfffd, 0xbd10, 0xbd11, - 0xbd12, 0xbd13, 0xbd14, 0xbd15, 0xbd16, 0xbd17, 0xbd18, 0xbd19, - 0xbd1a, 0xbd1b, 0xbd1c, 0xbd1d, 0xbd1e, 0xbd1f, 0xbd20, 0xfffd, - 0xbd21, 0xbd22, 0xbd23, 0xbd24, 0xbd25, 0xbd26, 0xbd27, 0xbd28, - 0xbd29, 0xbd2a, 0xbd2b, 0xfffd, 0xfffd, 0xfffd, 0xbd2c, 0xbd2d, - 0xbd2e, 0xbd2f, 0xbd30, 0xbd31, 0xbd32, 0xbd33, 0xbd34, 0xbd35, - 0xbd36, 0xbd37, 0xbd38, 0xbd39, 0xbd3a, 0xbd3b, 0xbd3c, 0xfffd, - 0xbd3d, 0xbd3e, 0xbd3f, 0xbd40, 0xbd41, 0xbd42, 0xbd43, 0xbd44, - 0xbd45, 0xbd46, 0xbd47, 0xfffd, - /* 0xa6 */ - 0xbd48, 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, 0xbd4f, - 0xbd50, 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, - 0xbd58, 0xfffd, 0xbd59, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, - 0xbd5f, 0xbd60, 0xbd61, 0xbd62, 0xbd63, 0xfffd, 0xfffd, 0xfffd, - 0xbd64, 0xbd65, 0xbd66, 0xbd67, 0xbd68, 0xbd69, 0xbd6a, 0xbd6b, - 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, 0xbd71, 0xbd72, 0xbd73, - 0xbd74, 0xfffd, 0xbd75, 0xbd76, 0xbd77, 0xbd78, 0xbd79, 0xbd7a, - 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xbd7f, 0xfffd, 0xbd80, 0xbd81, - 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xbd87, 0xbd88, 0xbd89, - 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, 0xbd90, 0xfffd, - 0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97, 0xbd98, - 0xbd99, 0xbd9a, 0xbd9b, 0xfffd, 0xfffd, 0xfffd, 0xbd9c, 0xbd9d, - 0xbd9e, 0xbd9f, 0xbda0, 0xbda1, 0xbda2, 0xbda3, 0xbda4, 0xbda5, - 0xbda6, 0xbda7, 0xbda8, 0xbda9, 0xbdaa, 0xbdab, 0xbdac, 0xfffd, - 0xbdad, 0xbdae, 0xbdaf, 0xbdb0, 0xbdb1, 0xbdb2, 0xbdb3, 0xbdb4, - 0xbdb5, 0xbdb6, 0xbdb7, 0xfffd, 0xfffd, 0xfffd, 0xbdb8, 0xbdb9, - 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd, 0xbdbe, 0xbdbf, 0xbdc0, 0xbdc1, - 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6, 0xbdc7, 0xbdc8, 0xfffd, - 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc, 0xbdcd, 0xbdce, 0xbdcf, 0xbdd0, - 0xbdd1, 0xbdd2, 0xbdd3, 0xfffd, 0xfffd, 0xfffd, 0xbdd4, 0xbdd5, - 0xbdd6, 0xbdd7, 0xbdd8, 0xbdd9, 0xbdda, 0xbddb, 0xbddc, 0xbddd, - 0xbdde, 0xbddf, 0xbde0, 0xbde1, 0xbde2, 0xbde3, 0xbde4, 0xfffd, - 0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbde9, 0xbdea, 0xbdeb, 0xbdec, - 0xbded, 0xbdee, 0xbdef, 0xfffd, - /* 0xa7 */ - 0xbdf0, 0xbdf1, 0xbdf2, 0xbdf3, 0xbdf4, 0xbdf5, 0xbdf6, 0xbdf7, - 0xbdf8, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe, 0xbdff, - 0xbe00, 0xfffd, 0xbe01, 0xbe02, 0xbe03, 0xbe04, 0xbe05, 0xbe06, - 0xbe07, 0xbe08, 0xbe09, 0xbe0a, 0xbe0b, 0xfffd, 0xfffd, 0xfffd, - 0xbe0c, 0xbe0d, 0xbe0e, 0xbe0f, 0xbe10, 0xbe11, 0xbe12, 0xbe13, - 0xbe14, 0xbe15, 0xbe16, 0xbe17, 0xbe18, 0xbe19, 0xbe1a, 0xbe1b, - 0xbe1c, 0xfffd, 0xbe1d, 0xbe1e, 0xbe1f, 0xbe20, 0xbe21, 0xbe22, - 0xbe23, 0xbe24, 0xbe25, 0xbe26, 0xbe27, 0xfffd, 0xbe28, 0xbe29, - 0xbe2a, 0xbe2b, 0xbe2c, 0xbe2d, 0xbe2e, 0xbe2f, 0xbe30, 0xbe31, - 0xbe32, 0xbe33, 0xbe34, 0xbe35, 0xbe36, 0xbe37, 0xbe38, 0xfffd, - 0xbe39, 0xbe3a, 0xbe3b, 0xbe3c, 0xbe3d, 0xbe3e, 0xbe3f, 0xbe40, - 0xbe41, 0xbe42, 0xbe43, 0xfffd, 0xfffd, 0xfffd, 0xbe44, 0xbe45, - 0xbe46, 0xbe47, 0xbe48, 0xbe49, 0xbe4a, 0xbe4b, 0xbe4c, 0xbe4d, - 0xbe4e, 0xbe4f, 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xbe54, 0xfffd, - 0xbe55, 0xbe56, 0xbe57, 0xbe58, 0xbe59, 0xbe5a, 0xbe5b, 0xbe5c, - 0xbe5d, 0xbe5e, 0xbe5f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0xa8 */ - 0x3143, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xbe60, 0xbe61, 0xbe62, 0xbe63, 0xbe64, 0xbe65, 0xbe66, 0xbe67, - 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, 0xbe6d, 0xbe6e, 0xbe6f, - 0xbe70, 0xfffd, 0xbe71, 0xbe72, 0xbe73, 0xbe74, 0xbe75, 0xbe76, - 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0xfffd, 0xbe7c, 0xbe7d, - 0xbe7e, 0xbe7f, 0xbe80, 0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85, - 0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8c, 0xfffd, - 0xbe8d, 0xbe8e, 0xbe8f, 0xbe90, 0xbe91, 0xbe92, 0xbe93, 0xbe94, - 0xbe95, 0xbe96, 0xbe97, 0xfffd, 0xfffd, 0xfffd, 0xbe98, 0xbe99, - 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e, 0xbe9f, 0xbea0, 0xbea1, - 0xbea2, 0xbea3, 0xbea4, 0xbea5, 0xbea6, 0xbea7, 0xbea8, 0xfffd, - 0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead, 0xbeae, 0xbeaf, 0xbeb0, - 0xbeb1, 0xbeb2, 0xbeb3, 0xfffd, 0xfffd, 0xfffd, 0xbeb4, 0xbeb5, - 0xbeb6, 0xbeb7, 0xbeb8, 0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd, - 0xbebe, 0xbebf, 0xbec0, 0xbec1, 0xbec2, 0xbec3, 0xbec4, 0xfffd, - 0xbec5, 0xbec6, 0xbec7, 0xbec8, 0xbec9, 0xbeca, 0xbecb, 0xbecc, - 0xbecd, 0xbece, 0xbecf, 0xfffd, 0xfffd, 0xfffd, 0xbed0, 0xbed1, - 0xbed2, 0xbed3, 0xbed4, 0xbed5, 0xbed6, 0xbed7, 0xbed8, 0xbed9, - 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbede, 0xbedf, 0xbee0, 0xfffd, - 0xbee1, 0xbee2, 0xbee3, 0xbee4, 0xbee5, 0xbee6, 0xbee7, 0xbee8, - 0xbee9, 0xbeea, 0xbeeb, 0xfffd, - /* 0xa9 */ - 0xbeec, 0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef2, 0xbef3, - 0xbef4, 0xbef5, 0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa, 0xbefb, - 0xbefc, 0xfffd, 0xbefd, 0xbefe, 0xbeff, 0xbf00, 0xbf01, 0xbf02, - 0xbf03, 0xbf04, 0xbf05, 0xbf06, 0xbf07, 0xfffd, 0xfffd, 0xfffd, - 0xbf08, 0xbf09, 0xbf0a, 0xbf0b, 0xbf0c, 0xbf0d, 0xbf0e, 0xbf0f, - 0xbf10, 0xbf11, 0xbf12, 0xbf13, 0xbf14, 0xbf15, 0xbf16, 0xbf17, - 0xbf18, 0xfffd, 0xbf19, 0xbf1a, 0xbf1b, 0xbf1c, 0xbf1d, 0xbf1e, - 0xbf1f, 0xbf20, 0xbf21, 0xbf22, 0xbf23, 0xfffd, 0xbf24, 0xbf25, - 0xbf26, 0xbf27, 0xbf28, 0xbf29, 0xbf2a, 0xbf2b, 0xbf2c, 0xbf2d, - 0xbf2e, 0xbf2f, 0xbf30, 0xbf31, 0xbf32, 0xbf33, 0xbf34, 0xfffd, - 0xbf35, 0xbf36, 0xbf37, 0xbf38, 0xbf39, 0xbf3a, 0xbf3b, 0xbf3c, - 0xbf3d, 0xbf3e, 0xbf3f, 0xfffd, 0xfffd, 0xfffd, 0xbf40, 0xbf41, - 0xbf42, 0xbf43, 0xbf44, 0xbf45, 0xbf46, 0xbf47, 0xbf48, 0xbf49, - 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f, 0xbf50, 0xfffd, - 0xbf51, 0xbf52, 0xbf53, 0xbf54, 0xbf55, 0xbf56, 0xbf57, 0xbf58, - 0xbf59, 0xbf5a, 0xbf5b, 0xfffd, 0xfffd, 0xfffd, 0xbf5c, 0xbf5d, - 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62, 0xbf63, 0xbf64, 0xbf65, - 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, 0xfffd, - 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf72, 0xbf73, 0xbf74, - 0xbf75, 0xbf76, 0xbf77, 0xfffd, 0xfffd, 0xfffd, 0xbf78, 0xbf79, - 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, 0xbf7e, 0xbf7f, 0xbf80, 0xbf81, - 0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xbf87, 0xbf88, 0xfffd, - 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90, - 0xbf91, 0xbf92, 0xbf93, 0xfffd, - /* 0xaa */ - 0xbf94, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a, 0xbf9b, - 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0, 0xbfa1, 0xbfa2, 0xbfa3, - 0xbfa4, 0xfffd, 0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9, 0xbfaa, - 0xbfab, 0xbfac, 0xbfad, 0xbfae, 0xbfaf, 0xfffd, 0xfffd, 0xfffd, - 0xbfb0, 0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4, 0xbfb5, 0xbfb6, 0xbfb7, - 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe, 0xbfbf, - 0xbfc0, 0xfffd, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc5, 0xbfc6, - 0xbfc7, 0xbfc8, 0xbfc9, 0xbfca, 0xbfcb, 0xfffd, 0xbfcc, 0xbfcd, - 0xbfce, 0xbfcf, 0xbfd0, 0xbfd1, 0xbfd2, 0xbfd3, 0xbfd4, 0xbfd5, - 0xbfd6, 0xbfd7, 0xbfd8, 0xbfd9, 0xbfda, 0xbfdb, 0xbfdc, 0xfffd, - 0xbfdd, 0xbfde, 0xbfdf, 0xbfe0, 0xbfe1, 0xbfe2, 0xbfe3, 0xbfe4, - 0xbfe5, 0xbfe6, 0xbfe7, 0xfffd, 0xfffd, 0xfffd, 0xbfe8, 0xbfe9, - 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee, 0xbfef, 0xbff0, 0xbff1, - 0xbff2, 0xbff3, 0xbff4, 0xbff5, 0xbff6, 0xbff7, 0xbff8, 0xfffd, - 0xbff9, 0xbffa, 0xbffb, 0xbffc, 0xbffd, 0xbffe, 0xbfff, 0xc000, - 0xc001, 0xc002, 0xc003, 0xfffd, 0xfffd, 0xfffd, 0xc004, 0xc005, - 0xc006, 0xc007, 0xc008, 0xc009, 0xc00a, 0xc00b, 0xc00c, 0xc00d, - 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc012, 0xc013, 0xc014, 0xfffd, - 0xc015, 0xc016, 0xc017, 0xc018, 0xc019, 0xc01a, 0xc01b, 0xc01c, - 0xc01d, 0xc01e, 0xc01f, 0xfffd, 0xfffd, 0xfffd, 0xc020, 0xc021, - 0xc022, 0xc023, 0xc024, 0xc025, 0xc026, 0xc027, 0xc028, 0xc029, - 0xc02a, 0xc02b, 0xc02c, 0xc02d, 0xc02e, 0xc02f, 0xc030, 0xfffd, - 0xc031, 0xc032, 0xc033, 0xc034, 0xc035, 0xc036, 0xc037, 0xc038, - 0xc039, 0xc03a, 0xc03b, 0xfffd, - /* 0xab */ - 0xc03c, 0xc03d, 0xc03e, 0xc03f, 0xc040, 0xc041, 0xc042, 0xc043, - 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049, 0xc04a, 0xc04b, - 0xc04c, 0xfffd, 0xc04d, 0xc04e, 0xc04f, 0xc050, 0xc051, 0xc052, - 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0xfffd, 0xfffd, 0xfffd, - 0xc058, 0xc059, 0xc05a, 0xc05b, 0xc05c, 0xc05d, 0xc05e, 0xc05f, - 0xc060, 0xc061, 0xc062, 0xc063, 0xc064, 0xc065, 0xc066, 0xc067, - 0xc068, 0xfffd, 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, - 0xc06f, 0xc070, 0xc071, 0xc072, 0xc073, 0xfffd, 0xc074, 0xc075, - 0xc076, 0xc077, 0xc078, 0xc079, 0xc07a, 0xc07b, 0xc07c, 0xc07d, - 0xc07e, 0xc07f, 0xc080, 0xc081, 0xc082, 0xc083, 0xc084, 0xfffd, - 0xc085, 0xc086, 0xc087, 0xc088, 0xc089, 0xc08a, 0xc08b, 0xc08c, - 0xc08d, 0xc08e, 0xc08f, 0xfffd, 0xfffd, 0xfffd, 0xc090, 0xc091, - 0xc092, 0xc093, 0xc094, 0xc095, 0xc096, 0xc097, 0xc098, 0xc099, - 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, 0xc09f, 0xc0a0, 0xfffd, - 0xc0a1, 0xc0a2, 0xc0a3, 0xc0a4, 0xc0a5, 0xc0a6, 0xc0a7, 0xc0a8, - 0xc0a9, 0xc0aa, 0xc0ab, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0xac */ - 0x3145, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xc0ac, 0xc0ad, 0xc0ae, 0xc0af, 0xc0b0, 0xc0b1, 0xc0b2, 0xc0b3, - 0xc0b4, 0xc0b5, 0xc0b6, 0xc0b7, 0xc0b8, 0xc0b9, 0xc0ba, 0xc0bb, - 0xc0bc, 0xfffd, 0xc0bd, 0xc0be, 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c2, - 0xc0c3, 0xc0c4, 0xc0c5, 0xc0c6, 0xc0c7, 0xfffd, 0xc0c8, 0xc0c9, - 0xc0ca, 0xc0cb, 0xc0cc, 0xc0cd, 0xc0ce, 0xc0cf, 0xc0d0, 0xc0d1, - 0xc0d2, 0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6, 0xc0d7, 0xc0d8, 0xfffd, - 0xc0d9, 0xc0da, 0xc0db, 0xc0dc, 0xc0dd, 0xc0de, 0xc0df, 0xc0e0, - 0xc0e1, 0xc0e2, 0xc0e3, 0xfffd, 0xfffd, 0xfffd, 0xc0e4, 0xc0e5, - 0xc0e6, 0xc0e7, 0xc0e8, 0xc0e9, 0xc0ea, 0xc0eb, 0xc0ec, 0xc0ed, - 0xc0ee, 0xc0ef, 0xc0f0, 0xc0f1, 0xc0f2, 0xc0f3, 0xc0f4, 0xfffd, - 0xc0f5, 0xc0f6, 0xc0f7, 0xc0f8, 0xc0f9, 0xc0fa, 0xc0fb, 0xc0fc, - 0xc0fd, 0xc0fe, 0xc0ff, 0xfffd, 0xfffd, 0xfffd, 0xc100, 0xc101, - 0xc102, 0xc103, 0xc104, 0xc105, 0xc106, 0xc107, 0xc108, 0xc109, - 0xc10a, 0xc10b, 0xc10c, 0xc10d, 0xc10e, 0xc10f, 0xc110, 0xfffd, - 0xc111, 0xc112, 0xc113, 0xc114, 0xc115, 0xc116, 0xc117, 0xc118, - 0xc119, 0xc11a, 0xc11b, 0xfffd, 0xfffd, 0xfffd, 0xc11c, 0xc11d, - 0xc11e, 0xc11f, 0xc120, 0xc121, 0xc122, 0xc123, 0xc124, 0xc125, - 0xc126, 0xc127, 0xc128, 0xc129, 0xc12a, 0xc12b, 0xc12c, 0xfffd, - 0xc12d, 0xc12e, 0xc12f, 0xc130, 0xc131, 0xc132, 0xc133, 0xc134, - 0xc135, 0xc136, 0xc137, 0xfffd, - /* 0xad */ - 0xc138, 0xc139, 0xc13a, 0xc13b, 0xc13c, 0xc13d, 0xc13e, 0xc13f, - 0xc140, 0xc141, 0xc142, 0xc143, 0xc144, 0xc145, 0xc146, 0xc147, - 0xc148, 0xfffd, 0xc149, 0xc14a, 0xc14b, 0xc14c, 0xc14d, 0xc14e, - 0xc14f, 0xc150, 0xc151, 0xc152, 0xc153, 0xfffd, 0xfffd, 0xfffd, - 0xc154, 0xc155, 0xc156, 0xc157, 0xc158, 0xc159, 0xc15a, 0xc15b, - 0xc15c, 0xc15d, 0xc15e, 0xc15f, 0xc160, 0xc161, 0xc162, 0xc163, - 0xc164, 0xfffd, 0xc165, 0xc166, 0xc167, 0xc168, 0xc169, 0xc16a, - 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, 0xfffd, 0xc170, 0xc171, - 0xc172, 0xc173, 0xc174, 0xc175, 0xc176, 0xc177, 0xc178, 0xc179, - 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc17e, 0xc17f, 0xc180, 0xfffd, - 0xc181, 0xc182, 0xc183, 0xc184, 0xc185, 0xc186, 0xc187, 0xc188, - 0xc189, 0xc18a, 0xc18b, 0xfffd, 0xfffd, 0xfffd, 0xc18c, 0xc18d, - 0xc18e, 0xc18f, 0xc190, 0xc191, 0xc192, 0xc193, 0xc194, 0xc195, - 0xc196, 0xc197, 0xc198, 0xc199, 0xc19a, 0xc19b, 0xc19c, 0xfffd, - 0xc19d, 0xc19e, 0xc19f, 0xc1a0, 0xc1a1, 0xc1a2, 0xc1a3, 0xc1a4, - 0xc1a5, 0xc1a6, 0xc1a7, 0xfffd, 0xfffd, 0xfffd, 0xc1a8, 0xc1a9, - 0xc1aa, 0xc1ab, 0xc1ac, 0xc1ad, 0xc1ae, 0xc1af, 0xc1b0, 0xc1b1, - 0xc1b2, 0xc1b3, 0xc1b4, 0xc1b5, 0xc1b6, 0xc1b7, 0xc1b8, 0xfffd, - 0xc1b9, 0xc1ba, 0xc1bb, 0xc1bc, 0xc1bd, 0xc1be, 0xc1bf, 0xc1c0, - 0xc1c1, 0xc1c2, 0xc1c3, 0xfffd, 0xfffd, 0xfffd, 0xc1c4, 0xc1c5, - 0xc1c6, 0xc1c7, 0xc1c8, 0xc1c9, 0xc1ca, 0xc1cb, 0xc1cc, 0xc1cd, - 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d2, 0xc1d3, 0xc1d4, 0xfffd, - 0xc1d5, 0xc1d6, 0xc1d7, 0xc1d8, 0xc1d9, 0xc1da, 0xc1db, 0xc1dc, - 0xc1dd, 0xc1de, 0xc1df, 0xfffd, - /* 0xae */ - 0xc1e0, 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e4, 0xc1e5, 0xc1e6, 0xc1e7, - 0xc1e8, 0xc1e9, 0xc1ea, 0xc1eb, 0xc1ec, 0xc1ed, 0xc1ee, 0xc1ef, - 0xc1f0, 0xfffd, 0xc1f1, 0xc1f2, 0xc1f3, 0xc1f4, 0xc1f5, 0xc1f6, - 0xc1f7, 0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0xfffd, 0xfffd, 0xfffd, - 0xc1fc, 0xc1fd, 0xc1fe, 0xc1ff, 0xc200, 0xc201, 0xc202, 0xc203, - 0xc204, 0xc205, 0xc206, 0xc207, 0xc208, 0xc209, 0xc20a, 0xc20b, - 0xc20c, 0xfffd, 0xc20d, 0xc20e, 0xc20f, 0xc210, 0xc211, 0xc212, - 0xc213, 0xc214, 0xc215, 0xc216, 0xc217, 0xfffd, 0xc218, 0xc219, - 0xc21a, 0xc21b, 0xc21c, 0xc21d, 0xc21e, 0xc21f, 0xc220, 0xc221, - 0xc222, 0xc223, 0xc224, 0xc225, 0xc226, 0xc227, 0xc228, 0xfffd, - 0xc229, 0xc22a, 0xc22b, 0xc22c, 0xc22d, 0xc22e, 0xc22f, 0xc230, - 0xc231, 0xc232, 0xc233, 0xfffd, 0xfffd, 0xfffd, 0xc234, 0xc235, - 0xc236, 0xc237, 0xc238, 0xc239, 0xc23a, 0xc23b, 0xc23c, 0xc23d, - 0xc23e, 0xc23f, 0xc240, 0xc241, 0xc242, 0xc243, 0xc244, 0xfffd, - 0xc245, 0xc246, 0xc247, 0xc248, 0xc249, 0xc24a, 0xc24b, 0xc24c, - 0xc24d, 0xc24e, 0xc24f, 0xfffd, 0xfffd, 0xfffd, 0xc250, 0xc251, - 0xc252, 0xc253, 0xc254, 0xc255, 0xc256, 0xc257, 0xc258, 0xc259, - 0xc25a, 0xc25b, 0xc25c, 0xc25d, 0xc25e, 0xc25f, 0xc260, 0xfffd, - 0xc261, 0xc262, 0xc263, 0xc264, 0xc265, 0xc266, 0xc267, 0xc268, - 0xc269, 0xc26a, 0xc26b, 0xfffd, 0xfffd, 0xfffd, 0xc26c, 0xc26d, - 0xc26e, 0xc26f, 0xc270, 0xc271, 0xc272, 0xc273, 0xc274, 0xc275, - 0xc276, 0xc277, 0xc278, 0xc279, 0xc27a, 0xc27b, 0xc27c, 0xfffd, - 0xc27d, 0xc27e, 0xc27f, 0xc280, 0xc281, 0xc282, 0xc283, 0xc284, - 0xc285, 0xc286, 0xc287, 0xfffd, - /* 0xaf */ - 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, 0xc28d, 0xc28e, 0xc28f, - 0xc290, 0xc291, 0xc292, 0xc293, 0xc294, 0xc295, 0xc296, 0xc297, - 0xc298, 0xfffd, 0xc299, 0xc29a, 0xc29b, 0xc29c, 0xc29d, 0xc29e, - 0xc29f, 0xc2a0, 0xc2a1, 0xc2a2, 0xc2a3, 0xfffd, 0xfffd, 0xfffd, - 0xc2a4, 0xc2a5, 0xc2a6, 0xc2a7, 0xc2a8, 0xc2a9, 0xc2aa, 0xc2ab, - 0xc2ac, 0xc2ad, 0xc2ae, 0xc2af, 0xc2b0, 0xc2b1, 0xc2b2, 0xc2b3, - 0xc2b4, 0xfffd, 0xc2b5, 0xc2b6, 0xc2b7, 0xc2b8, 0xc2b9, 0xc2ba, - 0xc2bb, 0xc2bc, 0xc2bd, 0xc2be, 0xc2bf, 0xfffd, 0xc2c0, 0xc2c1, - 0xc2c2, 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c6, 0xc2c7, 0xc2c8, 0xc2c9, - 0xc2ca, 0xc2cb, 0xc2cc, 0xc2cd, 0xc2ce, 0xc2cf, 0xc2d0, 0xfffd, - 0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4, 0xc2d5, 0xc2d6, 0xc2d7, 0xc2d8, - 0xc2d9, 0xc2da, 0xc2db, 0xfffd, 0xfffd, 0xfffd, 0xc2dc, 0xc2dd, - 0xc2de, 0xc2df, 0xc2e0, 0xc2e1, 0xc2e2, 0xc2e3, 0xc2e4, 0xc2e5, - 0xc2e6, 0xc2e7, 0xc2e8, 0xc2e9, 0xc2ea, 0xc2eb, 0xc2ec, 0xfffd, - 0xc2ed, 0xc2ee, 0xc2ef, 0xc2f0, 0xc2f1, 0xc2f2, 0xc2f3, 0xc2f4, - 0xc2f5, 0xc2f6, 0xc2f7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0xb0 */ - 0x3146, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xc2f8, 0xc2f9, 0xc2fa, 0xc2fb, 0xc2fc, 0xc2fd, 0xc2fe, 0xc2ff, - 0xc300, 0xc301, 0xc302, 0xc303, 0xc304, 0xc305, 0xc306, 0xc307, - 0xc308, 0xfffd, 0xc309, 0xc30a, 0xc30b, 0xc30c, 0xc30d, 0xc30e, - 0xc30f, 0xc310, 0xc311, 0xc312, 0xc313, 0xfffd, 0xc314, 0xc315, - 0xc316, 0xc317, 0xc318, 0xc319, 0xc31a, 0xc31b, 0xc31c, 0xc31d, - 0xc31e, 0xc31f, 0xc320, 0xc321, 0xc322, 0xc323, 0xc324, 0xfffd, - 0xc325, 0xc326, 0xc327, 0xc328, 0xc329, 0xc32a, 0xc32b, 0xc32c, - 0xc32d, 0xc32e, 0xc32f, 0xfffd, 0xfffd, 0xfffd, 0xc330, 0xc331, - 0xc332, 0xc333, 0xc334, 0xc335, 0xc336, 0xc337, 0xc338, 0xc339, - 0xc33a, 0xc33b, 0xc33c, 0xc33d, 0xc33e, 0xc33f, 0xc340, 0xfffd, - 0xc341, 0xc342, 0xc343, 0xc344, 0xc345, 0xc346, 0xc347, 0xc348, - 0xc349, 0xc34a, 0xc34b, 0xfffd, 0xfffd, 0xfffd, 0xc34c, 0xc34d, - 0xc34e, 0xc34f, 0xc350, 0xc351, 0xc352, 0xc353, 0xc354, 0xc355, - 0xc356, 0xc357, 0xc358, 0xc359, 0xc35a, 0xc35b, 0xc35c, 0xfffd, - 0xc35d, 0xc35e, 0xc35f, 0xc360, 0xc361, 0xc362, 0xc363, 0xc364, - 0xc365, 0xc366, 0xc367, 0xfffd, 0xfffd, 0xfffd, 0xc368, 0xc369, - 0xc36a, 0xc36b, 0xc36c, 0xc36d, 0xc36e, 0xc36f, 0xc370, 0xc371, - 0xc372, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377, 0xc378, 0xfffd, - 0xc379, 0xc37a, 0xc37b, 0xc37c, 0xc37d, 0xc37e, 0xc37f, 0xc380, - 0xc381, 0xc382, 0xc383, 0xfffd, - /* 0xb1 */ - 0xc384, 0xc385, 0xc386, 0xc387, 0xc388, 0xc389, 0xc38a, 0xc38b, - 0xc38c, 0xc38d, 0xc38e, 0xc38f, 0xc390, 0xc391, 0xc392, 0xc393, - 0xc394, 0xfffd, 0xc395, 0xc396, 0xc397, 0xc398, 0xc399, 0xc39a, - 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0xfffd, 0xfffd, 0xfffd, - 0xc3a0, 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4, 0xc3a5, 0xc3a6, 0xc3a7, - 0xc3a8, 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae, 0xc3af, - 0xc3b0, 0xfffd, 0xc3b1, 0xc3b2, 0xc3b3, 0xc3b4, 0xc3b5, 0xc3b6, - 0xc3b7, 0xc3b8, 0xc3b9, 0xc3ba, 0xc3bb, 0xfffd, 0xc3bc, 0xc3bd, - 0xc3be, 0xc3bf, 0xc3c0, 0xc3c1, 0xc3c2, 0xc3c3, 0xc3c4, 0xc3c5, - 0xc3c6, 0xc3c7, 0xc3c8, 0xc3c9, 0xc3ca, 0xc3cb, 0xc3cc, 0xfffd, - 0xc3cd, 0xc3ce, 0xc3cf, 0xc3d0, 0xc3d1, 0xc3d2, 0xc3d3, 0xc3d4, - 0xc3d5, 0xc3d6, 0xc3d7, 0xfffd, 0xfffd, 0xfffd, 0xc3d8, 0xc3d9, - 0xc3da, 0xc3db, 0xc3dc, 0xc3dd, 0xc3de, 0xc3df, 0xc3e0, 0xc3e1, - 0xc3e2, 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e6, 0xc3e7, 0xc3e8, 0xfffd, - 0xc3e9, 0xc3ea, 0xc3eb, 0xc3ec, 0xc3ed, 0xc3ee, 0xc3ef, 0xc3f0, - 0xc3f1, 0xc3f2, 0xc3f3, 0xfffd, 0xfffd, 0xfffd, 0xc3f4, 0xc3f5, - 0xc3f6, 0xc3f7, 0xc3f8, 0xc3f9, 0xc3fa, 0xc3fb, 0xc3fc, 0xc3fd, - 0xc3fe, 0xc3ff, 0xc400, 0xc401, 0xc402, 0xc403, 0xc404, 0xfffd, - 0xc405, 0xc406, 0xc407, 0xc408, 0xc409, 0xc40a, 0xc40b, 0xc40c, - 0xc40d, 0xc40e, 0xc40f, 0xfffd, 0xfffd, 0xfffd, 0xc410, 0xc411, - 0xc412, 0xc413, 0xc414, 0xc415, 0xc416, 0xc417, 0xc418, 0xc419, - 0xc41a, 0xc41b, 0xc41c, 0xc41d, 0xc41e, 0xc41f, 0xc420, 0xfffd, - 0xc421, 0xc422, 0xc423, 0xc424, 0xc425, 0xc426, 0xc427, 0xc428, - 0xc429, 0xc42a, 0xc42b, 0xfffd, - /* 0xb2 */ - 0xc42c, 0xc42d, 0xc42e, 0xc42f, 0xc430, 0xc431, 0xc432, 0xc433, - 0xc434, 0xc435, 0xc436, 0xc437, 0xc438, 0xc439, 0xc43a, 0xc43b, - 0xc43c, 0xfffd, 0xc43d, 0xc43e, 0xc43f, 0xc440, 0xc441, 0xc442, - 0xc443, 0xc444, 0xc445, 0xc446, 0xc447, 0xfffd, 0xfffd, 0xfffd, - 0xc448, 0xc449, 0xc44a, 0xc44b, 0xc44c, 0xc44d, 0xc44e, 0xc44f, - 0xc450, 0xc451, 0xc452, 0xc453, 0xc454, 0xc455, 0xc456, 0xc457, - 0xc458, 0xfffd, 0xc459, 0xc45a, 0xc45b, 0xc45c, 0xc45d, 0xc45e, - 0xc45f, 0xc460, 0xc461, 0xc462, 0xc463, 0xfffd, 0xc464, 0xc465, - 0xc466, 0xc467, 0xc468, 0xc469, 0xc46a, 0xc46b, 0xc46c, 0xc46d, - 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc472, 0xc473, 0xc474, 0xfffd, - 0xc475, 0xc476, 0xc477, 0xc478, 0xc479, 0xc47a, 0xc47b, 0xc47c, - 0xc47d, 0xc47e, 0xc47f, 0xfffd, 0xfffd, 0xfffd, 0xc480, 0xc481, - 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, 0xc487, 0xc488, 0xc489, - 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, 0xc48f, 0xc490, 0xfffd, - 0xc491, 0xc492, 0xc493, 0xc494, 0xc495, 0xc496, 0xc497, 0xc498, - 0xc499, 0xc49a, 0xc49b, 0xfffd, 0xfffd, 0xfffd, 0xc49c, 0xc49d, - 0xc49e, 0xc49f, 0xc4a0, 0xc4a1, 0xc4a2, 0xc4a3, 0xc4a4, 0xc4a5, - 0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0xc4aa, 0xc4ab, 0xc4ac, 0xfffd, - 0xc4ad, 0xc4ae, 0xc4af, 0xc4b0, 0xc4b1, 0xc4b2, 0xc4b3, 0xc4b4, - 0xc4b5, 0xc4b6, 0xc4b7, 0xfffd, 0xfffd, 0xfffd, 0xc4b8, 0xc4b9, - 0xc4ba, 0xc4bb, 0xc4bc, 0xc4bd, 0xc4be, 0xc4bf, 0xc4c0, 0xc4c1, - 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5, 0xc4c6, 0xc4c7, 0xc4c8, 0xfffd, - 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, 0xc4ce, 0xc4cf, 0xc4d0, - 0xc4d1, 0xc4d2, 0xc4d3, 0xfffd, - /* 0xb3 */ - 0xc4d4, 0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9, 0xc4da, 0xc4db, - 0xc4dc, 0xc4dd, 0xc4de, 0xc4df, 0xc4e0, 0xc4e1, 0xc4e2, 0xc4e3, - 0xc4e4, 0xfffd, 0xc4e5, 0xc4e6, 0xc4e7, 0xc4e8, 0xc4e9, 0xc4ea, - 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef, 0xfffd, 0xfffd, 0xfffd, - 0xc4f0, 0xc4f1, 0xc4f2, 0xc4f3, 0xc4f4, 0xc4f5, 0xc4f6, 0xc4f7, - 0xc4f8, 0xc4f9, 0xc4fa, 0xc4fb, 0xc4fc, 0xc4fd, 0xc4fe, 0xc4ff, - 0xc500, 0xfffd, 0xc501, 0xc502, 0xc503, 0xc504, 0xc505, 0xc506, - 0xc507, 0xc508, 0xc509, 0xc50a, 0xc50b, 0xfffd, 0xc50c, 0xc50d, - 0xc50e, 0xc50f, 0xc510, 0xc511, 0xc512, 0xc513, 0xc514, 0xc515, - 0xc516, 0xc517, 0xc518, 0xc519, 0xc51a, 0xc51b, 0xc51c, 0xfffd, - 0xc51d, 0xc51e, 0xc51f, 0xc520, 0xc521, 0xc522, 0xc523, 0xc524, - 0xc525, 0xc526, 0xc527, 0xfffd, 0xfffd, 0xfffd, 0xc528, 0xc529, - 0xc52a, 0xc52b, 0xc52c, 0xc52d, 0xc52e, 0xc52f, 0xc530, 0xc531, - 0xc532, 0xc533, 0xc534, 0xc535, 0xc536, 0xc537, 0xc538, 0xfffd, - 0xc539, 0xc53a, 0xc53b, 0xc53c, 0xc53d, 0xc53e, 0xc53f, 0xc540, - 0xc541, 0xc542, 0xc543, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0xb4 */ - 0x3147, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xc544, 0xc545, 0xc546, 0xc547, 0xc548, 0xc549, 0xc54a, 0xc54b, - 0xc54c, 0xc54d, 0xc54e, 0xc54f, 0xc550, 0xc551, 0xc552, 0xc553, - 0xc554, 0xfffd, 0xc555, 0xc556, 0xc557, 0xc558, 0xc559, 0xc55a, - 0xc55b, 0xc55c, 0xc55d, 0xc55e, 0xc55f, 0xfffd, 0xc560, 0xc561, - 0xc562, 0xc563, 0xc564, 0xc565, 0xc566, 0xc567, 0xc568, 0xc569, - 0xc56a, 0xc56b, 0xc56c, 0xc56d, 0xc56e, 0xc56f, 0xc570, 0xfffd, - 0xc571, 0xc572, 0xc573, 0xc574, 0xc575, 0xc576, 0xc577, 0xc578, - 0xc579, 0xc57a, 0xc57b, 0xfffd, 0xfffd, 0xfffd, 0xc57c, 0xc57d, - 0xc57e, 0xc57f, 0xc580, 0xc581, 0xc582, 0xc583, 0xc584, 0xc585, - 0xc586, 0xc587, 0xc588, 0xc589, 0xc58a, 0xc58b, 0xc58c, 0xfffd, - 0xc58d, 0xc58e, 0xc58f, 0xc590, 0xc591, 0xc592, 0xc593, 0xc594, - 0xc595, 0xc596, 0xc597, 0xfffd, 0xfffd, 0xfffd, 0xc598, 0xc599, - 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e, 0xc59f, 0xc5a0, 0xc5a1, - 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6, 0xc5a7, 0xc5a8, 0xfffd, - 0xc5a9, 0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad, 0xc5ae, 0xc5af, 0xc5b0, - 0xc5b1, 0xc5b2, 0xc5b3, 0xfffd, 0xfffd, 0xfffd, 0xc5b4, 0xc5b5, - 0xc5b6, 0xc5b7, 0xc5b8, 0xc5b9, 0xc5ba, 0xc5bb, 0xc5bc, 0xc5bd, - 0xc5be, 0xc5bf, 0xc5c0, 0xc5c1, 0xc5c2, 0xc5c3, 0xc5c4, 0xfffd, - 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca, 0xc5cb, 0xc5cc, - 0xc5cd, 0xc5ce, 0xc5cf, 0xfffd, - /* 0xb5 */ - 0xc5d0, 0xc5d1, 0xc5d2, 0xc5d3, 0xc5d4, 0xc5d5, 0xc5d6, 0xc5d7, - 0xc5d8, 0xc5d9, 0xc5da, 0xc5db, 0xc5dc, 0xc5dd, 0xc5de, 0xc5df, - 0xc5e0, 0xfffd, 0xc5e1, 0xc5e2, 0xc5e3, 0xc5e4, 0xc5e5, 0xc5e6, - 0xc5e7, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xfffd, 0xfffd, 0xfffd, - 0xc5ec, 0xc5ed, 0xc5ee, 0xc5ef, 0xc5f0, 0xc5f1, 0xc5f2, 0xc5f3, - 0xc5f4, 0xc5f5, 0xc5f6, 0xc5f7, 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, - 0xc5fc, 0xfffd, 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601, 0xc602, - 0xc603, 0xc604, 0xc605, 0xc606, 0xc607, 0xfffd, 0xc608, 0xc609, - 0xc60a, 0xc60b, 0xc60c, 0xc60d, 0xc60e, 0xc60f, 0xc610, 0xc611, - 0xc612, 0xc613, 0xc614, 0xc615, 0xc616, 0xc617, 0xc618, 0xfffd, - 0xc619, 0xc61a, 0xc61b, 0xc61c, 0xc61d, 0xc61e, 0xc61f, 0xc620, - 0xc621, 0xc622, 0xc623, 0xfffd, 0xfffd, 0xfffd, 0xc624, 0xc625, - 0xc626, 0xc627, 0xc628, 0xc629, 0xc62a, 0xc62b, 0xc62c, 0xc62d, - 0xc62e, 0xc62f, 0xc630, 0xc631, 0xc632, 0xc633, 0xc634, 0xfffd, - 0xc635, 0xc636, 0xc637, 0xc638, 0xc639, 0xc63a, 0xc63b, 0xc63c, - 0xc63d, 0xc63e, 0xc63f, 0xfffd, 0xfffd, 0xfffd, 0xc640, 0xc641, - 0xc642, 0xc643, 0xc644, 0xc645, 0xc646, 0xc647, 0xc648, 0xc649, - 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e, 0xc64f, 0xc650, 0xfffd, - 0xc651, 0xc652, 0xc653, 0xc654, 0xc655, 0xc656, 0xc657, 0xc658, - 0xc659, 0xc65a, 0xc65b, 0xfffd, 0xfffd, 0xfffd, 0xc65c, 0xc65d, - 0xc65e, 0xc65f, 0xc660, 0xc661, 0xc662, 0xc663, 0xc664, 0xc665, - 0xc666, 0xc667, 0xc668, 0xc669, 0xc66a, 0xc66b, 0xc66c, 0xfffd, - 0xc66d, 0xc66e, 0xc66f, 0xc670, 0xc671, 0xc672, 0xc673, 0xc674, - 0xc675, 0xc676, 0xc677, 0xfffd, - /* 0xb6 */ - 0xc678, 0xc679, 0xc67a, 0xc67b, 0xc67c, 0xc67d, 0xc67e, 0xc67f, - 0xc680, 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686, 0xc687, - 0xc688, 0xfffd, 0xc689, 0xc68a, 0xc68b, 0xc68c, 0xc68d, 0xc68e, - 0xc68f, 0xc690, 0xc691, 0xc692, 0xc693, 0xfffd, 0xfffd, 0xfffd, - 0xc694, 0xc695, 0xc696, 0xc697, 0xc698, 0xc699, 0xc69a, 0xc69b, - 0xc69c, 0xc69d, 0xc69e, 0xc69f, 0xc6a0, 0xc6a1, 0xc6a2, 0xc6a3, - 0xc6a4, 0xfffd, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, - 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xfffd, 0xc6b0, 0xc6b1, - 0xc6b2, 0xc6b3, 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, - 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, 0xc6c0, 0xfffd, - 0xc6c1, 0xc6c2, 0xc6c3, 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, - 0xc6c9, 0xc6ca, 0xc6cb, 0xfffd, 0xfffd, 0xfffd, 0xc6cc, 0xc6cd, - 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3, 0xc6d4, 0xc6d5, - 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db, 0xc6dc, 0xfffd, - 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3, 0xc6e4, - 0xc6e5, 0xc6e6, 0xc6e7, 0xfffd, 0xfffd, 0xfffd, 0xc6e8, 0xc6e9, - 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, - 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6f8, 0xfffd, - 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, 0xc6fe, 0xc6ff, 0xc700, - 0xc701, 0xc702, 0xc703, 0xfffd, 0xfffd, 0xfffd, 0xc704, 0xc705, - 0xc706, 0xc707, 0xc708, 0xc709, 0xc70a, 0xc70b, 0xc70c, 0xc70d, - 0xc70e, 0xc70f, 0xc710, 0xc711, 0xc712, 0xc713, 0xc714, 0xfffd, - 0xc715, 0xc716, 0xc717, 0xc718, 0xc719, 0xc71a, 0xc71b, 0xc71c, - 0xc71d, 0xc71e, 0xc71f, 0xfffd, - /* 0xb7 */ - 0xc720, 0xc721, 0xc722, 0xc723, 0xc724, 0xc725, 0xc726, 0xc727, - 0xc728, 0xc729, 0xc72a, 0xc72b, 0xc72c, 0xc72d, 0xc72e, 0xc72f, - 0xc730, 0xfffd, 0xc731, 0xc732, 0xc733, 0xc734, 0xc735, 0xc736, - 0xc737, 0xc738, 0xc739, 0xc73a, 0xc73b, 0xfffd, 0xfffd, 0xfffd, - 0xc73c, 0xc73d, 0xc73e, 0xc73f, 0xc740, 0xc741, 0xc742, 0xc743, - 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, - 0xc74c, 0xfffd, 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc752, - 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xfffd, 0xc758, 0xc759, - 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e, 0xc75f, 0xc760, 0xc761, - 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, 0xc768, 0xfffd, - 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d, 0xc76e, 0xc76f, 0xc770, - 0xc771, 0xc772, 0xc773, 0xfffd, 0xfffd, 0xfffd, 0xc774, 0xc775, - 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, 0xc77c, 0xc77d, - 0xc77e, 0xc77f, 0xc780, 0xc781, 0xc782, 0xc783, 0xc784, 0xfffd, - 0xc785, 0xc786, 0xc787, 0xc788, 0xc789, 0xc78a, 0xc78b, 0xc78c, - 0xc78d, 0xc78e, 0xc78f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0xb8 */ - 0x3148, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xc790, 0xc791, 0xc792, 0xc793, 0xc794, 0xc795, 0xc796, 0xc797, - 0xc798, 0xc799, 0xc79a, 0xc79b, 0xc79c, 0xc79d, 0xc79e, 0xc79f, - 0xc7a0, 0xfffd, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, - 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xfffd, 0xc7ac, 0xc7ad, - 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b4, 0xc7b5, - 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc, 0xfffd, - 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4, - 0xc7c5, 0xc7c6, 0xc7c7, 0xfffd, 0xfffd, 0xfffd, 0xc7c8, 0xc7c9, - 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce, 0xc7cf, 0xc7d0, 0xc7d1, - 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xfffd, - 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, - 0xc7e1, 0xc7e2, 0xc7e3, 0xfffd, 0xfffd, 0xfffd, 0xc7e4, 0xc7e5, - 0xc7e6, 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec, 0xc7ed, - 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xfffd, - 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, - 0xc7fd, 0xc7fe, 0xc7ff, 0xfffd, 0xfffd, 0xfffd, 0xc800, 0xc801, - 0xc802, 0xc803, 0xc804, 0xc805, 0xc806, 0xc807, 0xc808, 0xc809, - 0xc80a, 0xc80b, 0xc80c, 0xc80d, 0xc80e, 0xc80f, 0xc810, 0xfffd, - 0xc811, 0xc812, 0xc813, 0xc814, 0xc815, 0xc816, 0xc817, 0xc818, - 0xc819, 0xc81a, 0xc81b, 0xfffd, - /* 0xb9 */ - 0xc81c, 0xc81d, 0xc81e, 0xc81f, 0xc820, 0xc821, 0xc822, 0xc823, - 0xc824, 0xc825, 0xc826, 0xc827, 0xc828, 0xc829, 0xc82a, 0xc82b, - 0xc82c, 0xfffd, 0xc82d, 0xc82e, 0xc82f, 0xc830, 0xc831, 0xc832, - 0xc833, 0xc834, 0xc835, 0xc836, 0xc837, 0xfffd, 0xfffd, 0xfffd, - 0xc838, 0xc839, 0xc83a, 0xc83b, 0xc83c, 0xc83d, 0xc83e, 0xc83f, - 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, 0xc847, - 0xc848, 0xfffd, 0xc849, 0xc84a, 0xc84b, 0xc84c, 0xc84d, 0xc84e, - 0xc84f, 0xc850, 0xc851, 0xc852, 0xc853, 0xfffd, 0xc854, 0xc855, - 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a, 0xc85b, 0xc85c, 0xc85d, - 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xfffd, - 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, 0xc86a, 0xc86b, 0xc86c, - 0xc86d, 0xc86e, 0xc86f, 0xfffd, 0xfffd, 0xfffd, 0xc870, 0xc871, - 0xc872, 0xc873, 0xc874, 0xc875, 0xc876, 0xc877, 0xc878, 0xc879, - 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc87e, 0xc87f, 0xc880, 0xfffd, - 0xc881, 0xc882, 0xc883, 0xc884, 0xc885, 0xc886, 0xc887, 0xc888, - 0xc889, 0xc88a, 0xc88b, 0xfffd, 0xfffd, 0xfffd, 0xc88c, 0xc88d, - 0xc88e, 0xc88f, 0xc890, 0xc891, 0xc892, 0xc893, 0xc894, 0xc895, - 0xc896, 0xc897, 0xc898, 0xc899, 0xc89a, 0xc89b, 0xc89c, 0xfffd, - 0xc89d, 0xc89e, 0xc89f, 0xc8a0, 0xc8a1, 0xc8a2, 0xc8a3, 0xc8a4, - 0xc8a5, 0xc8a6, 0xc8a7, 0xfffd, 0xfffd, 0xfffd, 0xc8a8, 0xc8a9, - 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, 0xc8b0, 0xc8b1, - 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8, 0xfffd, - 0xc8b9, 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, 0xc8be, 0xc8bf, 0xc8c0, - 0xc8c1, 0xc8c2, 0xc8c3, 0xfffd, - /* 0xba */ - 0xc8c4, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9, 0xc8ca, 0xc8cb, - 0xc8cc, 0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d2, 0xc8d3, - 0xc8d4, 0xfffd, 0xc8d5, 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9, 0xc8da, - 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0xfffd, 0xfffd, 0xfffd, - 0xc8e0, 0xc8e1, 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, - 0xc8e8, 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, - 0xc8f0, 0xfffd, 0xc8f1, 0xc8f2, 0xc8f3, 0xc8f4, 0xc8f5, 0xc8f6, - 0xc8f7, 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0xfffd, 0xc8fc, 0xc8fd, - 0xc8fe, 0xc8ff, 0xc900, 0xc901, 0xc902, 0xc903, 0xc904, 0xc905, - 0xc906, 0xc907, 0xc908, 0xc909, 0xc90a, 0xc90b, 0xc90c, 0xfffd, - 0xc90d, 0xc90e, 0xc90f, 0xc910, 0xc911, 0xc912, 0xc913, 0xc914, - 0xc915, 0xc916, 0xc917, 0xfffd, 0xfffd, 0xfffd, 0xc918, 0xc919, - 0xc91a, 0xc91b, 0xc91c, 0xc91d, 0xc91e, 0xc91f, 0xc920, 0xc921, - 0xc922, 0xc923, 0xc924, 0xc925, 0xc926, 0xc927, 0xc928, 0xfffd, - 0xc929, 0xc92a, 0xc92b, 0xc92c, 0xc92d, 0xc92e, 0xc92f, 0xc930, - 0xc931, 0xc932, 0xc933, 0xfffd, 0xfffd, 0xfffd, 0xc934, 0xc935, - 0xc936, 0xc937, 0xc938, 0xc939, 0xc93a, 0xc93b, 0xc93c, 0xc93d, - 0xc93e, 0xc93f, 0xc940, 0xc941, 0xc942, 0xc943, 0xc944, 0xfffd, - 0xc945, 0xc946, 0xc947, 0xc948, 0xc949, 0xc94a, 0xc94b, 0xc94c, - 0xc94d, 0xc94e, 0xc94f, 0xfffd, 0xfffd, 0xfffd, 0xc950, 0xc951, - 0xc952, 0xc953, 0xc954, 0xc955, 0xc956, 0xc957, 0xc958, 0xc959, - 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0xc95e, 0xc95f, 0xc960, 0xfffd, - 0xc961, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, 0xc967, 0xc968, - 0xc969, 0xc96a, 0xc96b, 0xfffd, - /* 0xbb */ - 0xc96c, 0xc96d, 0xc96e, 0xc96f, 0xc970, 0xc971, 0xc972, 0xc973, - 0xc974, 0xc975, 0xc976, 0xc977, 0xc978, 0xc979, 0xc97a, 0xc97b, - 0xc97c, 0xfffd, 0xc97d, 0xc97e, 0xc97f, 0xc980, 0xc981, 0xc982, - 0xc983, 0xc984, 0xc985, 0xc986, 0xc987, 0xfffd, 0xfffd, 0xfffd, - 0xc988, 0xc989, 0xc98a, 0xc98b, 0xc98c, 0xc98d, 0xc98e, 0xc98f, - 0xc990, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996, 0xc997, - 0xc998, 0xfffd, 0xc999, 0xc99a, 0xc99b, 0xc99c, 0xc99d, 0xc99e, - 0xc99f, 0xc9a0, 0xc9a1, 0xc9a2, 0xc9a3, 0xfffd, 0xc9a4, 0xc9a5, - 0xc9a6, 0xc9a7, 0xc9a8, 0xc9a9, 0xc9aa, 0xc9ab, 0xc9ac, 0xc9ad, - 0xc9ae, 0xc9af, 0xc9b0, 0xc9b1, 0xc9b2, 0xc9b3, 0xc9b4, 0xfffd, - 0xc9b5, 0xc9b6, 0xc9b7, 0xc9b8, 0xc9b9, 0xc9ba, 0xc9bb, 0xc9bc, - 0xc9bd, 0xc9be, 0xc9bf, 0xfffd, 0xfffd, 0xfffd, 0xc9c0, 0xc9c1, - 0xc9c2, 0xc9c3, 0xc9c4, 0xc9c5, 0xc9c6, 0xc9c7, 0xc9c8, 0xc9c9, - 0xc9ca, 0xc9cb, 0xc9cc, 0xc9cd, 0xc9ce, 0xc9cf, 0xc9d0, 0xfffd, - 0xc9d1, 0xc9d2, 0xc9d3, 0xc9d4, 0xc9d5, 0xc9d6, 0xc9d7, 0xc9d8, - 0xc9d9, 0xc9da, 0xc9db, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0xbc */ - 0x3149, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xc9dc, 0xc9dd, 0xc9de, 0xc9df, 0xc9e0, 0xc9e1, 0xc9e2, 0xc9e3, - 0xc9e4, 0xc9e5, 0xc9e6, 0xc9e7, 0xc9e8, 0xc9e9, 0xc9ea, 0xc9eb, - 0xc9ec, 0xfffd, 0xc9ed, 0xc9ee, 0xc9ef, 0xc9f0, 0xc9f1, 0xc9f2, - 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, 0xfffd, 0xc9f8, 0xc9f9, - 0xc9fa, 0xc9fb, 0xc9fc, 0xc9fd, 0xc9fe, 0xc9ff, 0xca00, 0xca01, - 0xca02, 0xca03, 0xca04, 0xca05, 0xca06, 0xca07, 0xca08, 0xfffd, - 0xca09, 0xca0a, 0xca0b, 0xca0c, 0xca0d, 0xca0e, 0xca0f, 0xca10, - 0xca11, 0xca12, 0xca13, 0xfffd, 0xfffd, 0xfffd, 0xca14, 0xca15, - 0xca16, 0xca17, 0xca18, 0xca19, 0xca1a, 0xca1b, 0xca1c, 0xca1d, - 0xca1e, 0xca1f, 0xca20, 0xca21, 0xca22, 0xca23, 0xca24, 0xfffd, - 0xca25, 0xca26, 0xca27, 0xca28, 0xca29, 0xca2a, 0xca2b, 0xca2c, - 0xca2d, 0xca2e, 0xca2f, 0xfffd, 0xfffd, 0xfffd, 0xca30, 0xca31, - 0xca32, 0xca33, 0xca34, 0xca35, 0xca36, 0xca37, 0xca38, 0xca39, - 0xca3a, 0xca3b, 0xca3c, 0xca3d, 0xca3e, 0xca3f, 0xca40, 0xfffd, - 0xca41, 0xca42, 0xca43, 0xca44, 0xca45, 0xca46, 0xca47, 0xca48, - 0xca49, 0xca4a, 0xca4b, 0xfffd, 0xfffd, 0xfffd, 0xca4c, 0xca4d, - 0xca4e, 0xca4f, 0xca50, 0xca51, 0xca52, 0xca53, 0xca54, 0xca55, - 0xca56, 0xca57, 0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5c, 0xfffd, - 0xca5d, 0xca5e, 0xca5f, 0xca60, 0xca61, 0xca62, 0xca63, 0xca64, - 0xca65, 0xca66, 0xca67, 0xfffd, - /* 0xbd */ - 0xca68, 0xca69, 0xca6a, 0xca6b, 0xca6c, 0xca6d, 0xca6e, 0xca6f, - 0xca70, 0xca71, 0xca72, 0xca73, 0xca74, 0xca75, 0xca76, 0xca77, - 0xca78, 0xfffd, 0xca79, 0xca7a, 0xca7b, 0xca7c, 0xca7d, 0xca7e, - 0xca7f, 0xca80, 0xca81, 0xca82, 0xca83, 0xfffd, 0xfffd, 0xfffd, - 0xca84, 0xca85, 0xca86, 0xca87, 0xca88, 0xca89, 0xca8a, 0xca8b, - 0xca8c, 0xca8d, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92, 0xca93, - 0xca94, 0xfffd, 0xca95, 0xca96, 0xca97, 0xca98, 0xca99, 0xca9a, - 0xca9b, 0xca9c, 0xca9d, 0xca9e, 0xca9f, 0xfffd, 0xcaa0, 0xcaa1, - 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6, 0xcaa7, 0xcaa8, 0xcaa9, - 0xcaaa, 0xcaab, 0xcaac, 0xcaad, 0xcaae, 0xcaaf, 0xcab0, 0xfffd, - 0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5, 0xcab6, 0xcab7, 0xcab8, - 0xcab9, 0xcaba, 0xcabb, 0xfffd, 0xfffd, 0xfffd, 0xcabc, 0xcabd, - 0xcabe, 0xcabf, 0xcac0, 0xcac1, 0xcac2, 0xcac3, 0xcac4, 0xcac5, - 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcacc, 0xfffd, - 0xcacd, 0xcace, 0xcacf, 0xcad0, 0xcad1, 0xcad2, 0xcad3, 0xcad4, - 0xcad5, 0xcad6, 0xcad7, 0xfffd, 0xfffd, 0xfffd, 0xcad8, 0xcad9, - 0xcada, 0xcadb, 0xcadc, 0xcadd, 0xcade, 0xcadf, 0xcae0, 0xcae1, - 0xcae2, 0xcae3, 0xcae4, 0xcae5, 0xcae6, 0xcae7, 0xcae8, 0xfffd, - 0xcae9, 0xcaea, 0xcaeb, 0xcaec, 0xcaed, 0xcaee, 0xcaef, 0xcaf0, - 0xcaf1, 0xcaf2, 0xcaf3, 0xfffd, 0xfffd, 0xfffd, 0xcaf4, 0xcaf5, - 0xcaf6, 0xcaf7, 0xcaf8, 0xcaf9, 0xcafa, 0xcafb, 0xcafc, 0xcafd, - 0xcafe, 0xcaff, 0xcb00, 0xcb01, 0xcb02, 0xcb03, 0xcb04, 0xfffd, - 0xcb05, 0xcb06, 0xcb07, 0xcb08, 0xcb09, 0xcb0a, 0xcb0b, 0xcb0c, - 0xcb0d, 0xcb0e, 0xcb0f, 0xfffd, - /* 0xbe */ - 0xcb10, 0xcb11, 0xcb12, 0xcb13, 0xcb14, 0xcb15, 0xcb16, 0xcb17, - 0xcb18, 0xcb19, 0xcb1a, 0xcb1b, 0xcb1c, 0xcb1d, 0xcb1e, 0xcb1f, - 0xcb20, 0xfffd, 0xcb21, 0xcb22, 0xcb23, 0xcb24, 0xcb25, 0xcb26, - 0xcb27, 0xcb28, 0xcb29, 0xcb2a, 0xcb2b, 0xfffd, 0xfffd, 0xfffd, - 0xcb2c, 0xcb2d, 0xcb2e, 0xcb2f, 0xcb30, 0xcb31, 0xcb32, 0xcb33, - 0xcb34, 0xcb35, 0xcb36, 0xcb37, 0xcb38, 0xcb39, 0xcb3a, 0xcb3b, - 0xcb3c, 0xfffd, 0xcb3d, 0xcb3e, 0xcb3f, 0xcb40, 0xcb41, 0xcb42, - 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, 0xfffd, 0xcb48, 0xcb49, - 0xcb4a, 0xcb4b, 0xcb4c, 0xcb4d, 0xcb4e, 0xcb4f, 0xcb50, 0xcb51, - 0xcb52, 0xcb53, 0xcb54, 0xcb55, 0xcb56, 0xcb57, 0xcb58, 0xfffd, - 0xcb59, 0xcb5a, 0xcb5b, 0xcb5c, 0xcb5d, 0xcb5e, 0xcb5f, 0xcb60, - 0xcb61, 0xcb62, 0xcb63, 0xfffd, 0xfffd, 0xfffd, 0xcb64, 0xcb65, - 0xcb66, 0xcb67, 0xcb68, 0xcb69, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, - 0xcb6e, 0xcb6f, 0xcb70, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xfffd, - 0xcb75, 0xcb76, 0xcb77, 0xcb78, 0xcb79, 0xcb7a, 0xcb7b, 0xcb7c, - 0xcb7d, 0xcb7e, 0xcb7f, 0xfffd, 0xfffd, 0xfffd, 0xcb80, 0xcb81, - 0xcb82, 0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xcb87, 0xcb88, 0xcb89, - 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xcb8e, 0xcb8f, 0xcb90, 0xfffd, - 0xcb91, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97, 0xcb98, - 0xcb99, 0xcb9a, 0xcb9b, 0xfffd, 0xfffd, 0xfffd, 0xcb9c, 0xcb9d, - 0xcb9e, 0xcb9f, 0xcba0, 0xcba1, 0xcba2, 0xcba3, 0xcba4, 0xcba5, - 0xcba6, 0xcba7, 0xcba8, 0xcba9, 0xcbaa, 0xcbab, 0xcbac, 0xfffd, - 0xcbad, 0xcbae, 0xcbaf, 0xcbb0, 0xcbb1, 0xcbb2, 0xcbb3, 0xcbb4, - 0xcbb5, 0xcbb6, 0xcbb7, 0xfffd, - /* 0xbf */ - 0xcbb8, 0xcbb9, 0xcbba, 0xcbbb, 0xcbbc, 0xcbbd, 0xcbbe, 0xcbbf, - 0xcbc0, 0xcbc1, 0xcbc2, 0xcbc3, 0xcbc4, 0xcbc5, 0xcbc6, 0xcbc7, - 0xcbc8, 0xfffd, 0xcbc9, 0xcbca, 0xcbcb, 0xcbcc, 0xcbcd, 0xcbce, - 0xcbcf, 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3, 0xfffd, 0xfffd, 0xfffd, - 0xcbd4, 0xcbd5, 0xcbd6, 0xcbd7, 0xcbd8, 0xcbd9, 0xcbda, 0xcbdb, - 0xcbdc, 0xcbdd, 0xcbde, 0xcbdf, 0xcbe0, 0xcbe1, 0xcbe2, 0xcbe3, - 0xcbe4, 0xfffd, 0xcbe5, 0xcbe6, 0xcbe7, 0xcbe8, 0xcbe9, 0xcbea, - 0xcbeb, 0xcbec, 0xcbed, 0xcbee, 0xcbef, 0xfffd, 0xcbf0, 0xcbf1, - 0xcbf2, 0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6, 0xcbf7, 0xcbf8, 0xcbf9, - 0xcbfa, 0xcbfb, 0xcbfc, 0xcbfd, 0xcbfe, 0xcbff, 0xcc00, 0xfffd, - 0xcc01, 0xcc02, 0xcc03, 0xcc04, 0xcc05, 0xcc06, 0xcc07, 0xcc08, - 0xcc09, 0xcc0a, 0xcc0b, 0xfffd, 0xfffd, 0xfffd, 0xcc0c, 0xcc0d, - 0xcc0e, 0xcc0f, 0xcc10, 0xcc11, 0xcc12, 0xcc13, 0xcc14, 0xcc15, - 0xcc16, 0xcc17, 0xcc18, 0xcc19, 0xcc1a, 0xcc1b, 0xcc1c, 0xfffd, - 0xcc1d, 0xcc1e, 0xcc1f, 0xcc20, 0xcc21, 0xcc22, 0xcc23, 0xcc24, - 0xcc25, 0xcc26, 0xcc27, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0xc0 */ - 0x314a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xcc28, 0xcc29, 0xcc2a, 0xcc2b, 0xcc2c, 0xcc2d, 0xcc2e, 0xcc2f, - 0xcc30, 0xcc31, 0xcc32, 0xcc33, 0xcc34, 0xcc35, 0xcc36, 0xcc37, - 0xcc38, 0xfffd, 0xcc39, 0xcc3a, 0xcc3b, 0xcc3c, 0xcc3d, 0xcc3e, - 0xcc3f, 0xcc40, 0xcc41, 0xcc42, 0xcc43, 0xfffd, 0xcc44, 0xcc45, - 0xcc46, 0xcc47, 0xcc48, 0xcc49, 0xcc4a, 0xcc4b, 0xcc4c, 0xcc4d, - 0xcc4e, 0xcc4f, 0xcc50, 0xcc51, 0xcc52, 0xcc53, 0xcc54, 0xfffd, - 0xcc55, 0xcc56, 0xcc57, 0xcc58, 0xcc59, 0xcc5a, 0xcc5b, 0xcc5c, - 0xcc5d, 0xcc5e, 0xcc5f, 0xfffd, 0xfffd, 0xfffd, 0xcc60, 0xcc61, - 0xcc62, 0xcc63, 0xcc64, 0xcc65, 0xcc66, 0xcc67, 0xcc68, 0xcc69, - 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f, 0xcc70, 0xfffd, - 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc75, 0xcc76, 0xcc77, 0xcc78, - 0xcc79, 0xcc7a, 0xcc7b, 0xfffd, 0xfffd, 0xfffd, 0xcc7c, 0xcc7d, - 0xcc7e, 0xcc7f, 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, - 0xcc86, 0xcc87, 0xcc88, 0xcc89, 0xcc8a, 0xcc8b, 0xcc8c, 0xfffd, - 0xcc8d, 0xcc8e, 0xcc8f, 0xcc90, 0xcc91, 0xcc92, 0xcc93, 0xcc94, - 0xcc95, 0xcc96, 0xcc97, 0xfffd, 0xfffd, 0xfffd, 0xcc98, 0xcc99, - 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, 0xcc9e, 0xcc9f, 0xcca0, 0xcca1, - 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6, 0xcca7, 0xcca8, 0xfffd, - 0xcca9, 0xccaa, 0xccab, 0xccac, 0xccad, 0xccae, 0xccaf, 0xccb0, - 0xccb1, 0xccb2, 0xccb3, 0xfffd, - /* 0xc1 */ - 0xccb4, 0xccb5, 0xccb6, 0xccb7, 0xccb8, 0xccb9, 0xccba, 0xccbb, - 0xccbc, 0xccbd, 0xccbe, 0xccbf, 0xccc0, 0xccc1, 0xccc2, 0xccc3, - 0xccc4, 0xfffd, 0xccc5, 0xccc6, 0xccc7, 0xccc8, 0xccc9, 0xccca, - 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, 0xfffd, 0xfffd, 0xfffd, - 0xccd0, 0xccd1, 0xccd2, 0xccd3, 0xccd4, 0xccd5, 0xccd6, 0xccd7, - 0xccd8, 0xccd9, 0xccda, 0xccdb, 0xccdc, 0xccdd, 0xccde, 0xccdf, - 0xcce0, 0xfffd, 0xcce1, 0xcce2, 0xcce3, 0xcce4, 0xcce5, 0xcce6, - 0xcce7, 0xcce8, 0xcce9, 0xccea, 0xcceb, 0xfffd, 0xccec, 0xcced, - 0xccee, 0xccef, 0xccf0, 0xccf1, 0xccf2, 0xccf3, 0xccf4, 0xccf5, - 0xccf6, 0xccf7, 0xccf8, 0xccf9, 0xccfa, 0xccfb, 0xccfc, 0xfffd, - 0xccfd, 0xccfe, 0xccff, 0xcd00, 0xcd01, 0xcd02, 0xcd03, 0xcd04, - 0xcd05, 0xcd06, 0xcd07, 0xfffd, 0xfffd, 0xfffd, 0xcd08, 0xcd09, - 0xcd0a, 0xcd0b, 0xcd0c, 0xcd0d, 0xcd0e, 0xcd0f, 0xcd10, 0xcd11, - 0xcd12, 0xcd13, 0xcd14, 0xcd15, 0xcd16, 0xcd17, 0xcd18, 0xfffd, - 0xcd19, 0xcd1a, 0xcd1b, 0xcd1c, 0xcd1d, 0xcd1e, 0xcd1f, 0xcd20, - 0xcd21, 0xcd22, 0xcd23, 0xfffd, 0xfffd, 0xfffd, 0xcd24, 0xcd25, - 0xcd26, 0xcd27, 0xcd28, 0xcd29, 0xcd2a, 0xcd2b, 0xcd2c, 0xcd2d, - 0xcd2e, 0xcd2f, 0xcd30, 0xcd31, 0xcd32, 0xcd33, 0xcd34, 0xfffd, - 0xcd35, 0xcd36, 0xcd37, 0xcd38, 0xcd39, 0xcd3a, 0xcd3b, 0xcd3c, - 0xcd3d, 0xcd3e, 0xcd3f, 0xfffd, 0xfffd, 0xfffd, 0xcd40, 0xcd41, - 0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48, 0xcd49, - 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, 0xcd4f, 0xcd50, 0xfffd, - 0xcd51, 0xcd52, 0xcd53, 0xcd54, 0xcd55, 0xcd56, 0xcd57, 0xcd58, - 0xcd59, 0xcd5a, 0xcd5b, 0xfffd, - /* 0xc2 */ - 0xcd5c, 0xcd5d, 0xcd5e, 0xcd5f, 0xcd60, 0xcd61, 0xcd62, 0xcd63, - 0xcd64, 0xcd65, 0xcd66, 0xcd67, 0xcd68, 0xcd69, 0xcd6a, 0xcd6b, - 0xcd6c, 0xfffd, 0xcd6d, 0xcd6e, 0xcd6f, 0xcd70, 0xcd71, 0xcd72, - 0xcd73, 0xcd74, 0xcd75, 0xcd76, 0xcd77, 0xfffd, 0xfffd, 0xfffd, - 0xcd78, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, 0xcd7e, 0xcd7f, - 0xcd80, 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, 0xcd86, 0xcd87, - 0xcd88, 0xfffd, 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, - 0xcd8f, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xfffd, 0xcd94, 0xcd95, - 0xcd96, 0xcd97, 0xcd98, 0xcd99, 0xcd9a, 0xcd9b, 0xcd9c, 0xcd9d, - 0xcd9e, 0xcd9f, 0xcda0, 0xcda1, 0xcda2, 0xcda3, 0xcda4, 0xfffd, - 0xcda5, 0xcda6, 0xcda7, 0xcda8, 0xcda9, 0xcdaa, 0xcdab, 0xcdac, - 0xcdad, 0xcdae, 0xcdaf, 0xfffd, 0xfffd, 0xfffd, 0xcdb0, 0xcdb1, - 0xcdb2, 0xcdb3, 0xcdb4, 0xcdb5, 0xcdb6, 0xcdb7, 0xcdb8, 0xcdb9, - 0xcdba, 0xcdbb, 0xcdbc, 0xcdbd, 0xcdbe, 0xcdbf, 0xcdc0, 0xfffd, - 0xcdc1, 0xcdc2, 0xcdc3, 0xcdc4, 0xcdc5, 0xcdc6, 0xcdc7, 0xcdc8, - 0xcdc9, 0xcdca, 0xcdcb, 0xfffd, 0xfffd, 0xfffd, 0xcdcc, 0xcdcd, - 0xcdce, 0xcdcf, 0xcdd0, 0xcdd1, 0xcdd2, 0xcdd3, 0xcdd4, 0xcdd5, - 0xcdd6, 0xcdd7, 0xcdd8, 0xcdd9, 0xcdda, 0xcddb, 0xcddc, 0xfffd, - 0xcddd, 0xcdde, 0xcddf, 0xcde0, 0xcde1, 0xcde2, 0xcde3, 0xcde4, - 0xcde5, 0xcde6, 0xcde7, 0xfffd, 0xfffd, 0xfffd, 0xcde8, 0xcde9, - 0xcdea, 0xcdeb, 0xcdec, 0xcded, 0xcdee, 0xcdef, 0xcdf0, 0xcdf1, - 0xcdf2, 0xcdf3, 0xcdf4, 0xcdf5, 0xcdf6, 0xcdf7, 0xcdf8, 0xfffd, - 0xcdf9, 0xcdfa, 0xcdfb, 0xcdfc, 0xcdfd, 0xcdfe, 0xcdff, 0xce00, - 0xce01, 0xce02, 0xce03, 0xfffd, - /* 0xc3 */ - 0xce04, 0xce05, 0xce06, 0xce07, 0xce08, 0xce09, 0xce0a, 0xce0b, - 0xce0c, 0xce0d, 0xce0e, 0xce0f, 0xce10, 0xce11, 0xce12, 0xce13, - 0xce14, 0xfffd, 0xce15, 0xce16, 0xce17, 0xce18, 0xce19, 0xce1a, - 0xce1b, 0xce1c, 0xce1d, 0xce1e, 0xce1f, 0xfffd, 0xfffd, 0xfffd, - 0xce20, 0xce21, 0xce22, 0xce23, 0xce24, 0xce25, 0xce26, 0xce27, - 0xce28, 0xce29, 0xce2a, 0xce2b, 0xce2c, 0xce2d, 0xce2e, 0xce2f, - 0xce30, 0xfffd, 0xce31, 0xce32, 0xce33, 0xce34, 0xce35, 0xce36, - 0xce37, 0xce38, 0xce39, 0xce3a, 0xce3b, 0xfffd, 0xce3c, 0xce3d, - 0xce3e, 0xce3f, 0xce40, 0xce41, 0xce42, 0xce43, 0xce44, 0xce45, - 0xce46, 0xce47, 0xce48, 0xce49, 0xce4a, 0xce4b, 0xce4c, 0xfffd, - 0xce4d, 0xce4e, 0xce4f, 0xce50, 0xce51, 0xce52, 0xce53, 0xce54, - 0xce55, 0xce56, 0xce57, 0xfffd, 0xfffd, 0xfffd, 0xce58, 0xce59, - 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce5e, 0xce5f, 0xce60, 0xce61, - 0xce62, 0xce63, 0xce64, 0xce65, 0xce66, 0xce67, 0xce68, 0xfffd, - 0xce69, 0xce6a, 0xce6b, 0xce6c, 0xce6d, 0xce6e, 0xce6f, 0xce70, - 0xce71, 0xce72, 0xce73, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0xc4 */ - 0x314b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xce74, 0xce75, 0xce76, 0xce77, 0xce78, 0xce79, 0xce7a, 0xce7b, - 0xce7c, 0xce7d, 0xce7e, 0xce7f, 0xce80, 0xce81, 0xce82, 0xce83, - 0xce84, 0xfffd, 0xce85, 0xce86, 0xce87, 0xce88, 0xce89, 0xce8a, - 0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, 0xfffd, 0xce90, 0xce91, - 0xce92, 0xce93, 0xce94, 0xce95, 0xce96, 0xce97, 0xce98, 0xce99, - 0xce9a, 0xce9b, 0xce9c, 0xce9d, 0xce9e, 0xce9f, 0xcea0, 0xfffd, - 0xcea1, 0xcea2, 0xcea3, 0xcea4, 0xcea5, 0xcea6, 0xcea7, 0xcea8, - 0xcea9, 0xceaa, 0xceab, 0xfffd, 0xfffd, 0xfffd, 0xceac, 0xcead, - 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb2, 0xceb3, 0xceb4, 0xceb5, - 0xceb6, 0xceb7, 0xceb8, 0xceb9, 0xceba, 0xcebb, 0xcebc, 0xfffd, - 0xcebd, 0xcebe, 0xcebf, 0xcec0, 0xcec1, 0xcec2, 0xcec3, 0xcec4, - 0xcec5, 0xcec6, 0xcec7, 0xfffd, 0xfffd, 0xfffd, 0xcec8, 0xcec9, - 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf, 0xced0, 0xced1, - 0xced2, 0xced3, 0xced4, 0xced5, 0xced6, 0xced7, 0xced8, 0xfffd, - 0xced9, 0xceda, 0xcedb, 0xcedc, 0xcedd, 0xcede, 0xcedf, 0xcee0, - 0xcee1, 0xcee2, 0xcee3, 0xfffd, 0xfffd, 0xfffd, 0xcee4, 0xcee5, - 0xcee6, 0xcee7, 0xcee8, 0xcee9, 0xceea, 0xceeb, 0xceec, 0xceed, - 0xceee, 0xceef, 0xcef0, 0xcef1, 0xcef2, 0xcef3, 0xcef4, 0xfffd, - 0xcef5, 0xcef6, 0xcef7, 0xcef8, 0xcef9, 0xcefa, 0xcefb, 0xcefc, - 0xcefd, 0xcefe, 0xceff, 0xfffd, - /* 0xc5 */ - 0xcf00, 0xcf01, 0xcf02, 0xcf03, 0xcf04, 0xcf05, 0xcf06, 0xcf07, - 0xcf08, 0xcf09, 0xcf0a, 0xcf0b, 0xcf0c, 0xcf0d, 0xcf0e, 0xcf0f, - 0xcf10, 0xfffd, 0xcf11, 0xcf12, 0xcf13, 0xcf14, 0xcf15, 0xcf16, - 0xcf17, 0xcf18, 0xcf19, 0xcf1a, 0xcf1b, 0xfffd, 0xfffd, 0xfffd, - 0xcf1c, 0xcf1d, 0xcf1e, 0xcf1f, 0xcf20, 0xcf21, 0xcf22, 0xcf23, - 0xcf24, 0xcf25, 0xcf26, 0xcf27, 0xcf28, 0xcf29, 0xcf2a, 0xcf2b, - 0xcf2c, 0xfffd, 0xcf2d, 0xcf2e, 0xcf2f, 0xcf30, 0xcf31, 0xcf32, - 0xcf33, 0xcf34, 0xcf35, 0xcf36, 0xcf37, 0xfffd, 0xcf38, 0xcf39, - 0xcf3a, 0xcf3b, 0xcf3c, 0xcf3d, 0xcf3e, 0xcf3f, 0xcf40, 0xcf41, - 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46, 0xcf47, 0xcf48, 0xfffd, - 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d, 0xcf4e, 0xcf4f, 0xcf50, - 0xcf51, 0xcf52, 0xcf53, 0xfffd, 0xfffd, 0xfffd, 0xcf54, 0xcf55, - 0xcf56, 0xcf57, 0xcf58, 0xcf59, 0xcf5a, 0xcf5b, 0xcf5c, 0xcf5d, - 0xcf5e, 0xcf5f, 0xcf60, 0xcf61, 0xcf62, 0xcf63, 0xcf64, 0xfffd, - 0xcf65, 0xcf66, 0xcf67, 0xcf68, 0xcf69, 0xcf6a, 0xcf6b, 0xcf6c, - 0xcf6d, 0xcf6e, 0xcf6f, 0xfffd, 0xfffd, 0xfffd, 0xcf70, 0xcf71, - 0xcf72, 0xcf73, 0xcf74, 0xcf75, 0xcf76, 0xcf77, 0xcf78, 0xcf79, - 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e, 0xcf7f, 0xcf80, 0xfffd, - 0xcf81, 0xcf82, 0xcf83, 0xcf84, 0xcf85, 0xcf86, 0xcf87, 0xcf88, - 0xcf89, 0xcf8a, 0xcf8b, 0xfffd, 0xfffd, 0xfffd, 0xcf8c, 0xcf8d, - 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92, 0xcf93, 0xcf94, 0xcf95, - 0xcf96, 0xcf97, 0xcf98, 0xcf99, 0xcf9a, 0xcf9b, 0xcf9c, 0xfffd, - 0xcf9d, 0xcf9e, 0xcf9f, 0xcfa0, 0xcfa1, 0xcfa2, 0xcfa3, 0xcfa4, - 0xcfa5, 0xcfa6, 0xcfa7, 0xfffd, - /* 0xc6 */ - 0xcfa8, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae, 0xcfaf, - 0xcfb0, 0xcfb1, 0xcfb2, 0xcfb3, 0xcfb4, 0xcfb5, 0xcfb6, 0xcfb7, - 0xcfb8, 0xfffd, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd, 0xcfbe, - 0xcfbf, 0xcfc0, 0xcfc1, 0xcfc2, 0xcfc3, 0xfffd, 0xfffd, 0xfffd, - 0xcfc4, 0xcfc5, 0xcfc6, 0xcfc7, 0xcfc8, 0xcfc9, 0xcfca, 0xcfcb, - 0xcfcc, 0xcfcd, 0xcfce, 0xcfcf, 0xcfd0, 0xcfd1, 0xcfd2, 0xcfd3, - 0xcfd4, 0xfffd, 0xcfd5, 0xcfd6, 0xcfd7, 0xcfd8, 0xcfd9, 0xcfda, - 0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf, 0xfffd, 0xcfe0, 0xcfe1, - 0xcfe2, 0xcfe3, 0xcfe4, 0xcfe5, 0xcfe6, 0xcfe7, 0xcfe8, 0xcfe9, - 0xcfea, 0xcfeb, 0xcfec, 0xcfed, 0xcfee, 0xcfef, 0xcff0, 0xfffd, - 0xcff1, 0xcff2, 0xcff3, 0xcff4, 0xcff5, 0xcff6, 0xcff7, 0xcff8, - 0xcff9, 0xcffa, 0xcffb, 0xfffd, 0xfffd, 0xfffd, 0xcffc, 0xcffd, - 0xcffe, 0xcfff, 0xd000, 0xd001, 0xd002, 0xd003, 0xd004, 0xd005, - 0xd006, 0xd007, 0xd008, 0xd009, 0xd00a, 0xd00b, 0xd00c, 0xfffd, - 0xd00d, 0xd00e, 0xd00f, 0xd010, 0xd011, 0xd012, 0xd013, 0xd014, - 0xd015, 0xd016, 0xd017, 0xfffd, 0xfffd, 0xfffd, 0xd018, 0xd019, - 0xd01a, 0xd01b, 0xd01c, 0xd01d, 0xd01e, 0xd01f, 0xd020, 0xd021, - 0xd022, 0xd023, 0xd024, 0xd025, 0xd026, 0xd027, 0xd028, 0xfffd, - 0xd029, 0xd02a, 0xd02b, 0xd02c, 0xd02d, 0xd02e, 0xd02f, 0xd030, - 0xd031, 0xd032, 0xd033, 0xfffd, 0xfffd, 0xfffd, 0xd034, 0xd035, - 0xd036, 0xd037, 0xd038, 0xd039, 0xd03a, 0xd03b, 0xd03c, 0xd03d, - 0xd03e, 0xd03f, 0xd040, 0xd041, 0xd042, 0xd043, 0xd044, 0xfffd, - 0xd045, 0xd046, 0xd047, 0xd048, 0xd049, 0xd04a, 0xd04b, 0xd04c, - 0xd04d, 0xd04e, 0xd04f, 0xfffd, - /* 0xc7 */ - 0xd050, 0xd051, 0xd052, 0xd053, 0xd054, 0xd055, 0xd056, 0xd057, - 0xd058, 0xd059, 0xd05a, 0xd05b, 0xd05c, 0xd05d, 0xd05e, 0xd05f, - 0xd060, 0xfffd, 0xd061, 0xd062, 0xd063, 0xd064, 0xd065, 0xd066, - 0xd067, 0xd068, 0xd069, 0xd06a, 0xd06b, 0xfffd, 0xfffd, 0xfffd, - 0xd06c, 0xd06d, 0xd06e, 0xd06f, 0xd070, 0xd071, 0xd072, 0xd073, - 0xd074, 0xd075, 0xd076, 0xd077, 0xd078, 0xd079, 0xd07a, 0xd07b, - 0xd07c, 0xfffd, 0xd07d, 0xd07e, 0xd07f, 0xd080, 0xd081, 0xd082, - 0xd083, 0xd084, 0xd085, 0xd086, 0xd087, 0xfffd, 0xd088, 0xd089, - 0xd08a, 0xd08b, 0xd08c, 0xd08d, 0xd08e, 0xd08f, 0xd090, 0xd091, - 0xd092, 0xd093, 0xd094, 0xd095, 0xd096, 0xd097, 0xd098, 0xfffd, - 0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d, 0xd09e, 0xd09f, 0xd0a0, - 0xd0a1, 0xd0a2, 0xd0a3, 0xfffd, 0xfffd, 0xfffd, 0xd0a4, 0xd0a5, - 0xd0a6, 0xd0a7, 0xd0a8, 0xd0a9, 0xd0aa, 0xd0ab, 0xd0ac, 0xd0ad, - 0xd0ae, 0xd0af, 0xd0b0, 0xd0b1, 0xd0b2, 0xd0b3, 0xd0b4, 0xfffd, - 0xd0b5, 0xd0b6, 0xd0b7, 0xd0b8, 0xd0b9, 0xd0ba, 0xd0bb, 0xd0bc, - 0xd0bd, 0xd0be, 0xd0bf, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0xc8 */ - 0x314c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xd0c0, 0xd0c1, 0xd0c2, 0xd0c3, 0xd0c4, 0xd0c5, 0xd0c6, 0xd0c7, - 0xd0c8, 0xd0c9, 0xd0ca, 0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce, 0xd0cf, - 0xd0d0, 0xfffd, 0xd0d1, 0xd0d2, 0xd0d3, 0xd0d4, 0xd0d5, 0xd0d6, - 0xd0d7, 0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0xfffd, 0xd0dc, 0xd0dd, - 0xd0de, 0xd0df, 0xd0e0, 0xd0e1, 0xd0e2, 0xd0e3, 0xd0e4, 0xd0e5, - 0xd0e6, 0xd0e7, 0xd0e8, 0xd0e9, 0xd0ea, 0xd0eb, 0xd0ec, 0xfffd, - 0xd0ed, 0xd0ee, 0xd0ef, 0xd0f0, 0xd0f1, 0xd0f2, 0xd0f3, 0xd0f4, - 0xd0f5, 0xd0f6, 0xd0f7, 0xfffd, 0xfffd, 0xfffd, 0xd0f8, 0xd0f9, - 0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd0fe, 0xd0ff, 0xd100, 0xd101, - 0xd102, 0xd103, 0xd104, 0xd105, 0xd106, 0xd107, 0xd108, 0xfffd, - 0xd109, 0xd10a, 0xd10b, 0xd10c, 0xd10d, 0xd10e, 0xd10f, 0xd110, - 0xd111, 0xd112, 0xd113, 0xfffd, 0xfffd, 0xfffd, 0xd114, 0xd115, - 0xd116, 0xd117, 0xd118, 0xd119, 0xd11a, 0xd11b, 0xd11c, 0xd11d, - 0xd11e, 0xd11f, 0xd120, 0xd121, 0xd122, 0xd123, 0xd124, 0xfffd, - 0xd125, 0xd126, 0xd127, 0xd128, 0xd129, 0xd12a, 0xd12b, 0xd12c, - 0xd12d, 0xd12e, 0xd12f, 0xfffd, 0xfffd, 0xfffd, 0xd130, 0xd131, - 0xd132, 0xd133, 0xd134, 0xd135, 0xd136, 0xd137, 0xd138, 0xd139, - 0xd13a, 0xd13b, 0xd13c, 0xd13d, 0xd13e, 0xd13f, 0xd140, 0xfffd, - 0xd141, 0xd142, 0xd143, 0xd144, 0xd145, 0xd146, 0xd147, 0xd148, - 0xd149, 0xd14a, 0xd14b, 0xfffd, - /* 0xc9 */ - 0xd14c, 0xd14d, 0xd14e, 0xd14f, 0xd150, 0xd151, 0xd152, 0xd153, - 0xd154, 0xd155, 0xd156, 0xd157, 0xd158, 0xd159, 0xd15a, 0xd15b, - 0xd15c, 0xfffd, 0xd15d, 0xd15e, 0xd15f, 0xd160, 0xd161, 0xd162, - 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, 0xfffd, 0xfffd, 0xfffd, - 0xd168, 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e, 0xd16f, - 0xd170, 0xd171, 0xd172, 0xd173, 0xd174, 0xd175, 0xd176, 0xd177, - 0xd178, 0xfffd, 0xd179, 0xd17a, 0xd17b, 0xd17c, 0xd17d, 0xd17e, - 0xd17f, 0xd180, 0xd181, 0xd182, 0xd183, 0xfffd, 0xd184, 0xd185, - 0xd186, 0xd187, 0xd188, 0xd189, 0xd18a, 0xd18b, 0xd18c, 0xd18d, - 0xd18e, 0xd18f, 0xd190, 0xd191, 0xd192, 0xd193, 0xd194, 0xfffd, - 0xd195, 0xd196, 0xd197, 0xd198, 0xd199, 0xd19a, 0xd19b, 0xd19c, - 0xd19d, 0xd19e, 0xd19f, 0xfffd, 0xfffd, 0xfffd, 0xd1a0, 0xd1a1, - 0xd1a2, 0xd1a3, 0xd1a4, 0xd1a5, 0xd1a6, 0xd1a7, 0xd1a8, 0xd1a9, - 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af, 0xd1b0, 0xfffd, - 0xd1b1, 0xd1b2, 0xd1b3, 0xd1b4, 0xd1b5, 0xd1b6, 0xd1b7, 0xd1b8, - 0xd1b9, 0xd1ba, 0xd1bb, 0xfffd, 0xfffd, 0xfffd, 0xd1bc, 0xd1bd, - 0xd1be, 0xd1bf, 0xd1c0, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4, 0xd1c5, - 0xd1c6, 0xd1c7, 0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc, 0xfffd, - 0xd1cd, 0xd1ce, 0xd1cf, 0xd1d0, 0xd1d1, 0xd1d2, 0xd1d3, 0xd1d4, - 0xd1d5, 0xd1d6, 0xd1d7, 0xfffd, 0xfffd, 0xfffd, 0xd1d8, 0xd1d9, - 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, 0xd1de, 0xd1df, 0xd1e0, 0xd1e1, - 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6, 0xd1e7, 0xd1e8, 0xfffd, - 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee, 0xd1ef, 0xd1f0, - 0xd1f1, 0xd1f2, 0xd1f3, 0xfffd, - /* 0xca */ - 0xd1f4, 0xd1f5, 0xd1f6, 0xd1f7, 0xd1f8, 0xd1f9, 0xd1fa, 0xd1fb, - 0xd1fc, 0xd1fd, 0xd1fe, 0xd1ff, 0xd200, 0xd201, 0xd202, 0xd203, - 0xd204, 0xfffd, 0xd205, 0xd206, 0xd207, 0xd208, 0xd209, 0xd20a, - 0xd20b, 0xd20c, 0xd20d, 0xd20e, 0xd20f, 0xfffd, 0xfffd, 0xfffd, - 0xd210, 0xd211, 0xd212, 0xd213, 0xd214, 0xd215, 0xd216, 0xd217, - 0xd218, 0xd219, 0xd21a, 0xd21b, 0xd21c, 0xd21d, 0xd21e, 0xd21f, - 0xd220, 0xfffd, 0xd221, 0xd222, 0xd223, 0xd224, 0xd225, 0xd226, - 0xd227, 0xd228, 0xd229, 0xd22a, 0xd22b, 0xfffd, 0xd22c, 0xd22d, - 0xd22e, 0xd22f, 0xd230, 0xd231, 0xd232, 0xd233, 0xd234, 0xd235, - 0xd236, 0xd237, 0xd238, 0xd239, 0xd23a, 0xd23b, 0xd23c, 0xfffd, - 0xd23d, 0xd23e, 0xd23f, 0xd240, 0xd241, 0xd242, 0xd243, 0xd244, - 0xd245, 0xd246, 0xd247, 0xfffd, 0xfffd, 0xfffd, 0xd248, 0xd249, - 0xd24a, 0xd24b, 0xd24c, 0xd24d, 0xd24e, 0xd24f, 0xd250, 0xd251, - 0xd252, 0xd253, 0xd254, 0xd255, 0xd256, 0xd257, 0xd258, 0xfffd, - 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d, 0xd25e, 0xd25f, 0xd260, - 0xd261, 0xd262, 0xd263, 0xfffd, 0xfffd, 0xfffd, 0xd264, 0xd265, - 0xd266, 0xd267, 0xd268, 0xd269, 0xd26a, 0xd26b, 0xd26c, 0xd26d, - 0xd26e, 0xd26f, 0xd270, 0xd271, 0xd272, 0xd273, 0xd274, 0xfffd, - 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, 0xd27a, 0xd27b, 0xd27c, - 0xd27d, 0xd27e, 0xd27f, 0xfffd, 0xfffd, 0xfffd, 0xd280, 0xd281, - 0xd282, 0xd283, 0xd284, 0xd285, 0xd286, 0xd287, 0xd288, 0xd289, - 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, 0xd28f, 0xd290, 0xfffd, - 0xd291, 0xd292, 0xd293, 0xd294, 0xd295, 0xd296, 0xd297, 0xd298, - 0xd299, 0xd29a, 0xd29b, 0xfffd, - /* 0xcb */ - 0xd29c, 0xd29d, 0xd29e, 0xd29f, 0xd2a0, 0xd2a1, 0xd2a2, 0xd2a3, - 0xd2a4, 0xd2a5, 0xd2a6, 0xd2a7, 0xd2a8, 0xd2a9, 0xd2aa, 0xd2ab, - 0xd2ac, 0xfffd, 0xd2ad, 0xd2ae, 0xd2af, 0xd2b0, 0xd2b1, 0xd2b2, - 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6, 0xd2b7, 0xfffd, 0xfffd, 0xfffd, - 0xd2b8, 0xd2b9, 0xd2ba, 0xd2bb, 0xd2bc, 0xd2bd, 0xd2be, 0xd2bf, - 0xd2c0, 0xd2c1, 0xd2c2, 0xd2c3, 0xd2c4, 0xd2c5, 0xd2c6, 0xd2c7, - 0xd2c8, 0xfffd, 0xd2c9, 0xd2ca, 0xd2cb, 0xd2cc, 0xd2cd, 0xd2ce, - 0xd2cf, 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3, 0xfffd, 0xd2d4, 0xd2d5, - 0xd2d6, 0xd2d7, 0xd2d8, 0xd2d9, 0xd2da, 0xd2db, 0xd2dc, 0xd2dd, - 0xd2de, 0xd2df, 0xd2e0, 0xd2e1, 0xd2e2, 0xd2e3, 0xd2e4, 0xfffd, - 0xd2e5, 0xd2e6, 0xd2e7, 0xd2e8, 0xd2e9, 0xd2ea, 0xd2eb, 0xd2ec, - 0xd2ed, 0xd2ee, 0xd2ef, 0xfffd, 0xfffd, 0xfffd, 0xd2f0, 0xd2f1, - 0xd2f2, 0xd2f3, 0xd2f4, 0xd2f5, 0xd2f6, 0xd2f7, 0xd2f8, 0xd2f9, - 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe, 0xd2ff, 0xd300, 0xfffd, - 0xd301, 0xd302, 0xd303, 0xd304, 0xd305, 0xd306, 0xd307, 0xd308, - 0xd309, 0xd30a, 0xd30b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0xcc */ - 0x314d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xd30c, 0xd30d, 0xd30e, 0xd30f, 0xd310, 0xd311, 0xd312, 0xd313, - 0xd314, 0xd315, 0xd316, 0xd317, 0xd318, 0xd319, 0xd31a, 0xd31b, - 0xd31c, 0xfffd, 0xd31d, 0xd31e, 0xd31f, 0xd320, 0xd321, 0xd322, - 0xd323, 0xd324, 0xd325, 0xd326, 0xd327, 0xfffd, 0xd328, 0xd329, - 0xd32a, 0xd32b, 0xd32c, 0xd32d, 0xd32e, 0xd32f, 0xd330, 0xd331, - 0xd332, 0xd333, 0xd334, 0xd335, 0xd336, 0xd337, 0xd338, 0xfffd, - 0xd339, 0xd33a, 0xd33b, 0xd33c, 0xd33d, 0xd33e, 0xd33f, 0xd340, - 0xd341, 0xd342, 0xd343, 0xfffd, 0xfffd, 0xfffd, 0xd344, 0xd345, - 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c, 0xd34d, - 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xfffd, - 0xd355, 0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b, 0xd35c, - 0xd35d, 0xd35e, 0xd35f, 0xfffd, 0xfffd, 0xfffd, 0xd360, 0xd361, - 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, 0xd367, 0xd368, 0xd369, - 0xd36a, 0xd36b, 0xd36c, 0xd36d, 0xd36e, 0xd36f, 0xd370, 0xfffd, - 0xd371, 0xd372, 0xd373, 0xd374, 0xd375, 0xd376, 0xd377, 0xd378, - 0xd379, 0xd37a, 0xd37b, 0xfffd, 0xfffd, 0xfffd, 0xd37c, 0xd37d, - 0xd37e, 0xd37f, 0xd380, 0xd381, 0xd382, 0xd383, 0xd384, 0xd385, - 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd38b, 0xd38c, 0xfffd, - 0xd38d, 0xd38e, 0xd38f, 0xd390, 0xd391, 0xd392, 0xd393, 0xd394, - 0xd395, 0xd396, 0xd397, 0xfffd, - /* 0xcd */ - 0xd398, 0xd399, 0xd39a, 0xd39b, 0xd39c, 0xd39d, 0xd39e, 0xd39f, - 0xd3a0, 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a6, 0xd3a7, - 0xd3a8, 0xfffd, 0xd3a9, 0xd3aa, 0xd3ab, 0xd3ac, 0xd3ad, 0xd3ae, - 0xd3af, 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0xfffd, 0xfffd, 0xfffd, - 0xd3b4, 0xd3b5, 0xd3b6, 0xd3b7, 0xd3b8, 0xd3b9, 0xd3ba, 0xd3bb, - 0xd3bc, 0xd3bd, 0xd3be, 0xd3bf, 0xd3c0, 0xd3c1, 0xd3c2, 0xd3c3, - 0xd3c4, 0xfffd, 0xd3c5, 0xd3c6, 0xd3c7, 0xd3c8, 0xd3c9, 0xd3ca, - 0xd3cb, 0xd3cc, 0xd3cd, 0xd3ce, 0xd3cf, 0xfffd, 0xd3d0, 0xd3d1, - 0xd3d2, 0xd3d3, 0xd3d4, 0xd3d5, 0xd3d6, 0xd3d7, 0xd3d8, 0xd3d9, - 0xd3da, 0xd3db, 0xd3dc, 0xd3dd, 0xd3de, 0xd3df, 0xd3e0, 0xfffd, - 0xd3e1, 0xd3e2, 0xd3e3, 0xd3e4, 0xd3e5, 0xd3e6, 0xd3e7, 0xd3e8, - 0xd3e9, 0xd3ea, 0xd3eb, 0xfffd, 0xfffd, 0xfffd, 0xd3ec, 0xd3ed, - 0xd3ee, 0xd3ef, 0xd3f0, 0xd3f1, 0xd3f2, 0xd3f3, 0xd3f4, 0xd3f5, - 0xd3f6, 0xd3f7, 0xd3f8, 0xd3f9, 0xd3fa, 0xd3fb, 0xd3fc, 0xfffd, - 0xd3fd, 0xd3fe, 0xd3ff, 0xd400, 0xd401, 0xd402, 0xd403, 0xd404, - 0xd405, 0xd406, 0xd407, 0xfffd, 0xfffd, 0xfffd, 0xd408, 0xd409, - 0xd40a, 0xd40b, 0xd40c, 0xd40d, 0xd40e, 0xd40f, 0xd410, 0xd411, - 0xd412, 0xd413, 0xd414, 0xd415, 0xd416, 0xd417, 0xd418, 0xfffd, - 0xd419, 0xd41a, 0xd41b, 0xd41c, 0xd41d, 0xd41e, 0xd41f, 0xd420, - 0xd421, 0xd422, 0xd423, 0xfffd, 0xfffd, 0xfffd, 0xd424, 0xd425, - 0xd426, 0xd427, 0xd428, 0xd429, 0xd42a, 0xd42b, 0xd42c, 0xd42d, - 0xd42e, 0xd42f, 0xd430, 0xd431, 0xd432, 0xd433, 0xd434, 0xfffd, - 0xd435, 0xd436, 0xd437, 0xd438, 0xd439, 0xd43a, 0xd43b, 0xd43c, - 0xd43d, 0xd43e, 0xd43f, 0xfffd, - /* 0xce */ - 0xd440, 0xd441, 0xd442, 0xd443, 0xd444, 0xd445, 0xd446, 0xd447, - 0xd448, 0xd449, 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, - 0xd450, 0xfffd, 0xd451, 0xd452, 0xd453, 0xd454, 0xd455, 0xd456, - 0xd457, 0xd458, 0xd459, 0xd45a, 0xd45b, 0xfffd, 0xfffd, 0xfffd, - 0xd45c, 0xd45d, 0xd45e, 0xd45f, 0xd460, 0xd461, 0xd462, 0xd463, - 0xd464, 0xd465, 0xd466, 0xd467, 0xd468, 0xd469, 0xd46a, 0xd46b, - 0xd46c, 0xfffd, 0xd46d, 0xd46e, 0xd46f, 0xd470, 0xd471, 0xd472, - 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, 0xfffd, 0xd478, 0xd479, - 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0xd47e, 0xd47f, 0xd480, 0xd481, - 0xd482, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, 0xd488, 0xfffd, - 0xd489, 0xd48a, 0xd48b, 0xd48c, 0xd48d, 0xd48e, 0xd48f, 0xd490, - 0xd491, 0xd492, 0xd493, 0xfffd, 0xfffd, 0xfffd, 0xd494, 0xd495, - 0xd496, 0xd497, 0xd498, 0xd499, 0xd49a, 0xd49b, 0xd49c, 0xd49d, - 0xd49e, 0xd49f, 0xd4a0, 0xd4a1, 0xd4a2, 0xd4a3, 0xd4a4, 0xfffd, - 0xd4a5, 0xd4a6, 0xd4a7, 0xd4a8, 0xd4a9, 0xd4aa, 0xd4ab, 0xd4ac, - 0xd4ad, 0xd4ae, 0xd4af, 0xfffd, 0xfffd, 0xfffd, 0xd4b0, 0xd4b1, - 0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5, 0xd4b6, 0xd4b7, 0xd4b8, 0xd4b9, - 0xd4ba, 0xd4bb, 0xd4bc, 0xd4bd, 0xd4be, 0xd4bf, 0xd4c0, 0xfffd, - 0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4, 0xd4c5, 0xd4c6, 0xd4c7, 0xd4c8, - 0xd4c9, 0xd4ca, 0xd4cb, 0xfffd, 0xfffd, 0xfffd, 0xd4cc, 0xd4cd, - 0xd4ce, 0xd4cf, 0xd4d0, 0xd4d1, 0xd4d2, 0xd4d3, 0xd4d4, 0xd4d5, - 0xd4d6, 0xd4d7, 0xd4d8, 0xd4d9, 0xd4da, 0xd4db, 0xd4dc, 0xfffd, - 0xd4dd, 0xd4de, 0xd4df, 0xd4e0, 0xd4e1, 0xd4e2, 0xd4e3, 0xd4e4, - 0xd4e5, 0xd4e6, 0xd4e7, 0xfffd, - /* 0xcf */ - 0xd4e8, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ec, 0xd4ed, 0xd4ee, 0xd4ef, - 0xd4f0, 0xd4f1, 0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5, 0xd4f6, 0xd4f7, - 0xd4f8, 0xfffd, 0xd4f9, 0xd4fa, 0xd4fb, 0xd4fc, 0xd4fd, 0xd4fe, - 0xd4ff, 0xd500, 0xd501, 0xd502, 0xd503, 0xfffd, 0xfffd, 0xfffd, - 0xd504, 0xd505, 0xd506, 0xd507, 0xd508, 0xd509, 0xd50a, 0xd50b, - 0xd50c, 0xd50d, 0xd50e, 0xd50f, 0xd510, 0xd511, 0xd512, 0xd513, - 0xd514, 0xfffd, 0xd515, 0xd516, 0xd517, 0xd518, 0xd519, 0xd51a, - 0xd51b, 0xd51c, 0xd51d, 0xd51e, 0xd51f, 0xfffd, 0xd520, 0xd521, - 0xd522, 0xd523, 0xd524, 0xd525, 0xd526, 0xd527, 0xd528, 0xd529, - 0xd52a, 0xd52b, 0xd52c, 0xd52d, 0xd52e, 0xd52f, 0xd530, 0xfffd, - 0xd531, 0xd532, 0xd533, 0xd534, 0xd535, 0xd536, 0xd537, 0xd538, - 0xd539, 0xd53a, 0xd53b, 0xfffd, 0xfffd, 0xfffd, 0xd53c, 0xd53d, - 0xd53e, 0xd53f, 0xd540, 0xd541, 0xd542, 0xd543, 0xd544, 0xd545, - 0xd546, 0xd547, 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54c, 0xfffd, - 0xd54d, 0xd54e, 0xd54f, 0xd550, 0xd551, 0xd552, 0xd553, 0xd554, - 0xd555, 0xd556, 0xd557, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0xd0 */ - 0x314e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xd558, 0xd559, 0xd55a, 0xd55b, 0xd55c, 0xd55d, 0xd55e, 0xd55f, - 0xd560, 0xd561, 0xd562, 0xd563, 0xd564, 0xd565, 0xd566, 0xd567, - 0xd568, 0xfffd, 0xd569, 0xd56a, 0xd56b, 0xd56c, 0xd56d, 0xd56e, - 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573, 0xfffd, 0xd574, 0xd575, - 0xd576, 0xd577, 0xd578, 0xd579, 0xd57a, 0xd57b, 0xd57c, 0xd57d, - 0xd57e, 0xd57f, 0xd580, 0xd581, 0xd582, 0xd583, 0xd584, 0xfffd, - 0xd585, 0xd586, 0xd587, 0xd588, 0xd589, 0xd58a, 0xd58b, 0xd58c, - 0xd58d, 0xd58e, 0xd58f, 0xfffd, 0xfffd, 0xfffd, 0xd590, 0xd591, - 0xd592, 0xd593, 0xd594, 0xd595, 0xd596, 0xd597, 0xd598, 0xd599, - 0xd59a, 0xd59b, 0xd59c, 0xd59d, 0xd59e, 0xd59f, 0xd5a0, 0xfffd, - 0xd5a1, 0xd5a2, 0xd5a3, 0xd5a4, 0xd5a5, 0xd5a6, 0xd5a7, 0xd5a8, - 0xd5a9, 0xd5aa, 0xd5ab, 0xfffd, 0xfffd, 0xfffd, 0xd5ac, 0xd5ad, - 0xd5ae, 0xd5af, 0xd5b0, 0xd5b1, 0xd5b2, 0xd5b3, 0xd5b4, 0xd5b5, - 0xd5b6, 0xd5b7, 0xd5b8, 0xd5b9, 0xd5ba, 0xd5bb, 0xd5bc, 0xfffd, - 0xd5bd, 0xd5be, 0xd5bf, 0xd5c0, 0xd5c1, 0xd5c2, 0xd5c3, 0xd5c4, - 0xd5c5, 0xd5c6, 0xd5c7, 0xfffd, 0xfffd, 0xfffd, 0xd5c8, 0xd5c9, - 0xd5ca, 0xd5cb, 0xd5cc, 0xd5cd, 0xd5ce, 0xd5cf, 0xd5d0, 0xd5d1, - 0xd5d2, 0xd5d3, 0xd5d4, 0xd5d5, 0xd5d6, 0xd5d7, 0xd5d8, 0xfffd, - 0xd5d9, 0xd5da, 0xd5db, 0xd5dc, 0xd5dd, 0xd5de, 0xd5df, 0xd5e0, - 0xd5e1, 0xd5e2, 0xd5e3, 0xfffd, - /* 0xd1 */ - 0xd5e4, 0xd5e5, 0xd5e6, 0xd5e7, 0xd5e8, 0xd5e9, 0xd5ea, 0xd5eb, - 0xd5ec, 0xd5ed, 0xd5ee, 0xd5ef, 0xd5f0, 0xd5f1, 0xd5f2, 0xd5f3, - 0xd5f4, 0xfffd, 0xd5f5, 0xd5f6, 0xd5f7, 0xd5f8, 0xd5f9, 0xd5fa, - 0xd5fb, 0xd5fc, 0xd5fd, 0xd5fe, 0xd5ff, 0xfffd, 0xfffd, 0xfffd, - 0xd600, 0xd601, 0xd602, 0xd603, 0xd604, 0xd605, 0xd606, 0xd607, - 0xd608, 0xd609, 0xd60a, 0xd60b, 0xd60c, 0xd60d, 0xd60e, 0xd60f, - 0xd610, 0xfffd, 0xd611, 0xd612, 0xd613, 0xd614, 0xd615, 0xd616, - 0xd617, 0xd618, 0xd619, 0xd61a, 0xd61b, 0xfffd, 0xd61c, 0xd61d, - 0xd61e, 0xd61f, 0xd620, 0xd621, 0xd622, 0xd623, 0xd624, 0xd625, - 0xd626, 0xd627, 0xd628, 0xd629, 0xd62a, 0xd62b, 0xd62c, 0xfffd, - 0xd62d, 0xd62e, 0xd62f, 0xd630, 0xd631, 0xd632, 0xd633, 0xd634, - 0xd635, 0xd636, 0xd637, 0xfffd, 0xfffd, 0xfffd, 0xd638, 0xd639, - 0xd63a, 0xd63b, 0xd63c, 0xd63d, 0xd63e, 0xd63f, 0xd640, 0xd641, - 0xd642, 0xd643, 0xd644, 0xd645, 0xd646, 0xd647, 0xd648, 0xfffd, - 0xd649, 0xd64a, 0xd64b, 0xd64c, 0xd64d, 0xd64e, 0xd64f, 0xd650, - 0xd651, 0xd652, 0xd653, 0xfffd, 0xfffd, 0xfffd, 0xd654, 0xd655, - 0xd656, 0xd657, 0xd658, 0xd659, 0xd65a, 0xd65b, 0xd65c, 0xd65d, - 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662, 0xd663, 0xd664, 0xfffd, - 0xd665, 0xd666, 0xd667, 0xd668, 0xd669, 0xd66a, 0xd66b, 0xd66c, - 0xd66d, 0xd66e, 0xd66f, 0xfffd, 0xfffd, 0xfffd, 0xd670, 0xd671, - 0xd672, 0xd673, 0xd674, 0xd675, 0xd676, 0xd677, 0xd678, 0xd679, - 0xd67a, 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd67f, 0xd680, 0xfffd, - 0xd681, 0xd682, 0xd683, 0xd684, 0xd685, 0xd686, 0xd687, 0xd688, - 0xd689, 0xd68a, 0xd68b, 0xfffd, - /* 0xd2 */ - 0xd68c, 0xd68d, 0xd68e, 0xd68f, 0xd690, 0xd691, 0xd692, 0xd693, - 0xd694, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a, 0xd69b, - 0xd69c, 0xfffd, 0xd69d, 0xd69e, 0xd69f, 0xd6a0, 0xd6a1, 0xd6a2, - 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7, 0xfffd, 0xfffd, 0xfffd, - 0xd6a8, 0xd6a9, 0xd6aa, 0xd6ab, 0xd6ac, 0xd6ad, 0xd6ae, 0xd6af, - 0xd6b0, 0xd6b1, 0xd6b2, 0xd6b3, 0xd6b4, 0xd6b5, 0xd6b6, 0xd6b7, - 0xd6b8, 0xfffd, 0xd6b9, 0xd6ba, 0xd6bb, 0xd6bc, 0xd6bd, 0xd6be, - 0xd6bf, 0xd6c0, 0xd6c1, 0xd6c2, 0xd6c3, 0xfffd, 0xd6c4, 0xd6c5, - 0xd6c6, 0xd6c7, 0xd6c8, 0xd6c9, 0xd6ca, 0xd6cb, 0xd6cc, 0xd6cd, - 0xd6ce, 0xd6cf, 0xd6d0, 0xd6d1, 0xd6d2, 0xd6d3, 0xd6d4, 0xfffd, - 0xd6d5, 0xd6d6, 0xd6d7, 0xd6d8, 0xd6d9, 0xd6da, 0xd6db, 0xd6dc, - 0xd6dd, 0xd6de, 0xd6df, 0xfffd, 0xfffd, 0xfffd, 0xd6e0, 0xd6e1, - 0xd6e2, 0xd6e3, 0xd6e4, 0xd6e5, 0xd6e6, 0xd6e7, 0xd6e8, 0xd6e9, - 0xd6ea, 0xd6eb, 0xd6ec, 0xd6ed, 0xd6ee, 0xd6ef, 0xd6f0, 0xfffd, - 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f5, 0xd6f6, 0xd6f7, 0xd6f8, - 0xd6f9, 0xd6fa, 0xd6fb, 0xfffd, 0xfffd, 0xfffd, 0xd6fc, 0xd6fd, - 0xd6fe, 0xd6ff, 0xd700, 0xd701, 0xd702, 0xd703, 0xd704, 0xd705, - 0xd706, 0xd707, 0xd708, 0xd709, 0xd70a, 0xd70b, 0xd70c, 0xfffd, - 0xd70d, 0xd70e, 0xd70f, 0xd710, 0xd711, 0xd712, 0xd713, 0xd714, - 0xd715, 0xd716, 0xd717, 0xfffd, 0xfffd, 0xfffd, 0xd718, 0xd719, - 0xd71a, 0xd71b, 0xd71c, 0xd71d, 0xd71e, 0xd71f, 0xd720, 0xd721, - 0xd722, 0xd723, 0xd724, 0xd725, 0xd726, 0xd727, 0xd728, 0xfffd, - 0xd729, 0xd72a, 0xd72b, 0xd72c, 0xd72d, 0xd72e, 0xd72f, 0xd730, - 0xd731, 0xd732, 0xd733, 0xfffd, - /* 0xd3 */ - 0xd734, 0xd735, 0xd736, 0xd737, 0xd738, 0xd739, 0xd73a, 0xd73b, - 0xd73c, 0xd73d, 0xd73e, 0xd73f, 0xd740, 0xd741, 0xd742, 0xd743, - 0xd744, 0xfffd, 0xd745, 0xd746, 0xd747, 0xd748, 0xd749, 0xd74a, - 0xd74b, 0xd74c, 0xd74d, 0xd74e, 0xd74f, 0xfffd, 0xfffd, 0xfffd, - 0xd750, 0xd751, 0xd752, 0xd753, 0xd754, 0xd755, 0xd756, 0xd757, - 0xd758, 0xd759, 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f, - 0xd760, 0xfffd, 0xd761, 0xd762, 0xd763, 0xd764, 0xd765, 0xd766, - 0xd767, 0xd768, 0xd769, 0xd76a, 0xd76b, 0xfffd, 0xd76c, 0xd76d, - 0xd76e, 0xd76f, 0xd770, 0xd771, 0xd772, 0xd773, 0xd774, 0xd775, - 0xd776, 0xd777, 0xd778, 0xd779, 0xd77a, 0xd77b, 0xd77c, 0xfffd, - 0xd77d, 0xd77e, 0xd77f, 0xd780, 0xd781, 0xd782, 0xd783, 0xd784, - 0xd785, 0xd786, 0xd787, 0xfffd, 0xfffd, 0xfffd, 0xd788, 0xd789, - 0xd78a, 0xd78b, 0xd78c, 0xd78d, 0xd78e, 0xd78f, 0xd790, 0xd791, - 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797, 0xd798, 0xfffd, - 0xd799, 0xd79a, 0xd79b, 0xd79c, 0xd79d, 0xd79e, 0xd79f, 0xd7a0, - 0xd7a1, 0xd7a2, 0xd7a3, +/* Tables mapping 5-bit groups to jamo letters. */ +/* Note that Jamo XX = UHC 0xA4A0+XX = Unicode 0x3130+XX */ +#define NONE 0xfd +#define FILL 0xff +static const unsigned char jamo_initial[32] = { + NONE, FILL, 0x01, 0x02, 0x04, 0x07, 0x08, 0x09, + 0x11, 0x12, 0x13, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, +}; +static const unsigned char jamo_medial[32] = { + NONE, NONE, FILL, 0x1f, 0x20, 0x21, 0x22, 0x23, + NONE, NONE, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, + NONE, NONE, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + NONE, NONE, 0x30, 0x31, 0x32, 0x33, NONE, NONE, +}; +static const unsigned char jamo_final[32] = { + NONE, FILL, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, NONE, 0x12, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, NONE, NONE, +}; +/* Same as jamo_final, except that it excludes characters already + contained in jamo_initial. 11 characters instead of 27. */ +static const unsigned char jamo_final_notinitial[32] = { + NONE, NONE, NONE, NONE, 0x03, NONE, 0x05, 0x06, + NONE, NONE, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, NONE, NONE, NONE, 0x14, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, +}; + +/* Tables mapping 5-bit groups to packed indices. */ +#define none -1 +#define fill 0 +static const signed char jamo_initial_index[32] = { + none, fill, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, none, none, none, + none, none, none, none, none, none, none, none, +}; +static const signed char jamo_medial_index[32] = { + none, none, fill, 0x01, 0x02, 0x03, 0x04, 0x05, + none, none, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, + none, none, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, + none, none, 0x12, 0x13, 0x14, 0x15, none, none, +}; +static const signed char jamo_final_index[32] = { + none, fill, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, none, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, none, none, }; static int @@ -2006,15 +90,46 @@ johab_hangul_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) if (n >= 2) { unsigned char c2 = s[1]; if ((c2 >= 0x41 && c2 < 0x7f) || (c2 >= 0x81 && c2 < 0xff)) { - unsigned int i = 188 * (c1 - 0x84) + (c2 - (c2 >= 0x81 ? 0x43 : 0x41)); - unsigned short wc = 0xfffd; - { - if (i < 14975) - wc = johab_hangul_2uni_page84[i]; - } - if (wc != 0xfffd) { - *pwc = (wchar_t) wc; - return 2; + unsigned int johab = (c1 << 8) | c2; + unsigned int bitspart1 = (johab >> 10) & 31; + unsigned int bitspart2 = (johab >> 5) & 31; + unsigned int bitspart3 = johab & 31; + int index1 = jamo_initial_index[bitspart1]; + int index2 = jamo_medial_index[bitspart2]; + int index3 = jamo_final_index[bitspart3]; + /* Exclude "none" values. */ + if (index1 >= 0 && index2 >= 0 && index3 >= 0) { + /* Deal with "fill" values in initial or medial position. */ + if (index1 == fill) { + if (index2 == fill) { + unsigned char jamo3 = jamo_final_notinitial[bitspart3]; + if (jamo3 != NONE) { + *pwc = (wchar_t) 0x3130 + jamo3; + return 2; + } + } else if (index3 == fill) { + unsigned char jamo2 = jamo_medial[bitspart2]; + if (jamo2 != NONE && jamo2 != FILL) { + *pwc = (wchar_t) 0x3130 + jamo2; + return 2; + } + } + /* Syllables composed only of medial and final don't exist. */ + } else if (index2 == fill) { + if (index3 == fill) { + unsigned char jamo1 = jamo_initial[bitspart1]; + if (jamo1 != NONE && jamo1 != FILL) { + *pwc = (wchar_t) 0x3130 + jamo1; + return 2; + } + } + /* Syllables composed only of initial and final don't exist. */ + } else { + /* index1 and index2 are not fill, but index3 may be fill. */ + /* Nothing more to exclude. All 11172 code points are valid. */ + *pwc = 0xac00 + ((index1 - 1) * 21 + (index2 - 1)) * 28 + index3; + return 2; + } } } return RET_ILSEQ; @@ -2024,1468 +139,63 @@ johab_hangul_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) return RET_ILSEQ; } -static const unsigned short johab_hangul_page31[56] = { - 0x0000, 0x8841, 0x8c41, 0x8444, 0x9041, 0x8446, 0x8447, 0x9441, /*0x30-0x37*/ +/* 51 Jamo: 19 initial, 21 medial, 11 final not initial. */ +static const unsigned short johab_hangul_page31[51] = { + 0x8841, 0x8c41, 0x8444, 0x9041, 0x8446, 0x8447, 0x9441, /*0x30-0x37*/ 0x9841, 0x9c41, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, /*0x38-0x3f*/ 0x8450, 0xa041, 0xa441, 0xa841, 0x8454, 0xac41, 0xb041, 0xb441, /*0x40-0x47*/ 0xb841, 0xbc41, 0xc041, 0xc441, 0xc841, 0xcc41, 0xd041, 0x8461, /*0x48-0x4f*/ 0x8481, 0x84a1, 0x84c1, 0x84e1, 0x8541, 0x8561, 0x8581, 0x85a1, /*0x50-0x57*/ 0x85c1, 0x85e1, 0x8641, 0x8661, 0x8681, 0x86a1, 0x86c1, 0x86e1, /*0x58-0x5f*/ - 0x8741, 0x8761, 0x8781, 0x87a1, 0x0000, 0x0000, 0x0000, 0x0000, /*0x60-0x67*/ + 0x8741, 0x8761, 0x8781, 0x87a1, /*0x60-0x67*/ +}; + +/* Tables mapping packed indices to 5-bit groups. */ +/* index1+1 = jamo_initial_index[bitspart1] <==> + bitspart1 = jamo_initial_index_inverse[index1] */ +static const char jamo_initial_index_inverse[19] = { + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, +}; +/* index2+1 = jamo_medial_index[bitspart2] <==> + bitspart2 = jamo_medial_index_inverse[index2] */ +static const char jamo_medial_index_inverse[21] = { + 0x03, 0x04, 0x05, 0x06, 0x07, + 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x1a, 0x1b, 0x1c, 0x1d, }; -static const unsigned short johab_hangul_pageac[11176] = { - 0x8861, 0x8862, 0x8863, 0x8864, 0x8865, 0x8866, 0x8867, 0x8868, /*0x00-0x07*/ - 0x8869, 0x886a, 0x886b, 0x886c, 0x886d, 0x886e, 0x886f, 0x8870, /*0x08-0x0f*/ - 0x8871, 0x8873, 0x8874, 0x8875, 0x8876, 0x8877, 0x8878, 0x8879, /*0x10-0x17*/ - 0x887a, 0x887b, 0x887c, 0x887d, 0x8881, 0x8882, 0x8883, 0x8884, /*0x18-0x1f*/ - 0x8885, 0x8886, 0x8887, 0x8888, 0x8889, 0x888a, 0x888b, 0x888c, /*0x20-0x27*/ - 0x888d, 0x888e, 0x888f, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895, /*0x28-0x2f*/ - 0x8896, 0x8897, 0x8898, 0x8899, 0x889a, 0x889b, 0x889c, 0x889d, /*0x30-0x37*/ - 0x88a1, 0x88a2, 0x88a3, 0x88a4, 0x88a5, 0x88a6, 0x88a7, 0x88a8, /*0x38-0x3f*/ - 0x88a9, 0x88aa, 0x88ab, 0x88ac, 0x88ad, 0x88ae, 0x88af, 0x88b0, /*0x40-0x47*/ - 0x88b1, 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b7, 0x88b8, 0x88b9, /*0x48-0x4f*/ - 0x88ba, 0x88bb, 0x88bc, 0x88bd, 0x88c1, 0x88c2, 0x88c3, 0x88c4, /*0x50-0x57*/ - 0x88c5, 0x88c6, 0x88c7, 0x88c8, 0x88c9, 0x88ca, 0x88cb, 0x88cc, /*0x58-0x5f*/ - 0x88cd, 0x88ce, 0x88cf, 0x88d0, 0x88d1, 0x88d3, 0x88d4, 0x88d5, /*0x60-0x67*/ - 0x88d6, 0x88d7, 0x88d8, 0x88d9, 0x88da, 0x88db, 0x88dc, 0x88dd, /*0x68-0x6f*/ - 0x88e1, 0x88e2, 0x88e3, 0x88e4, 0x88e5, 0x88e6, 0x88e7, 0x88e8, /*0x70-0x77*/ - 0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f0, /*0x78-0x7f*/ - 0x88f1, 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0x88f7, 0x88f8, 0x88f9, /*0x80-0x87*/ - 0x88fa, 0x88fb, 0x88fc, 0x88fd, 0x8941, 0x8942, 0x8943, 0x8944, /*0x88-0x8f*/ - 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 0x894a, 0x894b, 0x894c, /*0x90-0x97*/ - 0x894d, 0x894e, 0x894f, 0x8950, 0x8951, 0x8953, 0x8954, 0x8955, /*0x98-0x9f*/ - 0x8956, 0x8957, 0x8958, 0x8959, 0x895a, 0x895b, 0x895c, 0x895d, /*0xa0-0xa7*/ - 0x8961, 0x8962, 0x8963, 0x8964, 0x8965, 0x8966, 0x8967, 0x8968, /*0xa8-0xaf*/ - 0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f, 0x8970, /*0xb0-0xb7*/ - 0x8971, 0x8973, 0x8974, 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, /*0xb8-0xbf*/ - 0x897a, 0x897b, 0x897c, 0x897d, 0x8981, 0x8982, 0x8983, 0x8984, /*0xc0-0xc7*/ - 0x8985, 0x8986, 0x8987, 0x8988, 0x8989, 0x898a, 0x898b, 0x898c, /*0xc8-0xcf*/ - 0x898d, 0x898e, 0x898f, 0x8990, 0x8991, 0x8993, 0x8994, 0x8995, /*0xd0-0xd7*/ - 0x8996, 0x8997, 0x8998, 0x8999, 0x899a, 0x899b, 0x899c, 0x899d, /*0xd8-0xdf*/ - 0x89a1, 0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7, 0x89a8, /*0xe0-0xe7*/ - 0x89a9, 0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af, 0x89b0, /*0xe8-0xef*/ - 0x89b1, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, 0x89b8, 0x89b9, /*0xf0-0xf7*/ - 0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89c1, 0x89c2, 0x89c3, 0x89c4, /*0xf8-0xff*/ - /* 0xad00 */ - 0x89c5, 0x89c6, 0x89c7, 0x89c8, 0x89c9, 0x89ca, 0x89cb, 0x89cc, /*0x00-0x07*/ - 0x89cd, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x89d3, 0x89d4, 0x89d5, /*0x08-0x0f*/ - 0x89d6, 0x89d7, 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd, /*0x10-0x17*/ - 0x89e1, 0x89e2, 0x89e3, 0x89e4, 0x89e5, 0x89e6, 0x89e7, 0x89e8, /*0x18-0x1f*/ - 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0x89ed, 0x89ee, 0x89ef, 0x89f0, /*0x20-0x27*/ - 0x89f1, 0x89f3, 0x89f4, 0x89f5, 0x89f6, 0x89f7, 0x89f8, 0x89f9, /*0x28-0x2f*/ - 0x89fa, 0x89fb, 0x89fc, 0x89fd, 0x8a41, 0x8a42, 0x8a43, 0x8a44, /*0x30-0x37*/ - 0x8a45, 0x8a46, 0x8a47, 0x8a48, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, /*0x38-0x3f*/ - 0x8a4d, 0x8a4e, 0x8a4f, 0x8a50, 0x8a51, 0x8a53, 0x8a54, 0x8a55, /*0x40-0x47*/ - 0x8a56, 0x8a57, 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, /*0x48-0x4f*/ - 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x8a67, 0x8a68, /*0x50-0x57*/ - 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f, 0x8a70, /*0x58-0x5f*/ - 0x8a71, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77, 0x8a78, 0x8a79, /*0x60-0x67*/ - 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a81, 0x8a82, 0x8a83, 0x8a84, /*0x68-0x6f*/ - 0x8a85, 0x8a86, 0x8a87, 0x8a88, 0x8a89, 0x8a8a, 0x8a8b, 0x8a8c, /*0x70-0x77*/ - 0x8a8d, 0x8a8e, 0x8a8f, 0x8a90, 0x8a91, 0x8a93, 0x8a94, 0x8a95, /*0x78-0x7f*/ - 0x8a96, 0x8a97, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b, 0x8a9c, 0x8a9d, /*0x80-0x87*/ - 0x8aa1, 0x8aa2, 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8, /*0x88-0x8f*/ - 0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0, /*0x90-0x97*/ - 0x8ab1, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8, 0x8ab9, /*0x98-0x9f*/ - 0x8aba, 0x8abb, 0x8abc, 0x8abd, 0x8ac1, 0x8ac2, 0x8ac3, 0x8ac4, /*0xa0-0xa7*/ - 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8, 0x8ac9, 0x8aca, 0x8acb, 0x8acc, /*0xa8-0xaf*/ - 0x8acd, 0x8ace, 0x8acf, 0x8ad0, 0x8ad1, 0x8ad3, 0x8ad4, 0x8ad5, /*0xb0-0xb7*/ - 0x8ad6, 0x8ad7, 0x8ad8, 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add, /*0xb8-0xbf*/ - 0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, /*0xc0-0xc7*/ - 0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0, /*0xc8-0xcf*/ - 0x8af1, 0x8af3, 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8, 0x8af9, /*0xd0-0xd7*/ - 0x8afa, 0x8afb, 0x8afc, 0x8afd, 0x8b41, 0x8b42, 0x8b43, 0x8b44, /*0xd8-0xdf*/ - 0x8b45, 0x8b46, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, /*0xe0-0xe7*/ - 0x8b4d, 0x8b4e, 0x8b4f, 0x8b50, 0x8b51, 0x8b53, 0x8b54, 0x8b55, /*0xe8-0xef*/ - 0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, /*0xf0-0xf7*/ - 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65, 0x8b66, 0x8b67, 0x8b68, /*0xf8-0xff*/ - /* 0xae00 */ - 0x8b69, 0x8b6a, 0x8b6b, 0x8b6c, 0x8b6d, 0x8b6e, 0x8b6f, 0x8b70, /*0x00-0x07*/ - 0x8b71, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79, /*0x08-0x0f*/ - 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b81, 0x8b82, 0x8b83, 0x8b84, /*0x10-0x17*/ - 0x8b85, 0x8b86, 0x8b87, 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, /*0x18-0x1f*/ - 0x8b8d, 0x8b8e, 0x8b8f, 0x8b90, 0x8b91, 0x8b93, 0x8b94, 0x8b95, /*0x20-0x27*/ - 0x8b96, 0x8b97, 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d, /*0x28-0x2f*/ - 0x8ba1, 0x8ba2, 0x8ba3, 0x8ba4, 0x8ba5, 0x8ba6, 0x8ba7, 0x8ba8, /*0x30-0x37*/ - 0x8ba9, 0x8baa, 0x8bab, 0x8bac, 0x8bad, 0x8bae, 0x8baf, 0x8bb0, /*0x38-0x3f*/ - 0x8bb1, 0x8bb3, 0x8bb4, 0x8bb5, 0x8bb6, 0x8bb7, 0x8bb8, 0x8bb9, /*0x40-0x47*/ - 0x8bba, 0x8bbb, 0x8bbc, 0x8bbd, 0x8c61, 0x8c62, 0x8c63, 0x8c64, /*0x48-0x4f*/ - 0x8c65, 0x8c66, 0x8c67, 0x8c68, 0x8c69, 0x8c6a, 0x8c6b, 0x8c6c, /*0x50-0x57*/ - 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c73, 0x8c74, 0x8c75, /*0x58-0x5f*/ - 0x8c76, 0x8c77, 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0x8c7c, 0x8c7d, /*0x60-0x67*/ - 0x8c81, 0x8c82, 0x8c83, 0x8c84, 0x8c85, 0x8c86, 0x8c87, 0x8c88, /*0x68-0x6f*/ - 0x8c89, 0x8c8a, 0x8c8b, 0x8c8c, 0x8c8d, 0x8c8e, 0x8c8f, 0x8c90, /*0x70-0x77*/ - 0x8c91, 0x8c93, 0x8c94, 0x8c95, 0x8c96, 0x8c97, 0x8c98, 0x8c99, /*0x78-0x7f*/ - 0x8c9a, 0x8c9b, 0x8c9c, 0x8c9d, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, /*0x80-0x87*/ - 0x8ca5, 0x8ca6, 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, /*0x88-0x8f*/ - 0x8cad, 0x8cae, 0x8caf, 0x8cb0, 0x8cb1, 0x8cb3, 0x8cb4, 0x8cb5, /*0x90-0x97*/ - 0x8cb6, 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd, /*0x98-0x9f*/ - 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6, 0x8cc7, 0x8cc8, /*0xa0-0xa7*/ - 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd, 0x8cce, 0x8ccf, 0x8cd0, /*0xa8-0xaf*/ - 0x8cd1, 0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, /*0xb0-0xb7*/ - 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, /*0xb8-0xbf*/ - 0x8ce5, 0x8ce6, 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, /*0xc0-0xc7*/ - 0x8ced, 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf3, 0x8cf4, 0x8cf5, /*0xc8-0xcf*/ - 0x8cf6, 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, /*0xd0-0xd7*/ - 0x8d41, 0x8d42, 0x8d43, 0x8d44, 0x8d45, 0x8d46, 0x8d47, 0x8d48, /*0xd8-0xdf*/ - 0x8d49, 0x8d4a, 0x8d4b, 0x8d4c, 0x8d4d, 0x8d4e, 0x8d4f, 0x8d50, /*0xe0-0xe7*/ - 0x8d51, 0x8d53, 0x8d54, 0x8d55, 0x8d56, 0x8d57, 0x8d58, 0x8d59, /*0xe8-0xef*/ - 0x8d5a, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d61, 0x8d62, 0x8d63, 0x8d64, /*0xf0-0xf7*/ - 0x8d65, 0x8d66, 0x8d67, 0x8d68, 0x8d69, 0x8d6a, 0x8d6b, 0x8d6c, /*0xf8-0xff*/ - /* 0xaf00 */ - 0x8d6d, 0x8d6e, 0x8d6f, 0x8d70, 0x8d71, 0x8d73, 0x8d74, 0x8d75, /*0x00-0x07*/ - 0x8d76, 0x8d77, 0x8d78, 0x8d79, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, /*0x08-0x0f*/ - 0x8d81, 0x8d82, 0x8d83, 0x8d84, 0x8d85, 0x8d86, 0x8d87, 0x8d88, /*0x10-0x17*/ - 0x8d89, 0x8d8a, 0x8d8b, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f, 0x8d90, /*0x18-0x1f*/ - 0x8d91, 0x8d93, 0x8d94, 0x8d95, 0x8d96, 0x8d97, 0x8d98, 0x8d99, /*0x20-0x27*/ - 0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8da1, 0x8da2, 0x8da3, 0x8da4, /*0x28-0x2f*/ - 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0x8dac, /*0x30-0x37*/ - 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db1, 0x8db3, 0x8db4, 0x8db5, /*0x38-0x3f*/ - 0x8db6, 0x8db7, 0x8db8, 0x8db9, 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, /*0x40-0x47*/ - 0x8dc1, 0x8dc2, 0x8dc3, 0x8dc4, 0x8dc5, 0x8dc6, 0x8dc7, 0x8dc8, /*0x48-0x4f*/ - 0x8dc9, 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, 0x8dce, 0x8dcf, 0x8dd0, /*0x50-0x57*/ - 0x8dd1, 0x8dd3, 0x8dd4, 0x8dd5, 0x8dd6, 0x8dd7, 0x8dd8, 0x8dd9, /*0x58-0x5f*/ - 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8de1, 0x8de2, 0x8de3, 0x8de4, /*0x60-0x67*/ - 0x8de5, 0x8de6, 0x8de7, 0x8de8, 0x8de9, 0x8dea, 0x8deb, 0x8dec, /*0x68-0x6f*/ - 0x8ded, 0x8dee, 0x8def, 0x8df0, 0x8df1, 0x8df3, 0x8df4, 0x8df5, /*0x70-0x77*/ - 0x8df6, 0x8df7, 0x8df8, 0x8df9, 0x8dfa, 0x8dfb, 0x8dfc, 0x8dfd, /*0x78-0x7f*/ - 0x8e41, 0x8e42, 0x8e43, 0x8e44, 0x8e45, 0x8e46, 0x8e47, 0x8e48, /*0x80-0x87*/ - 0x8e49, 0x8e4a, 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50, /*0x88-0x8f*/ - 0x8e51, 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e59, /*0x90-0x97*/ - 0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e61, 0x8e62, 0x8e63, 0x8e64, /*0x98-0x9f*/ - 0x8e65, 0x8e66, 0x8e67, 0x8e68, 0x8e69, 0x8e6a, 0x8e6b, 0x8e6c, /*0xa0-0xa7*/ - 0x8e6d, 0x8e6e, 0x8e6f, 0x8e70, 0x8e71, 0x8e73, 0x8e74, 0x8e75, /*0xa8-0xaf*/ - 0x8e76, 0x8e77, 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7c, 0x8e7d, /*0xb0-0xb7*/ - 0x8e81, 0x8e82, 0x8e83, 0x8e84, 0x8e85, 0x8e86, 0x8e87, 0x8e88, /*0xb8-0xbf*/ - 0x8e89, 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e8f, 0x8e90, /*0xc0-0xc7*/ - 0x8e91, 0x8e93, 0x8e94, 0x8e95, 0x8e96, 0x8e97, 0x8e98, 0x8e99, /*0xc8-0xcf*/ - 0x8e9a, 0x8e9b, 0x8e9c, 0x8e9d, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, /*0xd0-0xd7*/ - 0x8ea5, 0x8ea6, 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0x8eab, 0x8eac, /*0xd8-0xdf*/ - 0x8ead, 0x8eae, 0x8eaf, 0x8eb0, 0x8eb1, 0x8eb3, 0x8eb4, 0x8eb5, /*0xe0-0xe7*/ - 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0x8ebc, 0x8ebd, /*0xe8-0xef*/ - 0x8ec1, 0x8ec2, 0x8ec3, 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, /*0xf0-0xf7*/ - 0x8ec9, 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ece, 0x8ecf, 0x8ed0, /*0xf8-0xff*/ - /* 0xb000 */ - 0x8ed1, 0x8ed3, 0x8ed4, 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, /*0x00-0x07*/ - 0x8eda, 0x8edb, 0x8edc, 0x8edd, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4, /*0x08-0x0f*/ - 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec, /*0x10-0x17*/ - 0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef3, 0x8ef4, 0x8ef5, /*0x18-0x1f*/ - 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd, /*0x20-0x27*/ - 0x8f41, 0x8f42, 0x8f43, 0x8f44, 0x8f45, 0x8f46, 0x8f47, 0x8f48, /*0x28-0x2f*/ - 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4d, 0x8f4e, 0x8f4f, 0x8f50, /*0x30-0x37*/ - 0x8f51, 0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, /*0x38-0x3f*/ - 0x8f5a, 0x8f5b, 0x8f5c, 0x8f5d, 0x8f61, 0x8f62, 0x8f63, 0x8f64, /*0x40-0x47*/ - 0x8f65, 0x8f66, 0x8f67, 0x8f68, 0x8f69, 0x8f6a, 0x8f6b, 0x8f6c, /*0x48-0x4f*/ - 0x8f6d, 0x8f6e, 0x8f6f, 0x8f70, 0x8f71, 0x8f73, 0x8f74, 0x8f75, /*0x50-0x57*/ - 0x8f76, 0x8f77, 0x8f78, 0x8f79, 0x8f7a, 0x8f7b, 0x8f7c, 0x8f7d, /*0x58-0x5f*/ - 0x8f81, 0x8f82, 0x8f83, 0x8f84, 0x8f85, 0x8f86, 0x8f87, 0x8f88, /*0x60-0x67*/ - 0x8f89, 0x8f8a, 0x8f8b, 0x8f8c, 0x8f8d, 0x8f8e, 0x8f8f, 0x8f90, /*0x68-0x6f*/ - 0x8f91, 0x8f93, 0x8f94, 0x8f95, 0x8f96, 0x8f97, 0x8f98, 0x8f99, /*0x70-0x77*/ - 0x8f9a, 0x8f9b, 0x8f9c, 0x8f9d, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, /*0x78-0x7f*/ - 0x8fa5, 0x8fa6, 0x8fa7, 0x8fa8, 0x8fa9, 0x8faa, 0x8fab, 0x8fac, /*0x80-0x87*/ - 0x8fad, 0x8fae, 0x8faf, 0x8fb0, 0x8fb1, 0x8fb3, 0x8fb4, 0x8fb5, /*0x88-0x8f*/ - 0x8fb6, 0x8fb7, 0x8fb8, 0x8fb9, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbd, /*0x90-0x97*/ - 0x9061, 0x9062, 0x9063, 0x9064, 0x9065, 0x9066, 0x9067, 0x9068, /*0x98-0x9f*/ - 0x9069, 0x906a, 0x906b, 0x906c, 0x906d, 0x906e, 0x906f, 0x9070, /*0xa0-0xa7*/ - 0x9071, 0x9073, 0x9074, 0x9075, 0x9076, 0x9077, 0x9078, 0x9079, /*0xa8-0xaf*/ - 0x907a, 0x907b, 0x907c, 0x907d, 0x9081, 0x9082, 0x9083, 0x9084, /*0xb0-0xb7*/ - 0x9085, 0x9086, 0x9087, 0x9088, 0x9089, 0x908a, 0x908b, 0x908c, /*0xb8-0xbf*/ - 0x908d, 0x908e, 0x908f, 0x9090, 0x9091, 0x9093, 0x9094, 0x9095, /*0xc0-0xc7*/ - 0x9096, 0x9097, 0x9098, 0x9099, 0x909a, 0x909b, 0x909c, 0x909d, /*0xc8-0xcf*/ - 0x90a1, 0x90a2, 0x90a3, 0x90a4, 0x90a5, 0x90a6, 0x90a7, 0x90a8, /*0xd0-0xd7*/ - 0x90a9, 0x90aa, 0x90ab, 0x90ac, 0x90ad, 0x90ae, 0x90af, 0x90b0, /*0xd8-0xdf*/ - 0x90b1, 0x90b3, 0x90b4, 0x90b5, 0x90b6, 0x90b7, 0x90b8, 0x90b9, /*0xe0-0xe7*/ - 0x90ba, 0x90bb, 0x90bc, 0x90bd, 0x90c1, 0x90c2, 0x90c3, 0x90c4, /*0xe8-0xef*/ - 0x90c5, 0x90c6, 0x90c7, 0x90c8, 0x90c9, 0x90ca, 0x90cb, 0x90cc, /*0xf0-0xf7*/ - 0x90cd, 0x90ce, 0x90cf, 0x90d0, 0x90d1, 0x90d3, 0x90d4, 0x90d5, /*0xf8-0xff*/ - /* 0xb100 */ - 0x90d6, 0x90d7, 0x90d8, 0x90d9, 0x90da, 0x90db, 0x90dc, 0x90dd, /*0x00-0x07*/ - 0x90e1, 0x90e2, 0x90e3, 0x90e4, 0x90e5, 0x90e6, 0x90e7, 0x90e8, /*0x08-0x0f*/ - 0x90e9, 0x90ea, 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, 0x90f0, /*0x10-0x17*/ - 0x90f1, 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, 0x90f8, 0x90f9, /*0x18-0x1f*/ - 0x90fa, 0x90fb, 0x90fc, 0x90fd, 0x9141, 0x9142, 0x9143, 0x9144, /*0x20-0x27*/ - 0x9145, 0x9146, 0x9147, 0x9148, 0x9149, 0x914a, 0x914b, 0x914c, /*0x28-0x2f*/ - 0x914d, 0x914e, 0x914f, 0x9150, 0x9151, 0x9153, 0x9154, 0x9155, /*0x30-0x37*/ - 0x9156, 0x9157, 0x9158, 0x9159, 0x915a, 0x915b, 0x915c, 0x915d, /*0x38-0x3f*/ - 0x9161, 0x9162, 0x9163, 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, /*0x40-0x47*/ - 0x9169, 0x916a, 0x916b, 0x916c, 0x916d, 0x916e, 0x916f, 0x9170, /*0x48-0x4f*/ - 0x9171, 0x9173, 0x9174, 0x9175, 0x9176, 0x9177, 0x9178, 0x9179, /*0x50-0x57*/ - 0x917a, 0x917b, 0x917c, 0x917d, 0x9181, 0x9182, 0x9183, 0x9184, /*0x58-0x5f*/ - 0x9185, 0x9186, 0x9187, 0x9188, 0x9189, 0x918a, 0x918b, 0x918c, /*0x60-0x67*/ - 0x918d, 0x918e, 0x918f, 0x9190, 0x9191, 0x9193, 0x9194, 0x9195, /*0x68-0x6f*/ - 0x9196, 0x9197, 0x9198, 0x9199, 0x919a, 0x919b, 0x919c, 0x919d, /*0x70-0x77*/ - 0x91a1, 0x91a2, 0x91a3, 0x91a4, 0x91a5, 0x91a6, 0x91a7, 0x91a8, /*0x78-0x7f*/ - 0x91a9, 0x91aa, 0x91ab, 0x91ac, 0x91ad, 0x91ae, 0x91af, 0x91b0, /*0x80-0x87*/ - 0x91b1, 0x91b3, 0x91b4, 0x91b5, 0x91b6, 0x91b7, 0x91b8, 0x91b9, /*0x88-0x8f*/ - 0x91ba, 0x91bb, 0x91bc, 0x91bd, 0x91c1, 0x91c2, 0x91c3, 0x91c4, /*0x90-0x97*/ - 0x91c5, 0x91c6, 0x91c7, 0x91c8, 0x91c9, 0x91ca, 0x91cb, 0x91cc, /*0x98-0x9f*/ - 0x91cd, 0x91ce, 0x91cf, 0x91d0, 0x91d1, 0x91d3, 0x91d4, 0x91d5, /*0xa0-0xa7*/ - 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd, /*0xa8-0xaf*/ - 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5, 0x91e6, 0x91e7, 0x91e8, /*0xb0-0xb7*/ - 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed, 0x91ee, 0x91ef, 0x91f0, /*0xb8-0xbf*/ - 0x91f1, 0x91f3, 0x91f4, 0x91f5, 0x91f6, 0x91f7, 0x91f8, 0x91f9, /*0xc0-0xc7*/ - 0x91fa, 0x91fb, 0x91fc, 0x91fd, 0x9241, 0x9242, 0x9243, 0x9244, /*0xc8-0xcf*/ - 0x9245, 0x9246, 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, /*0xd0-0xd7*/ - 0x924d, 0x924e, 0x924f, 0x9250, 0x9251, 0x9253, 0x9254, 0x9255, /*0xd8-0xdf*/ - 0x9256, 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d, /*0xe0-0xe7*/ - 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267, 0x9268, /*0xe8-0xef*/ - 0x9269, 0x926a, 0x926b, 0x926c, 0x926d, 0x926e, 0x926f, 0x9270, /*0xf0-0xf7*/ - 0x9271, 0x9273, 0x9274, 0x9275, 0x9276, 0x9277, 0x9278, 0x9279, /*0xf8-0xff*/ - /* 0xb200 */ - 0x927a, 0x927b, 0x927c, 0x927d, 0x9281, 0x9282, 0x9283, 0x9284, /*0x00-0x07*/ - 0x9285, 0x9286, 0x9287, 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, /*0x08-0x0f*/ - 0x928d, 0x928e, 0x928f, 0x9290, 0x9291, 0x9293, 0x9294, 0x9295, /*0x10-0x17*/ - 0x9296, 0x9297, 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d, /*0x18-0x1f*/ - 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7, 0x92a8, /*0x20-0x27*/ - 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92ae, 0x92af, 0x92b0, /*0x28-0x2f*/ - 0x92b1, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8, 0x92b9, /*0x30-0x37*/ - 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92c1, 0x92c2, 0x92c3, 0x92c4, /*0x38-0x3f*/ - 0x92c5, 0x92c6, 0x92c7, 0x92c8, 0x92c9, 0x92ca, 0x92cb, 0x92cc, /*0x40-0x47*/ - 0x92cd, 0x92ce, 0x92cf, 0x92d0, 0x92d1, 0x92d3, 0x92d4, 0x92d5, /*0x48-0x4f*/ - 0x92d6, 0x92d7, 0x92d8, 0x92d9, 0x92da, 0x92db, 0x92dc, 0x92dd, /*0x50-0x57*/ - 0x92e1, 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8, /*0x58-0x5f*/ - 0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, /*0x60-0x67*/ - 0x92f1, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8, 0x92f9, /*0x68-0x6f*/ - 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x9341, 0x9342, 0x9343, 0x9344, /*0x70-0x77*/ - 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x934a, 0x934b, 0x934c, /*0x78-0x7f*/ - 0x934d, 0x934e, 0x934f, 0x9350, 0x9351, 0x9353, 0x9354, 0x9355, /*0x80-0x87*/ - 0x9356, 0x9357, 0x9358, 0x9359, 0x935a, 0x935b, 0x935c, 0x935d, /*0x88-0x8f*/ - 0x9361, 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, /*0x90-0x97*/ - 0x9369, 0x936a, 0x936b, 0x936c, 0x936d, 0x936e, 0x936f, 0x9370, /*0x98-0x9f*/ - 0x9371, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, /*0xa0-0xa7*/ - 0x937a, 0x937b, 0x937c, 0x937d, 0x9381, 0x9382, 0x9383, 0x9384, /*0xa8-0xaf*/ - 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938a, 0x938b, 0x938c, /*0xb0-0xb7*/ - 0x938d, 0x938e, 0x938f, 0x9390, 0x9391, 0x9393, 0x9394, 0x9395, /*0xb8-0xbf*/ - 0x9396, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, 0x939c, 0x939d, /*0xc0-0xc7*/ - 0x93a1, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0x93a7, 0x93a8, /*0xc8-0xcf*/ - 0x93a9, 0x93aa, 0x93ab, 0x93ac, 0x93ad, 0x93ae, 0x93af, 0x93b0, /*0xd0-0xd7*/ - 0x93b1, 0x93b3, 0x93b4, 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, /*0xd8-0xdf*/ - 0x93ba, 0x93bb, 0x93bc, 0x93bd, 0x9461, 0x9462, 0x9463, 0x9464, /*0xe0-0xe7*/ - 0x9465, 0x9466, 0x9467, 0x9468, 0x9469, 0x946a, 0x946b, 0x946c, /*0xe8-0xef*/ - 0x946d, 0x946e, 0x946f, 0x9470, 0x9471, 0x9473, 0x9474, 0x9475, /*0xf0-0xf7*/ - 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c, 0x947d, /*0xf8-0xff*/ - /* 0xb300 */ - 0x9481, 0x9482, 0x9483, 0x9484, 0x9485, 0x9486, 0x9487, 0x9488, /*0x00-0x07*/ - 0x9489, 0x948a, 0x948b, 0x948c, 0x948d, 0x948e, 0x948f, 0x9490, /*0x08-0x0f*/ - 0x9491, 0x9493, 0x9494, 0x9495, 0x9496, 0x9497, 0x9498, 0x9499, /*0x10-0x17*/ - 0x949a, 0x949b, 0x949c, 0x949d, 0x94a1, 0x94a2, 0x94a3, 0x94a4, /*0x18-0x1f*/ - 0x94a5, 0x94a6, 0x94a7, 0x94a8, 0x94a9, 0x94aa, 0x94ab, 0x94ac, /*0x20-0x27*/ - 0x94ad, 0x94ae, 0x94af, 0x94b0, 0x94b1, 0x94b3, 0x94b4, 0x94b5, /*0x28-0x2f*/ - 0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, 0x94bd, /*0x30-0x37*/ - 0x94c1, 0x94c2, 0x94c3, 0x94c4, 0x94c5, 0x94c6, 0x94c7, 0x94c8, /*0x38-0x3f*/ - 0x94c9, 0x94ca, 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94cf, 0x94d0, /*0x40-0x47*/ - 0x94d1, 0x94d3, 0x94d4, 0x94d5, 0x94d6, 0x94d7, 0x94d8, 0x94d9, /*0x48-0x4f*/ - 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94e1, 0x94e2, 0x94e3, 0x94e4, /*0x50-0x57*/ - 0x94e5, 0x94e6, 0x94e7, 0x94e8, 0x94e9, 0x94ea, 0x94eb, 0x94ec, /*0x58-0x5f*/ - 0x94ed, 0x94ee, 0x94ef, 0x94f0, 0x94f1, 0x94f3, 0x94f4, 0x94f5, /*0x60-0x67*/ - 0x94f6, 0x94f7, 0x94f8, 0x94f9, 0x94fa, 0x94fb, 0x94fc, 0x94fd, /*0x68-0x6f*/ - 0x9541, 0x9542, 0x9543, 0x9544, 0x9545, 0x9546, 0x9547, 0x9548, /*0x70-0x77*/ - 0x9549, 0x954a, 0x954b, 0x954c, 0x954d, 0x954e, 0x954f, 0x9550, /*0x78-0x7f*/ - 0x9551, 0x9553, 0x9554, 0x9555, 0x9556, 0x9557, 0x9558, 0x9559, /*0x80-0x87*/ - 0x955a, 0x955b, 0x955c, 0x955d, 0x9561, 0x9562, 0x9563, 0x9564, /*0x88-0x8f*/ - 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956a, 0x956b, 0x956c, /*0x90-0x97*/ - 0x956d, 0x956e, 0x956f, 0x9570, 0x9571, 0x9573, 0x9574, 0x9575, /*0x98-0x9f*/ - 0x9576, 0x9577, 0x9578, 0x9579, 0x957a, 0x957b, 0x957c, 0x957d, /*0xa0-0xa7*/ - 0x9581, 0x9582, 0x9583, 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, /*0xa8-0xaf*/ - 0x9589, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0x958f, 0x9590, /*0xb0-0xb7*/ - 0x9591, 0x9593, 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, /*0xb8-0xbf*/ - 0x959a, 0x959b, 0x959c, 0x959d, 0x95a1, 0x95a2, 0x95a3, 0x95a4, /*0xc0-0xc7*/ - 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0x95aa, 0x95ab, 0x95ac, /*0xc8-0xcf*/ - 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1, 0x95b3, 0x95b4, 0x95b5, /*0xd0-0xd7*/ - 0x95b6, 0x95b7, 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0x95bd, /*0xd8-0xdf*/ - 0x95c1, 0x95c2, 0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, /*0xe0-0xe7*/ - 0x95c9, 0x95ca, 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, /*0xe8-0xef*/ - 0x95d1, 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, /*0xf0-0xf7*/ - 0x95da, 0x95db, 0x95dc, 0x95dd, 0x95e1, 0x95e2, 0x95e3, 0x95e4, /*0xf8-0xff*/ - /* 0xb400 */ - 0x95e5, 0x95e6, 0x95e7, 0x95e8, 0x95e9, 0x95ea, 0x95eb, 0x95ec, /*0x00-0x07*/ - 0x95ed, 0x95ee, 0x95ef, 0x95f0, 0x95f1, 0x95f3, 0x95f4, 0x95f5, /*0x08-0x0f*/ - 0x95f6, 0x95f7, 0x95f8, 0x95f9, 0x95fa, 0x95fb, 0x95fc, 0x95fd, /*0x10-0x17*/ - 0x9641, 0x9642, 0x9643, 0x9644, 0x9645, 0x9646, 0x9647, 0x9648, /*0x18-0x1f*/ - 0x9649, 0x964a, 0x964b, 0x964c, 0x964d, 0x964e, 0x964f, 0x9650, /*0x20-0x27*/ - 0x9651, 0x9653, 0x9654, 0x9655, 0x9656, 0x9657, 0x9658, 0x9659, /*0x28-0x2f*/ - 0x965a, 0x965b, 0x965c, 0x965d, 0x9661, 0x9662, 0x9663, 0x9664, /*0x30-0x37*/ - 0x9665, 0x9666, 0x9667, 0x9668, 0x9669, 0x966a, 0x966b, 0x966c, /*0x38-0x3f*/ - 0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9673, 0x9674, 0x9675, /*0x40-0x47*/ - 0x9676, 0x9677, 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d, /*0x48-0x4f*/ - 0x9681, 0x9682, 0x9683, 0x9684, 0x9685, 0x9686, 0x9687, 0x9688, /*0x50-0x57*/ - 0x9689, 0x968a, 0x968b, 0x968c, 0x968d, 0x968e, 0x968f, 0x9690, /*0x58-0x5f*/ - 0x9691, 0x9693, 0x9694, 0x9695, 0x9696, 0x9697, 0x9698, 0x9699, /*0x60-0x67*/ - 0x969a, 0x969b, 0x969c, 0x969d, 0x96a1, 0x96a2, 0x96a3, 0x96a4, /*0x68-0x6f*/ - 0x96a5, 0x96a6, 0x96a7, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac, /*0x70-0x77*/ - 0x96ad, 0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b3, 0x96b4, 0x96b5, /*0x78-0x7f*/ - 0x96b6, 0x96b7, 0x96b8, 0x96b9, 0x96ba, 0x96bb, 0x96bc, 0x96bd, /*0x80-0x87*/ - 0x96c1, 0x96c2, 0x96c3, 0x96c4, 0x96c5, 0x96c6, 0x96c7, 0x96c8, /*0x88-0x8f*/ - 0x96c9, 0x96ca, 0x96cb, 0x96cc, 0x96cd, 0x96ce, 0x96cf, 0x96d0, /*0x90-0x97*/ - 0x96d1, 0x96d3, 0x96d4, 0x96d5, 0x96d6, 0x96d7, 0x96d8, 0x96d9, /*0x98-0x9f*/ - 0x96da, 0x96db, 0x96dc, 0x96dd, 0x96e1, 0x96e2, 0x96e3, 0x96e4, /*0xa0-0xa7*/ - 0x96e5, 0x96e6, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb, 0x96ec, /*0xa8-0xaf*/ - 0x96ed, 0x96ee, 0x96ef, 0x96f0, 0x96f1, 0x96f3, 0x96f4, 0x96f5, /*0xb0-0xb7*/ - 0x96f6, 0x96f7, 0x96f8, 0x96f9, 0x96fa, 0x96fb, 0x96fc, 0x96fd, /*0xb8-0xbf*/ - 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747, 0x9748, /*0xc0-0xc7*/ - 0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f, 0x9750, /*0xc8-0xcf*/ - 0x9751, 0x9753, 0x9754, 0x9755, 0x9756, 0x9757, 0x9758, 0x9759, /*0xd0-0xd7*/ - 0x975a, 0x975b, 0x975c, 0x975d, 0x9761, 0x9762, 0x9763, 0x9764, /*0xd8-0xdf*/ - 0x9765, 0x9766, 0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, /*0xe0-0xe7*/ - 0x976d, 0x976e, 0x976f, 0x9770, 0x9771, 0x9773, 0x9774, 0x9775, /*0xe8-0xef*/ - 0x9776, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977c, 0x977d, /*0xf0-0xf7*/ - 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786, 0x9787, 0x9788, /*0xf8-0xff*/ - /* 0xb500 */ - 0x9789, 0x978a, 0x978b, 0x978c, 0x978d, 0x978e, 0x978f, 0x9790, /*0x00-0x07*/ - 0x9791, 0x9793, 0x9794, 0x9795, 0x9796, 0x9797, 0x9798, 0x9799, /*0x08-0x0f*/ - 0x979a, 0x979b, 0x979c, 0x979d, 0x97a1, 0x97a2, 0x97a3, 0x97a4, /*0x10-0x17*/ - 0x97a5, 0x97a6, 0x97a7, 0x97a8, 0x97a9, 0x97aa, 0x97ab, 0x97ac, /*0x18-0x1f*/ - 0x97ad, 0x97ae, 0x97af, 0x97b0, 0x97b1, 0x97b3, 0x97b4, 0x97b5, /*0x20-0x27*/ - 0x97b6, 0x97b7, 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd, /*0x28-0x2f*/ - 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868, /*0x30-0x37*/ - 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0x9870, /*0x38-0x3f*/ - 0x9871, 0x9873, 0x9874, 0x9875, 0x9876, 0x9877, 0x9878, 0x9879, /*0x40-0x47*/ - 0x987a, 0x987b, 0x987c, 0x987d, 0x9881, 0x9882, 0x9883, 0x9884, /*0x48-0x4f*/ - 0x9885, 0x9886, 0x9887, 0x9888, 0x9889, 0x988a, 0x988b, 0x988c, /*0x50-0x57*/ - 0x988d, 0x988e, 0x988f, 0x9890, 0x9891, 0x9893, 0x9894, 0x9895, /*0x58-0x5f*/ - 0x9896, 0x9897, 0x9898, 0x9899, 0x989a, 0x989b, 0x989c, 0x989d, /*0x60-0x67*/ - 0x98a1, 0x98a2, 0x98a3, 0x98a4, 0x98a5, 0x98a6, 0x98a7, 0x98a8, /*0x68-0x6f*/ - 0x98a9, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, /*0x70-0x77*/ - 0x98b1, 0x98b3, 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, /*0x78-0x7f*/ - 0x98ba, 0x98bb, 0x98bc, 0x98bd, 0x98c1, 0x98c2, 0x98c3, 0x98c4, /*0x80-0x87*/ - 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0x98cb, 0x98cc, /*0x88-0x8f*/ - 0x98cd, 0x98ce, 0x98cf, 0x98d0, 0x98d1, 0x98d3, 0x98d4, 0x98d5, /*0x90-0x97*/ - 0x98d6, 0x98d7, 0x98d8, 0x98d9, 0x98da, 0x98db, 0x98dc, 0x98dd, /*0x98-0x9f*/ - 0x98e1, 0x98e2, 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, 0x98e8, /*0xa0-0xa7*/ - 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef, 0x98f0, /*0xa8-0xaf*/ - 0x98f1, 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7, 0x98f8, 0x98f9, /*0xb0-0xb7*/ - 0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x9941, 0x9942, 0x9943, 0x9944, /*0xb8-0xbf*/ - 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x994a, 0x994b, 0x994c, /*0xc0-0xc7*/ - 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9953, 0x9954, 0x9955, /*0xc8-0xcf*/ - 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b, 0x995c, 0x995d, /*0xd0-0xd7*/ - 0x9961, 0x9962, 0x9963, 0x9964, 0x9965, 0x9966, 0x9967, 0x9968, /*0xd8-0xdf*/ - 0x9969, 0x996a, 0x996b, 0x996c, 0x996d, 0x996e, 0x996f, 0x9970, /*0xe0-0xe7*/ - 0x9971, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977, 0x9978, 0x9979, /*0xe8-0xef*/ - 0x997a, 0x997b, 0x997c, 0x997d, 0x9981, 0x9982, 0x9983, 0x9984, /*0xf0-0xf7*/ - 0x9985, 0x9986, 0x9987, 0x9988, 0x9989, 0x998a, 0x998b, 0x998c, /*0xf8-0xff*/ - /* 0xb600 */ - 0x998d, 0x998e, 0x998f, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, /*0x00-0x07*/ - 0x9996, 0x9997, 0x9998, 0x9999, 0x999a, 0x999b, 0x999c, 0x999d, /*0x08-0x0f*/ - 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5, 0x99a6, 0x99a7, 0x99a8, /*0x10-0x17*/ - 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af, 0x99b0, /*0x18-0x1f*/ - 0x99b1, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7, 0x99b8, 0x99b9, /*0x20-0x27*/ - 0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99c1, 0x99c2, 0x99c3, 0x99c4, /*0x28-0x2f*/ - 0x99c5, 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, /*0x30-0x37*/ - 0x99cd, 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d3, 0x99d4, 0x99d5, /*0x38-0x3f*/ - 0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd, /*0x40-0x47*/ - 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7, 0x99e8, /*0x48-0x4f*/ - 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef, 0x99f0, /*0x50-0x57*/ - 0x99f1, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7, 0x99f8, 0x99f9, /*0x58-0x5f*/ - 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x9a41, 0x9a42, 0x9a43, 0x9a44, /*0x60-0x67*/ - 0x9a45, 0x9a46, 0x9a47, 0x9a48, 0x9a49, 0x9a4a, 0x9a4b, 0x9a4c, /*0x68-0x6f*/ - 0x9a4d, 0x9a4e, 0x9a4f, 0x9a50, 0x9a51, 0x9a53, 0x9a54, 0x9a55, /*0x70-0x77*/ - 0x9a56, 0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, /*0x78-0x7f*/ - 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, 0x9a68, /*0x80-0x87*/ - 0x9a69, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e, 0x9a6f, 0x9a70, /*0x88-0x8f*/ - 0x9a71, 0x9a73, 0x9a74, 0x9a75, 0x9a76, 0x9a77, 0x9a78, 0x9a79, /*0x90-0x97*/ - 0x9a7a, 0x9a7b, 0x9a7c, 0x9a7d, 0x9a81, 0x9a82, 0x9a83, 0x9a84, /*0x98-0x9f*/ - 0x9a85, 0x9a86, 0x9a87, 0x9a88, 0x9a89, 0x9a8a, 0x9a8b, 0x9a8c, /*0xa0-0xa7*/ - 0x9a8d, 0x9a8e, 0x9a8f, 0x9a90, 0x9a91, 0x9a93, 0x9a94, 0x9a95, /*0xa8-0xaf*/ - 0x9a96, 0x9a97, 0x9a98, 0x9a99, 0x9a9a, 0x9a9b, 0x9a9c, 0x9a9d, /*0xb0-0xb7*/ - 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0x9aa7, 0x9aa8, /*0xb8-0xbf*/ - 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad, 0x9aae, 0x9aaf, 0x9ab0, /*0xc0-0xc7*/ - 0x9ab1, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab7, 0x9ab8, 0x9ab9, /*0xc8-0xcf*/ - 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9ac1, 0x9ac2, 0x9ac3, 0x9ac4, /*0xd0-0xd7*/ - 0x9ac5, 0x9ac6, 0x9ac7, 0x9ac8, 0x9ac9, 0x9aca, 0x9acb, 0x9acc, /*0xd8-0xdf*/ - 0x9acd, 0x9ace, 0x9acf, 0x9ad0, 0x9ad1, 0x9ad3, 0x9ad4, 0x9ad5, /*0xe0-0xe7*/ - 0x9ad6, 0x9ad7, 0x9ad8, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add, /*0xe8-0xef*/ - 0x9ae1, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae6, 0x9ae7, 0x9ae8, /*0xf0-0xf7*/ - 0x9ae9, 0x9aea, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0x9aef, 0x9af0, /*0xf8-0xff*/ - /* 0xb700 */ - 0x9af1, 0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9af9, /*0x00-0x07*/ - 0x9afa, 0x9afb, 0x9afc, 0x9afd, 0x9b41, 0x9b42, 0x9b43, 0x9b44, /*0x08-0x0f*/ - 0x9b45, 0x9b46, 0x9b47, 0x9b48, 0x9b49, 0x9b4a, 0x9b4b, 0x9b4c, /*0x10-0x17*/ - 0x9b4d, 0x9b4e, 0x9b4f, 0x9b50, 0x9b51, 0x9b53, 0x9b54, 0x9b55, /*0x18-0x1f*/ - 0x9b56, 0x9b57, 0x9b58, 0x9b59, 0x9b5a, 0x9b5b, 0x9b5c, 0x9b5d, /*0x20-0x27*/ - 0x9b61, 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, /*0x28-0x2f*/ - 0x9b69, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, /*0x30-0x37*/ - 0x9b71, 0x9b73, 0x9b74, 0x9b75, 0x9b76, 0x9b77, 0x9b78, 0x9b79, /*0x38-0x3f*/ - 0x9b7a, 0x9b7b, 0x9b7c, 0x9b7d, 0x9b81, 0x9b82, 0x9b83, 0x9b84, /*0x40-0x47*/ - 0x9b85, 0x9b86, 0x9b87, 0x9b88, 0x9b89, 0x9b8a, 0x9b8b, 0x9b8c, /*0x48-0x4f*/ - 0x9b8d, 0x9b8e, 0x9b8f, 0x9b90, 0x9b91, 0x9b93, 0x9b94, 0x9b95, /*0x50-0x57*/ - 0x9b96, 0x9b97, 0x9b98, 0x9b99, 0x9b9a, 0x9b9b, 0x9b9c, 0x9b9d, /*0x58-0x5f*/ - 0x9ba1, 0x9ba2, 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, /*0x60-0x67*/ - 0x9ba9, 0x9baa, 0x9bab, 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, /*0x68-0x6f*/ - 0x9bb1, 0x9bb3, 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, /*0x70-0x77*/ - 0x9bba, 0x9bbb, 0x9bbc, 0x9bbd, 0x9c61, 0x9c62, 0x9c63, 0x9c64, /*0x78-0x7f*/ - 0x9c65, 0x9c66, 0x9c67, 0x9c68, 0x9c69, 0x9c6a, 0x9c6b, 0x9c6c, /*0x80-0x87*/ - 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c73, 0x9c74, 0x9c75, /*0x88-0x8f*/ - 0x9c76, 0x9c77, 0x9c78, 0x9c79, 0x9c7a, 0x9c7b, 0x9c7c, 0x9c7d, /*0x90-0x97*/ - 0x9c81, 0x9c82, 0x9c83, 0x9c84, 0x9c85, 0x9c86, 0x9c87, 0x9c88, /*0x98-0x9f*/ - 0x9c89, 0x9c8a, 0x9c8b, 0x9c8c, 0x9c8d, 0x9c8e, 0x9c8f, 0x9c90, /*0xa0-0xa7*/ - 0x9c91, 0x9c93, 0x9c94, 0x9c95, 0x9c96, 0x9c97, 0x9c98, 0x9c99, /*0xa8-0xaf*/ - 0x9c9a, 0x9c9b, 0x9c9c, 0x9c9d, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, /*0xb0-0xb7*/ - 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8, 0x9ca9, 0x9caa, 0x9cab, 0x9cac, /*0xb8-0xbf*/ - 0x9cad, 0x9cae, 0x9caf, 0x9cb0, 0x9cb1, 0x9cb3, 0x9cb4, 0x9cb5, /*0xc0-0xc7*/ - 0x9cb6, 0x9cb7, 0x9cb8, 0x9cb9, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd, /*0xc8-0xcf*/ - 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cc8, /*0xd0-0xd7*/ - 0x9cc9, 0x9cca, 0x9ccb, 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, /*0xd8-0xdf*/ - 0x9cd1, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6, 0x9cd7, 0x9cd8, 0x9cd9, /*0xe0-0xe7*/ - 0x9cda, 0x9cdb, 0x9cdc, 0x9cdd, 0x9ce1, 0x9ce2, 0x9ce3, 0x9ce4, /*0xe8-0xef*/ - 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea, 0x9ceb, 0x9cec, /*0xf0-0xf7*/ - 0x9ced, 0x9cee, 0x9cef, 0x9cf0, 0x9cf1, 0x9cf3, 0x9cf4, 0x9cf5, /*0xf8-0xff*/ - /* 0xb800 */ - 0x9cf6, 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, /*0x00-0x07*/ - 0x9d41, 0x9d42, 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, 0x9d48, /*0x08-0x0f*/ - 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f, 0x9d50, /*0x10-0x17*/ - 0x9d51, 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, /*0x18-0x1f*/ - 0x9d5a, 0x9d5b, 0x9d5c, 0x9d5d, 0x9d61, 0x9d62, 0x9d63, 0x9d64, /*0x20-0x27*/ - 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c, /*0x28-0x2f*/ - 0x9d6d, 0x9d6e, 0x9d6f, 0x9d70, 0x9d71, 0x9d73, 0x9d74, 0x9d75, /*0x30-0x37*/ - 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a, 0x9d7b, 0x9d7c, 0x9d7d, /*0x38-0x3f*/ - 0x9d81, 0x9d82, 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, 0x9d88, /*0x40-0x47*/ - 0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, /*0x48-0x4f*/ - 0x9d91, 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9d99, /*0x50-0x57*/ - 0x9d9a, 0x9d9b, 0x9d9c, 0x9d9d, 0x9da1, 0x9da2, 0x9da3, 0x9da4, /*0x58-0x5f*/ - 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9, 0x9daa, 0x9dab, 0x9dac, /*0x60-0x67*/ - 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1, 0x9db3, 0x9db4, 0x9db5, /*0x68-0x6f*/ - 0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, /*0x70-0x77*/ - 0x9dc1, 0x9dc2, 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, /*0x78-0x7f*/ - 0x9dc9, 0x9dca, 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, /*0x80-0x87*/ - 0x9dd1, 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9, /*0x88-0x8f*/ - 0x9dda, 0x9ddb, 0x9ddc, 0x9ddd, 0x9de1, 0x9de2, 0x9de3, 0x9de4, /*0x90-0x97*/ - 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec, /*0x98-0x9f*/ - 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1, 0x9df3, 0x9df4, 0x9df5, /*0xa0-0xa7*/ - 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd, /*0xa8-0xaf*/ - 0x9e41, 0x9e42, 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, 0x9e48, /*0xb0-0xb7*/ - 0x9e49, 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, 0x9e50, /*0xb8-0xbf*/ - 0x9e51, 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, 0x9e58, 0x9e59, /*0xc0-0xc7*/ - 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5d, 0x9e61, 0x9e62, 0x9e63, 0x9e64, /*0xc8-0xcf*/ - 0x9e65, 0x9e66, 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, /*0xd0-0xd7*/ - 0x9e6d, 0x9e6e, 0x9e6f, 0x9e70, 0x9e71, 0x9e73, 0x9e74, 0x9e75, /*0xd8-0xdf*/ - 0x9e76, 0x9e77, 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d, /*0xe0-0xe7*/ - 0x9e81, 0x9e82, 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e87, 0x9e88, /*0xe8-0xef*/ - 0x9e89, 0x9e8a, 0x9e8b, 0x9e8c, 0x9e8d, 0x9e8e, 0x9e8f, 0x9e90, /*0xf0-0xf7*/ - 0x9e91, 0x9e93, 0x9e94, 0x9e95, 0x9e96, 0x9e97, 0x9e98, 0x9e99, /*0xf8-0xff*/ - /* 0xb900 */ - 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9d, 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, /*0x00-0x07*/ - 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, 0x9ea9, 0x9eaa, 0x9eab, 0x9eac, /*0x08-0x0f*/ - 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb3, 0x9eb4, 0x9eb5, /*0x10-0x17*/ - 0x9eb6, 0x9eb7, 0x9eb8, 0x9eb9, 0x9eba, 0x9ebb, 0x9ebc, 0x9ebd, /*0x18-0x1f*/ - 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec4, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, /*0x20-0x27*/ - 0x9ec9, 0x9eca, 0x9ecb, 0x9ecc, 0x9ecd, 0x9ece, 0x9ecf, 0x9ed0, /*0x28-0x2f*/ - 0x9ed1, 0x9ed3, 0x9ed4, 0x9ed5, 0x9ed6, 0x9ed7, 0x9ed8, 0x9ed9, /*0x30-0x37*/ - 0x9eda, 0x9edb, 0x9edc, 0x9edd, 0x9ee1, 0x9ee2, 0x9ee3, 0x9ee4, /*0x38-0x3f*/ - 0x9ee5, 0x9ee6, 0x9ee7, 0x9ee8, 0x9ee9, 0x9eea, 0x9eeb, 0x9eec, /*0x40-0x47*/ - 0x9eed, 0x9eee, 0x9eef, 0x9ef0, 0x9ef1, 0x9ef3, 0x9ef4, 0x9ef5, /*0x48-0x4f*/ - 0x9ef6, 0x9ef7, 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc, 0x9efd, /*0x50-0x57*/ - 0x9f41, 0x9f42, 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f48, /*0x58-0x5f*/ - 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f, 0x9f50, /*0x60-0x67*/ - 0x9f51, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57, 0x9f58, 0x9f59, /*0x68-0x6f*/ - 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f61, 0x9f62, 0x9f63, 0x9f64, /*0x70-0x77*/ - 0x9f65, 0x9f66, 0x9f67, 0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, /*0x78-0x7f*/ - 0x9f6d, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f73, 0x9f74, 0x9f75, /*0x80-0x87*/ - 0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d, /*0x88-0x8f*/ - 0x9f81, 0x9f82, 0x9f83, 0x9f84, 0x9f85, 0x9f86, 0x9f87, 0x9f88, /*0x90-0x97*/ - 0x9f89, 0x9f8a, 0x9f8b, 0x9f8c, 0x9f8d, 0x9f8e, 0x9f8f, 0x9f90, /*0x98-0x9f*/ - 0x9f91, 0x9f93, 0x9f94, 0x9f95, 0x9f96, 0x9f97, 0x9f98, 0x9f99, /*0xa0-0xa7*/ - 0x9f9a, 0x9f9b, 0x9f9c, 0x9f9d, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa4, /*0xa8-0xaf*/ - 0x9fa5, 0x9fa6, 0x9fa7, 0x9fa8, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, /*0xb0-0xb7*/ - 0x9fad, 0x9fae, 0x9faf, 0x9fb0, 0x9fb1, 0x9fb3, 0x9fb4, 0x9fb5, /*0xb8-0xbf*/ - 0x9fb6, 0x9fb7, 0x9fb8, 0x9fb9, 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, /*0xc0-0xc7*/ - 0xa061, 0xa062, 0xa063, 0xa064, 0xa065, 0xa066, 0xa067, 0xa068, /*0xc8-0xcf*/ - 0xa069, 0xa06a, 0xa06b, 0xa06c, 0xa06d, 0xa06e, 0xa06f, 0xa070, /*0xd0-0xd7*/ - 0xa071, 0xa073, 0xa074, 0xa075, 0xa076, 0xa077, 0xa078, 0xa079, /*0xd8-0xdf*/ - 0xa07a, 0xa07b, 0xa07c, 0xa07d, 0xa081, 0xa082, 0xa083, 0xa084, /*0xe0-0xe7*/ - 0xa085, 0xa086, 0xa087, 0xa088, 0xa089, 0xa08a, 0xa08b, 0xa08c, /*0xe8-0xef*/ - 0xa08d, 0xa08e, 0xa08f, 0xa090, 0xa091, 0xa093, 0xa094, 0xa095, /*0xf0-0xf7*/ - 0xa096, 0xa097, 0xa098, 0xa099, 0xa09a, 0xa09b, 0xa09c, 0xa09d, /*0xf8-0xff*/ - /* 0xba00 */ - 0xa0a1, 0xa0a2, 0xa0a3, 0xa0a4, 0xa0a5, 0xa0a6, 0xa0a7, 0xa0a8, /*0x00-0x07*/ - 0xa0a9, 0xa0aa, 0xa0ab, 0xa0ac, 0xa0ad, 0xa0ae, 0xa0af, 0xa0b0, /*0x08-0x0f*/ - 0xa0b1, 0xa0b3, 0xa0b4, 0xa0b5, 0xa0b6, 0xa0b7, 0xa0b8, 0xa0b9, /*0x10-0x17*/ - 0xa0ba, 0xa0bb, 0xa0bc, 0xa0bd, 0xa0c1, 0xa0c2, 0xa0c3, 0xa0c4, /*0x18-0x1f*/ - 0xa0c5, 0xa0c6, 0xa0c7, 0xa0c8, 0xa0c9, 0xa0ca, 0xa0cb, 0xa0cc, /*0x20-0x27*/ - 0xa0cd, 0xa0ce, 0xa0cf, 0xa0d0, 0xa0d1, 0xa0d3, 0xa0d4, 0xa0d5, /*0x28-0x2f*/ - 0xa0d6, 0xa0d7, 0xa0d8, 0xa0d9, 0xa0da, 0xa0db, 0xa0dc, 0xa0dd, /*0x30-0x37*/ - 0xa0e1, 0xa0e2, 0xa0e3, 0xa0e4, 0xa0e5, 0xa0e6, 0xa0e7, 0xa0e8, /*0x38-0x3f*/ - 0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed, 0xa0ee, 0xa0ef, 0xa0f0, /*0x40-0x47*/ - 0xa0f1, 0xa0f3, 0xa0f4, 0xa0f5, 0xa0f6, 0xa0f7, 0xa0f8, 0xa0f9, /*0x48-0x4f*/ - 0xa0fa, 0xa0fb, 0xa0fc, 0xa0fd, 0xa141, 0xa142, 0xa143, 0xa144, /*0x50-0x57*/ - 0xa145, 0xa146, 0xa147, 0xa148, 0xa149, 0xa14a, 0xa14b, 0xa14c, /*0x58-0x5f*/ - 0xa14d, 0xa14e, 0xa14f, 0xa150, 0xa151, 0xa153, 0xa154, 0xa155, /*0x60-0x67*/ - 0xa156, 0xa157, 0xa158, 0xa159, 0xa15a, 0xa15b, 0xa15c, 0xa15d, /*0x68-0x6f*/ - 0xa161, 0xa162, 0xa163, 0xa164, 0xa165, 0xa166, 0xa167, 0xa168, /*0x70-0x77*/ - 0xa169, 0xa16a, 0xa16b, 0xa16c, 0xa16d, 0xa16e, 0xa16f, 0xa170, /*0x78-0x7f*/ - 0xa171, 0xa173, 0xa174, 0xa175, 0xa176, 0xa177, 0xa178, 0xa179, /*0x80-0x87*/ - 0xa17a, 0xa17b, 0xa17c, 0xa17d, 0xa181, 0xa182, 0xa183, 0xa184, /*0x88-0x8f*/ - 0xa185, 0xa186, 0xa187, 0xa188, 0xa189, 0xa18a, 0xa18b, 0xa18c, /*0x90-0x97*/ - 0xa18d, 0xa18e, 0xa18f, 0xa190, 0xa191, 0xa193, 0xa194, 0xa195, /*0x98-0x9f*/ - 0xa196, 0xa197, 0xa198, 0xa199, 0xa19a, 0xa19b, 0xa19c, 0xa19d, /*0xa0-0xa7*/ - 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, /*0xa8-0xaf*/ - 0xa1a9, 0xa1aa, 0xa1ab, 0xa1ac, 0xa1ad, 0xa1ae, 0xa1af, 0xa1b0, /*0xb0-0xb7*/ - 0xa1b1, 0xa1b3, 0xa1b4, 0xa1b5, 0xa1b6, 0xa1b7, 0xa1b8, 0xa1b9, /*0xb8-0xbf*/ - 0xa1ba, 0xa1bb, 0xa1bc, 0xa1bd, 0xa1c1, 0xa1c2, 0xa1c3, 0xa1c4, /*0xc0-0xc7*/ - 0xa1c5, 0xa1c6, 0xa1c7, 0xa1c8, 0xa1c9, 0xa1ca, 0xa1cb, 0xa1cc, /*0xc8-0xcf*/ - 0xa1cd, 0xa1ce, 0xa1cf, 0xa1d0, 0xa1d1, 0xa1d3, 0xa1d4, 0xa1d5, /*0xd0-0xd7*/ - 0xa1d6, 0xa1d7, 0xa1d8, 0xa1d9, 0xa1da, 0xa1db, 0xa1dc, 0xa1dd, /*0xd8-0xdf*/ - 0xa1e1, 0xa1e2, 0xa1e3, 0xa1e4, 0xa1e5, 0xa1e6, 0xa1e7, 0xa1e8, /*0xe0-0xe7*/ - 0xa1e9, 0xa1ea, 0xa1eb, 0xa1ec, 0xa1ed, 0xa1ee, 0xa1ef, 0xa1f0, /*0xe8-0xef*/ - 0xa1f1, 0xa1f3, 0xa1f4, 0xa1f5, 0xa1f6, 0xa1f7, 0xa1f8, 0xa1f9, /*0xf0-0xf7*/ - 0xa1fa, 0xa1fb, 0xa1fc, 0xa1fd, 0xa241, 0xa242, 0xa243, 0xa244, /*0xf8-0xff*/ - /* 0xbb00 */ - 0xa245, 0xa246, 0xa247, 0xa248, 0xa249, 0xa24a, 0xa24b, 0xa24c, /*0x00-0x07*/ - 0xa24d, 0xa24e, 0xa24f, 0xa250, 0xa251, 0xa253, 0xa254, 0xa255, /*0x08-0x0f*/ - 0xa256, 0xa257, 0xa258, 0xa259, 0xa25a, 0xa25b, 0xa25c, 0xa25d, /*0x10-0x17*/ - 0xa261, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266, 0xa267, 0xa268, /*0x18-0x1f*/ - 0xa269, 0xa26a, 0xa26b, 0xa26c, 0xa26d, 0xa26e, 0xa26f, 0xa270, /*0x20-0x27*/ - 0xa271, 0xa273, 0xa274, 0xa275, 0xa276, 0xa277, 0xa278, 0xa279, /*0x28-0x2f*/ - 0xa27a, 0xa27b, 0xa27c, 0xa27d, 0xa281, 0xa282, 0xa283, 0xa284, /*0x30-0x37*/ - 0xa285, 0xa286, 0xa287, 0xa288, 0xa289, 0xa28a, 0xa28b, 0xa28c, /*0x38-0x3f*/ - 0xa28d, 0xa28e, 0xa28f, 0xa290, 0xa291, 0xa293, 0xa294, 0xa295, /*0x40-0x47*/ - 0xa296, 0xa297, 0xa298, 0xa299, 0xa29a, 0xa29b, 0xa29c, 0xa29d, /*0x48-0x4f*/ - 0xa2a1, 0xa2a2, 0xa2a3, 0xa2a4, 0xa2a5, 0xa2a6, 0xa2a7, 0xa2a8, /*0x50-0x57*/ - 0xa2a9, 0xa2aa, 0xa2ab, 0xa2ac, 0xa2ad, 0xa2ae, 0xa2af, 0xa2b0, /*0x58-0x5f*/ - 0xa2b1, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa2b9, /*0x60-0x67*/ - 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2c1, 0xa2c2, 0xa2c3, 0xa2c4, /*0x68-0x6f*/ - 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca, 0xa2cb, 0xa2cc, /*0x70-0x77*/ - 0xa2cd, 0xa2ce, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d3, 0xa2d4, 0xa2d5, /*0x78-0x7f*/ - 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, /*0x80-0x87*/ - 0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, /*0x88-0x8f*/ - 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef, 0xa2f0, /*0x90-0x97*/ - 0xa2f1, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7, 0xa2f8, 0xa2f9, /*0x98-0x9f*/ - 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa341, 0xa342, 0xa343, 0xa344, /*0xa0-0xa7*/ - 0xa345, 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a, 0xa34b, 0xa34c, /*0xa8-0xaf*/ - 0xa34d, 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa353, 0xa354, 0xa355, /*0xb0-0xb7*/ - 0xa356, 0xa357, 0xa358, 0xa359, 0xa35a, 0xa35b, 0xa35c, 0xa35d, /*0xb8-0xbf*/ - 0xa361, 0xa362, 0xa363, 0xa364, 0xa365, 0xa366, 0xa367, 0xa368, /*0xc0-0xc7*/ - 0xa369, 0xa36a, 0xa36b, 0xa36c, 0xa36d, 0xa36e, 0xa36f, 0xa370, /*0xc8-0xcf*/ - 0xa371, 0xa373, 0xa374, 0xa375, 0xa376, 0xa377, 0xa378, 0xa379, /*0xd0-0xd7*/ - 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa381, 0xa382, 0xa383, 0xa384, /*0xd8-0xdf*/ - 0xa385, 0xa386, 0xa387, 0xa388, 0xa389, 0xa38a, 0xa38b, 0xa38c, /*0xe0-0xe7*/ - 0xa38d, 0xa38e, 0xa38f, 0xa390, 0xa391, 0xa393, 0xa394, 0xa395, /*0xe8-0xef*/ - 0xa396, 0xa397, 0xa398, 0xa399, 0xa39a, 0xa39b, 0xa39c, 0xa39d, /*0xf0-0xf7*/ - 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8, /*0xf8-0xff*/ - /* 0xbc00 */ - 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0, /*0x00-0x07*/ - 0xa3b1, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8, 0xa3b9, /*0x08-0x0f*/ - 0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa461, 0xa462, 0xa463, 0xa464, /*0x10-0x17*/ - 0xa465, 0xa466, 0xa467, 0xa468, 0xa469, 0xa46a, 0xa46b, 0xa46c, /*0x18-0x1f*/ - 0xa46d, 0xa46e, 0xa46f, 0xa470, 0xa471, 0xa473, 0xa474, 0xa475, /*0x20-0x27*/ - 0xa476, 0xa477, 0xa478, 0xa479, 0xa47a, 0xa47b, 0xa47c, 0xa47d, /*0x28-0x2f*/ - 0xa481, 0xa482, 0xa483, 0xa484, 0xa485, 0xa486, 0xa487, 0xa488, /*0x30-0x37*/ - 0xa489, 0xa48a, 0xa48b, 0xa48c, 0xa48d, 0xa48e, 0xa48f, 0xa490, /*0x38-0x3f*/ - 0xa491, 0xa493, 0xa494, 0xa495, 0xa496, 0xa497, 0xa498, 0xa499, /*0x40-0x47*/ - 0xa49a, 0xa49b, 0xa49c, 0xa49d, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4, /*0x48-0x4f*/ - 0xa4a5, 0xa4a6, 0xa4a7, 0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac, /*0x50-0x57*/ - 0xa4ad, 0xa4ae, 0xa4af, 0xa4b0, 0xa4b1, 0xa4b3, 0xa4b4, 0xa4b5, /*0x58-0x5f*/ - 0xa4b6, 0xa4b7, 0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd, /*0x60-0x67*/ - 0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c6, 0xa4c7, 0xa4c8, /*0x68-0x6f*/ - 0xa4c9, 0xa4ca, 0xa4cb, 0xa4cc, 0xa4cd, 0xa4ce, 0xa4cf, 0xa4d0, /*0x70-0x77*/ - 0xa4d1, 0xa4d3, 0xa4d4, 0xa4d5, 0xa4d6, 0xa4d7, 0xa4d8, 0xa4d9, /*0x78-0x7f*/ - 0xa4da, 0xa4db, 0xa4dc, 0xa4dd, 0xa4e1, 0xa4e2, 0xa4e3, 0xa4e4, /*0x80-0x87*/ - 0xa4e5, 0xa4e6, 0xa4e7, 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, /*0x88-0x8f*/ - 0xa4ed, 0xa4ee, 0xa4ef, 0xa4f0, 0xa4f1, 0xa4f3, 0xa4f4, 0xa4f5, /*0x90-0x97*/ - 0xa4f6, 0xa4f7, 0xa4f8, 0xa4f9, 0xa4fa, 0xa4fb, 0xa4fc, 0xa4fd, /*0x98-0x9f*/ - 0xa541, 0xa542, 0xa543, 0xa544, 0xa545, 0xa546, 0xa547, 0xa548, /*0xa0-0xa7*/ - 0xa549, 0xa54a, 0xa54b, 0xa54c, 0xa54d, 0xa54e, 0xa54f, 0xa550, /*0xa8-0xaf*/ - 0xa551, 0xa553, 0xa554, 0xa555, 0xa556, 0xa557, 0xa558, 0xa559, /*0xb0-0xb7*/ - 0xa55a, 0xa55b, 0xa55c, 0xa55d, 0xa561, 0xa562, 0xa563, 0xa564, /*0xb8-0xbf*/ - 0xa565, 0xa566, 0xa567, 0xa568, 0xa569, 0xa56a, 0xa56b, 0xa56c, /*0xc0-0xc7*/ - 0xa56d, 0xa56e, 0xa56f, 0xa570, 0xa571, 0xa573, 0xa574, 0xa575, /*0xc8-0xcf*/ - 0xa576, 0xa577, 0xa578, 0xa579, 0xa57a, 0xa57b, 0xa57c, 0xa57d, /*0xd0-0xd7*/ - 0xa581, 0xa582, 0xa583, 0xa584, 0xa585, 0xa586, 0xa587, 0xa588, /*0xd8-0xdf*/ - 0xa589, 0xa58a, 0xa58b, 0xa58c, 0xa58d, 0xa58e, 0xa58f, 0xa590, /*0xe0-0xe7*/ - 0xa591, 0xa593, 0xa594, 0xa595, 0xa596, 0xa597, 0xa598, 0xa599, /*0xe8-0xef*/ - 0xa59a, 0xa59b, 0xa59c, 0xa59d, 0xa5a1, 0xa5a2, 0xa5a3, 0xa5a4, /*0xf0-0xf7*/ - 0xa5a5, 0xa5a6, 0xa5a7, 0xa5a8, 0xa5a9, 0xa5aa, 0xa5ab, 0xa5ac, /*0xf8-0xff*/ - /* 0xbd00 */ - 0xa5ad, 0xa5ae, 0xa5af, 0xa5b0, 0xa5b1, 0xa5b3, 0xa5b4, 0xa5b5, /*0x00-0x07*/ - 0xa5b6, 0xa5b7, 0xa5b8, 0xa5b9, 0xa5ba, 0xa5bb, 0xa5bc, 0xa5bd, /*0x08-0x0f*/ - 0xa5c1, 0xa5c2, 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c6, 0xa5c7, 0xa5c8, /*0x10-0x17*/ - 0xa5c9, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5cf, 0xa5d0, /*0x18-0x1f*/ - 0xa5d1, 0xa5d3, 0xa5d4, 0xa5d5, 0xa5d6, 0xa5d7, 0xa5d8, 0xa5d9, /*0x20-0x27*/ - 0xa5da, 0xa5db, 0xa5dc, 0xa5dd, 0xa5e1, 0xa5e2, 0xa5e3, 0xa5e4, /*0x28-0x2f*/ - 0xa5e5, 0xa5e6, 0xa5e7, 0xa5e8, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, /*0x30-0x37*/ - 0xa5ed, 0xa5ee, 0xa5ef, 0xa5f0, 0xa5f1, 0xa5f3, 0xa5f4, 0xa5f5, /*0x38-0x3f*/ - 0xa5f6, 0xa5f7, 0xa5f8, 0xa5f9, 0xa5fa, 0xa5fb, 0xa5fc, 0xa5fd, /*0x40-0x47*/ - 0xa641, 0xa642, 0xa643, 0xa644, 0xa645, 0xa646, 0xa647, 0xa648, /*0x48-0x4f*/ - 0xa649, 0xa64a, 0xa64b, 0xa64c, 0xa64d, 0xa64e, 0xa64f, 0xa650, /*0x50-0x57*/ - 0xa651, 0xa653, 0xa654, 0xa655, 0xa656, 0xa657, 0xa658, 0xa659, /*0x58-0x5f*/ - 0xa65a, 0xa65b, 0xa65c, 0xa65d, 0xa661, 0xa662, 0xa663, 0xa664, /*0x60-0x67*/ - 0xa665, 0xa666, 0xa667, 0xa668, 0xa669, 0xa66a, 0xa66b, 0xa66c, /*0x68-0x6f*/ - 0xa66d, 0xa66e, 0xa66f, 0xa670, 0xa671, 0xa673, 0xa674, 0xa675, /*0x70-0x77*/ - 0xa676, 0xa677, 0xa678, 0xa679, 0xa67a, 0xa67b, 0xa67c, 0xa67d, /*0x78-0x7f*/ - 0xa681, 0xa682, 0xa683, 0xa684, 0xa685, 0xa686, 0xa687, 0xa688, /*0x80-0x87*/ - 0xa689, 0xa68a, 0xa68b, 0xa68c, 0xa68d, 0xa68e, 0xa68f, 0xa690, /*0x88-0x8f*/ - 0xa691, 0xa693, 0xa694, 0xa695, 0xa696, 0xa697, 0xa698, 0xa699, /*0x90-0x97*/ - 0xa69a, 0xa69b, 0xa69c, 0xa69d, 0xa6a1, 0xa6a2, 0xa6a3, 0xa6a4, /*0x98-0x9f*/ - 0xa6a5, 0xa6a6, 0xa6a7, 0xa6a8, 0xa6a9, 0xa6aa, 0xa6ab, 0xa6ac, /*0xa0-0xa7*/ - 0xa6ad, 0xa6ae, 0xa6af, 0xa6b0, 0xa6b1, 0xa6b3, 0xa6b4, 0xa6b5, /*0xa8-0xaf*/ - 0xa6b6, 0xa6b7, 0xa6b8, 0xa6b9, 0xa6ba, 0xa6bb, 0xa6bc, 0xa6bd, /*0xb0-0xb7*/ - 0xa6c1, 0xa6c2, 0xa6c3, 0xa6c4, 0xa6c5, 0xa6c6, 0xa6c7, 0xa6c8, /*0xb8-0xbf*/ - 0xa6c9, 0xa6ca, 0xa6cb, 0xa6cc, 0xa6cd, 0xa6ce, 0xa6cf, 0xa6d0, /*0xc0-0xc7*/ - 0xa6d1, 0xa6d3, 0xa6d4, 0xa6d5, 0xa6d6, 0xa6d7, 0xa6d8, 0xa6d9, /*0xc8-0xcf*/ - 0xa6da, 0xa6db, 0xa6dc, 0xa6dd, 0xa6e1, 0xa6e2, 0xa6e3, 0xa6e4, /*0xd0-0xd7*/ - 0xa6e5, 0xa6e6, 0xa6e7, 0xa6e8, 0xa6e9, 0xa6ea, 0xa6eb, 0xa6ec, /*0xd8-0xdf*/ - 0xa6ed, 0xa6ee, 0xa6ef, 0xa6f0, 0xa6f1, 0xa6f3, 0xa6f4, 0xa6f5, /*0xe0-0xe7*/ - 0xa6f6, 0xa6f7, 0xa6f8, 0xa6f9, 0xa6fa, 0xa6fb, 0xa6fc, 0xa6fd, /*0xe8-0xef*/ - 0xa741, 0xa742, 0xa743, 0xa744, 0xa745, 0xa746, 0xa747, 0xa748, /*0xf0-0xf7*/ - 0xa749, 0xa74a, 0xa74b, 0xa74c, 0xa74d, 0xa74e, 0xa74f, 0xa750, /*0xf8-0xff*/ - /* 0xbe00 */ - 0xa751, 0xa753, 0xa754, 0xa755, 0xa756, 0xa757, 0xa758, 0xa759, /*0x00-0x07*/ - 0xa75a, 0xa75b, 0xa75c, 0xa75d, 0xa761, 0xa762, 0xa763, 0xa764, /*0x08-0x0f*/ - 0xa765, 0xa766, 0xa767, 0xa768, 0xa769, 0xa76a, 0xa76b, 0xa76c, /*0x10-0x17*/ - 0xa76d, 0xa76e, 0xa76f, 0xa770, 0xa771, 0xa773, 0xa774, 0xa775, /*0x18-0x1f*/ - 0xa776, 0xa777, 0xa778, 0xa779, 0xa77a, 0xa77b, 0xa77c, 0xa77d, /*0x20-0x27*/ - 0xa781, 0xa782, 0xa783, 0xa784, 0xa785, 0xa786, 0xa787, 0xa788, /*0x28-0x2f*/ - 0xa789, 0xa78a, 0xa78b, 0xa78c, 0xa78d, 0xa78e, 0xa78f, 0xa790, /*0x30-0x37*/ - 0xa791, 0xa793, 0xa794, 0xa795, 0xa796, 0xa797, 0xa798, 0xa799, /*0x38-0x3f*/ - 0xa79a, 0xa79b, 0xa79c, 0xa79d, 0xa7a1, 0xa7a2, 0xa7a3, 0xa7a4, /*0x40-0x47*/ - 0xa7a5, 0xa7a6, 0xa7a7, 0xa7a8, 0xa7a9, 0xa7aa, 0xa7ab, 0xa7ac, /*0x48-0x4f*/ - 0xa7ad, 0xa7ae, 0xa7af, 0xa7b0, 0xa7b1, 0xa7b3, 0xa7b4, 0xa7b5, /*0x50-0x57*/ - 0xa7b6, 0xa7b7, 0xa7b8, 0xa7b9, 0xa7ba, 0xa7bb, 0xa7bc, 0xa7bd, /*0x58-0x5f*/ - 0xa861, 0xa862, 0xa863, 0xa864, 0xa865, 0xa866, 0xa867, 0xa868, /*0x60-0x67*/ - 0xa869, 0xa86a, 0xa86b, 0xa86c, 0xa86d, 0xa86e, 0xa86f, 0xa870, /*0x68-0x6f*/ - 0xa871, 0xa873, 0xa874, 0xa875, 0xa876, 0xa877, 0xa878, 0xa879, /*0x70-0x77*/ - 0xa87a, 0xa87b, 0xa87c, 0xa87d, 0xa881, 0xa882, 0xa883, 0xa884, /*0x78-0x7f*/ - 0xa885, 0xa886, 0xa887, 0xa888, 0xa889, 0xa88a, 0xa88b, 0xa88c, /*0x80-0x87*/ - 0xa88d, 0xa88e, 0xa88f, 0xa890, 0xa891, 0xa893, 0xa894, 0xa895, /*0x88-0x8f*/ - 0xa896, 0xa897, 0xa898, 0xa899, 0xa89a, 0xa89b, 0xa89c, 0xa89d, /*0x90-0x97*/ - 0xa8a1, 0xa8a2, 0xa8a3, 0xa8a4, 0xa8a5, 0xa8a6, 0xa8a7, 0xa8a8, /*0x98-0x9f*/ - 0xa8a9, 0xa8aa, 0xa8ab, 0xa8ac, 0xa8ad, 0xa8ae, 0xa8af, 0xa8b0, /*0xa0-0xa7*/ - 0xa8b1, 0xa8b3, 0xa8b4, 0xa8b5, 0xa8b6, 0xa8b7, 0xa8b8, 0xa8b9, /*0xa8-0xaf*/ - 0xa8ba, 0xa8bb, 0xa8bc, 0xa8bd, 0xa8c1, 0xa8c2, 0xa8c3, 0xa8c4, /*0xb0-0xb7*/ - 0xa8c5, 0xa8c6, 0xa8c7, 0xa8c8, 0xa8c9, 0xa8ca, 0xa8cb, 0xa8cc, /*0xb8-0xbf*/ - 0xa8cd, 0xa8ce, 0xa8cf, 0xa8d0, 0xa8d1, 0xa8d3, 0xa8d4, 0xa8d5, /*0xc0-0xc7*/ - 0xa8d6, 0xa8d7, 0xa8d8, 0xa8d9, 0xa8da, 0xa8db, 0xa8dc, 0xa8dd, /*0xc8-0xcf*/ - 0xa8e1, 0xa8e2, 0xa8e3, 0xa8e4, 0xa8e5, 0xa8e6, 0xa8e7, 0xa8e8, /*0xd0-0xd7*/ - 0xa8e9, 0xa8ea, 0xa8eb, 0xa8ec, 0xa8ed, 0xa8ee, 0xa8ef, 0xa8f0, /*0xd8-0xdf*/ - 0xa8f1, 0xa8f3, 0xa8f4, 0xa8f5, 0xa8f6, 0xa8f7, 0xa8f8, 0xa8f9, /*0xe0-0xe7*/ - 0xa8fa, 0xa8fb, 0xa8fc, 0xa8fd, 0xa941, 0xa942, 0xa943, 0xa944, /*0xe8-0xef*/ - 0xa945, 0xa946, 0xa947, 0xa948, 0xa949, 0xa94a, 0xa94b, 0xa94c, /*0xf0-0xf7*/ - 0xa94d, 0xa94e, 0xa94f, 0xa950, 0xa951, 0xa953, 0xa954, 0xa955, /*0xf8-0xff*/ - /* 0xbf00 */ - 0xa956, 0xa957, 0xa958, 0xa959, 0xa95a, 0xa95b, 0xa95c, 0xa95d, /*0x00-0x07*/ - 0xa961, 0xa962, 0xa963, 0xa964, 0xa965, 0xa966, 0xa967, 0xa968, /*0x08-0x0f*/ - 0xa969, 0xa96a, 0xa96b, 0xa96c, 0xa96d, 0xa96e, 0xa96f, 0xa970, /*0x10-0x17*/ - 0xa971, 0xa973, 0xa974, 0xa975, 0xa976, 0xa977, 0xa978, 0xa979, /*0x18-0x1f*/ - 0xa97a, 0xa97b, 0xa97c, 0xa97d, 0xa981, 0xa982, 0xa983, 0xa984, /*0x20-0x27*/ - 0xa985, 0xa986, 0xa987, 0xa988, 0xa989, 0xa98a, 0xa98b, 0xa98c, /*0x28-0x2f*/ - 0xa98d, 0xa98e, 0xa98f, 0xa990, 0xa991, 0xa993, 0xa994, 0xa995, /*0x30-0x37*/ - 0xa996, 0xa997, 0xa998, 0xa999, 0xa99a, 0xa99b, 0xa99c, 0xa99d, /*0x38-0x3f*/ - 0xa9a1, 0xa9a2, 0xa9a3, 0xa9a4, 0xa9a5, 0xa9a6, 0xa9a7, 0xa9a8, /*0x40-0x47*/ - 0xa9a9, 0xa9aa, 0xa9ab, 0xa9ac, 0xa9ad, 0xa9ae, 0xa9af, 0xa9b0, /*0x48-0x4f*/ - 0xa9b1, 0xa9b3, 0xa9b4, 0xa9b5, 0xa9b6, 0xa9b7, 0xa9b8, 0xa9b9, /*0x50-0x57*/ - 0xa9ba, 0xa9bb, 0xa9bc, 0xa9bd, 0xa9c1, 0xa9c2, 0xa9c3, 0xa9c4, /*0x58-0x5f*/ - 0xa9c5, 0xa9c6, 0xa9c7, 0xa9c8, 0xa9c9, 0xa9ca, 0xa9cb, 0xa9cc, /*0x60-0x67*/ - 0xa9cd, 0xa9ce, 0xa9cf, 0xa9d0, 0xa9d1, 0xa9d3, 0xa9d4, 0xa9d5, /*0x68-0x6f*/ - 0xa9d6, 0xa9d7, 0xa9d8, 0xa9d9, 0xa9da, 0xa9db, 0xa9dc, 0xa9dd, /*0x70-0x77*/ - 0xa9e1, 0xa9e2, 0xa9e3, 0xa9e4, 0xa9e5, 0xa9e6, 0xa9e7, 0xa9e8, /*0x78-0x7f*/ - 0xa9e9, 0xa9ea, 0xa9eb, 0xa9ec, 0xa9ed, 0xa9ee, 0xa9ef, 0xa9f0, /*0x80-0x87*/ - 0xa9f1, 0xa9f3, 0xa9f4, 0xa9f5, 0xa9f6, 0xa9f7, 0xa9f8, 0xa9f9, /*0x88-0x8f*/ - 0xa9fa, 0xa9fb, 0xa9fc, 0xa9fd, 0xaa41, 0xaa42, 0xaa43, 0xaa44, /*0x90-0x97*/ - 0xaa45, 0xaa46, 0xaa47, 0xaa48, 0xaa49, 0xaa4a, 0xaa4b, 0xaa4c, /*0x98-0x9f*/ - 0xaa4d, 0xaa4e, 0xaa4f, 0xaa50, 0xaa51, 0xaa53, 0xaa54, 0xaa55, /*0xa0-0xa7*/ - 0xaa56, 0xaa57, 0xaa58, 0xaa59, 0xaa5a, 0xaa5b, 0xaa5c, 0xaa5d, /*0xa8-0xaf*/ - 0xaa61, 0xaa62, 0xaa63, 0xaa64, 0xaa65, 0xaa66, 0xaa67, 0xaa68, /*0xb0-0xb7*/ - 0xaa69, 0xaa6a, 0xaa6b, 0xaa6c, 0xaa6d, 0xaa6e, 0xaa6f, 0xaa70, /*0xb8-0xbf*/ - 0xaa71, 0xaa73, 0xaa74, 0xaa75, 0xaa76, 0xaa77, 0xaa78, 0xaa79, /*0xc0-0xc7*/ - 0xaa7a, 0xaa7b, 0xaa7c, 0xaa7d, 0xaa81, 0xaa82, 0xaa83, 0xaa84, /*0xc8-0xcf*/ - 0xaa85, 0xaa86, 0xaa87, 0xaa88, 0xaa89, 0xaa8a, 0xaa8b, 0xaa8c, /*0xd0-0xd7*/ - 0xaa8d, 0xaa8e, 0xaa8f, 0xaa90, 0xaa91, 0xaa93, 0xaa94, 0xaa95, /*0xd8-0xdf*/ - 0xaa96, 0xaa97, 0xaa98, 0xaa99, 0xaa9a, 0xaa9b, 0xaa9c, 0xaa9d, /*0xe0-0xe7*/ - 0xaaa1, 0xaaa2, 0xaaa3, 0xaaa4, 0xaaa5, 0xaaa6, 0xaaa7, 0xaaa8, /*0xe8-0xef*/ - 0xaaa9, 0xaaaa, 0xaaab, 0xaaac, 0xaaad, 0xaaae, 0xaaaf, 0xaab0, /*0xf0-0xf7*/ - 0xaab1, 0xaab3, 0xaab4, 0xaab5, 0xaab6, 0xaab7, 0xaab8, 0xaab9, /*0xf8-0xff*/ - /* 0xc000 */ - 0xaaba, 0xaabb, 0xaabc, 0xaabd, 0xaac1, 0xaac2, 0xaac3, 0xaac4, /*0x00-0x07*/ - 0xaac5, 0xaac6, 0xaac7, 0xaac8, 0xaac9, 0xaaca, 0xaacb, 0xaacc, /*0x08-0x0f*/ - 0xaacd, 0xaace, 0xaacf, 0xaad0, 0xaad1, 0xaad3, 0xaad4, 0xaad5, /*0x10-0x17*/ - 0xaad6, 0xaad7, 0xaad8, 0xaad9, 0xaada, 0xaadb, 0xaadc, 0xaadd, /*0x18-0x1f*/ - 0xaae1, 0xaae2, 0xaae3, 0xaae4, 0xaae5, 0xaae6, 0xaae7, 0xaae8, /*0x20-0x27*/ - 0xaae9, 0xaaea, 0xaaeb, 0xaaec, 0xaaed, 0xaaee, 0xaaef, 0xaaf0, /*0x28-0x2f*/ - 0xaaf1, 0xaaf3, 0xaaf4, 0xaaf5, 0xaaf6, 0xaaf7, 0xaaf8, 0xaaf9, /*0x30-0x37*/ - 0xaafa, 0xaafb, 0xaafc, 0xaafd, 0xab41, 0xab42, 0xab43, 0xab44, /*0x38-0x3f*/ - 0xab45, 0xab46, 0xab47, 0xab48, 0xab49, 0xab4a, 0xab4b, 0xab4c, /*0x40-0x47*/ - 0xab4d, 0xab4e, 0xab4f, 0xab50, 0xab51, 0xab53, 0xab54, 0xab55, /*0x48-0x4f*/ - 0xab56, 0xab57, 0xab58, 0xab59, 0xab5a, 0xab5b, 0xab5c, 0xab5d, /*0x50-0x57*/ - 0xab61, 0xab62, 0xab63, 0xab64, 0xab65, 0xab66, 0xab67, 0xab68, /*0x58-0x5f*/ - 0xab69, 0xab6a, 0xab6b, 0xab6c, 0xab6d, 0xab6e, 0xab6f, 0xab70, /*0x60-0x67*/ - 0xab71, 0xab73, 0xab74, 0xab75, 0xab76, 0xab77, 0xab78, 0xab79, /*0x68-0x6f*/ - 0xab7a, 0xab7b, 0xab7c, 0xab7d, 0xab81, 0xab82, 0xab83, 0xab84, /*0x70-0x77*/ - 0xab85, 0xab86, 0xab87, 0xab88, 0xab89, 0xab8a, 0xab8b, 0xab8c, /*0x78-0x7f*/ - 0xab8d, 0xab8e, 0xab8f, 0xab90, 0xab91, 0xab93, 0xab94, 0xab95, /*0x80-0x87*/ - 0xab96, 0xab97, 0xab98, 0xab99, 0xab9a, 0xab9b, 0xab9c, 0xab9d, /*0x88-0x8f*/ - 0xaba1, 0xaba2, 0xaba3, 0xaba4, 0xaba5, 0xaba6, 0xaba7, 0xaba8, /*0x90-0x97*/ - 0xaba9, 0xabaa, 0xabab, 0xabac, 0xabad, 0xabae, 0xabaf, 0xabb0, /*0x98-0x9f*/ - 0xabb1, 0xabb3, 0xabb4, 0xabb5, 0xabb6, 0xabb7, 0xabb8, 0xabb9, /*0xa0-0xa7*/ - 0xabba, 0xabbb, 0xabbc, 0xabbd, 0xac61, 0xac62, 0xac63, 0xac64, /*0xa8-0xaf*/ - 0xac65, 0xac66, 0xac67, 0xac68, 0xac69, 0xac6a, 0xac6b, 0xac6c, /*0xb0-0xb7*/ - 0xac6d, 0xac6e, 0xac6f, 0xac70, 0xac71, 0xac73, 0xac74, 0xac75, /*0xb8-0xbf*/ - 0xac76, 0xac77, 0xac78, 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, /*0xc0-0xc7*/ - 0xac81, 0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xac87, 0xac88, /*0xc8-0xcf*/ - 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90, /*0xd0-0xd7*/ - 0xac91, 0xac93, 0xac94, 0xac95, 0xac96, 0xac97, 0xac98, 0xac99, /*0xd8-0xdf*/ - 0xac9a, 0xac9b, 0xac9c, 0xac9d, 0xaca1, 0xaca2, 0xaca3, 0xaca4, /*0xe0-0xe7*/ - 0xaca5, 0xaca6, 0xaca7, 0xaca8, 0xaca9, 0xacaa, 0xacab, 0xacac, /*0xe8-0xef*/ - 0xacad, 0xacae, 0xacaf, 0xacb0, 0xacb1, 0xacb3, 0xacb4, 0xacb5, /*0xf0-0xf7*/ - 0xacb6, 0xacb7, 0xacb8, 0xacb9, 0xacba, 0xacbb, 0xacbc, 0xacbd, /*0xf8-0xff*/ - /* 0xc100 */ - 0xacc1, 0xacc2, 0xacc3, 0xacc4, 0xacc5, 0xacc6, 0xacc7, 0xacc8, /*0x00-0x07*/ - 0xacc9, 0xacca, 0xaccb, 0xaccc, 0xaccd, 0xacce, 0xaccf, 0xacd0, /*0x08-0x0f*/ - 0xacd1, 0xacd3, 0xacd4, 0xacd5, 0xacd6, 0xacd7, 0xacd8, 0xacd9, /*0x10-0x17*/ - 0xacda, 0xacdb, 0xacdc, 0xacdd, 0xace1, 0xace2, 0xace3, 0xace4, /*0x18-0x1f*/ - 0xace5, 0xace6, 0xace7, 0xace8, 0xace9, 0xacea, 0xaceb, 0xacec, /*0x20-0x27*/ - 0xaced, 0xacee, 0xacef, 0xacf0, 0xacf1, 0xacf3, 0xacf4, 0xacf5, /*0x28-0x2f*/ - 0xacf6, 0xacf7, 0xacf8, 0xacf9, 0xacfa, 0xacfb, 0xacfc, 0xacfd, /*0x30-0x37*/ - 0xad41, 0xad42, 0xad43, 0xad44, 0xad45, 0xad46, 0xad47, 0xad48, /*0x38-0x3f*/ - 0xad49, 0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, 0xad50, /*0x40-0x47*/ - 0xad51, 0xad53, 0xad54, 0xad55, 0xad56, 0xad57, 0xad58, 0xad59, /*0x48-0x4f*/ - 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad61, 0xad62, 0xad63, 0xad64, /*0x50-0x57*/ - 0xad65, 0xad66, 0xad67, 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6c, /*0x58-0x5f*/ - 0xad6d, 0xad6e, 0xad6f, 0xad70, 0xad71, 0xad73, 0xad74, 0xad75, /*0x60-0x67*/ - 0xad76, 0xad77, 0xad78, 0xad79, 0xad7a, 0xad7b, 0xad7c, 0xad7d, /*0x68-0x6f*/ - 0xad81, 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, 0xad88, /*0x70-0x77*/ - 0xad89, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e, 0xad8f, 0xad90, /*0x78-0x7f*/ - 0xad91, 0xad93, 0xad94, 0xad95, 0xad96, 0xad97, 0xad98, 0xad99, /*0x80-0x87*/ - 0xad9a, 0xad9b, 0xad9c, 0xad9d, 0xada1, 0xada2, 0xada3, 0xada4, /*0x88-0x8f*/ - 0xada5, 0xada6, 0xada7, 0xada8, 0xada9, 0xadaa, 0xadab, 0xadac, /*0x90-0x97*/ - 0xadad, 0xadae, 0xadaf, 0xadb0, 0xadb1, 0xadb3, 0xadb4, 0xadb5, /*0x98-0x9f*/ - 0xadb6, 0xadb7, 0xadb8, 0xadb9, 0xadba, 0xadbb, 0xadbc, 0xadbd, /*0xa0-0xa7*/ - 0xadc1, 0xadc2, 0xadc3, 0xadc4, 0xadc5, 0xadc6, 0xadc7, 0xadc8, /*0xa8-0xaf*/ - 0xadc9, 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce, 0xadcf, 0xadd0, /*0xb0-0xb7*/ - 0xadd1, 0xadd3, 0xadd4, 0xadd5, 0xadd6, 0xadd7, 0xadd8, 0xadd9, /*0xb8-0xbf*/ - 0xadda, 0xaddb, 0xaddc, 0xaddd, 0xade1, 0xade2, 0xade3, 0xade4, /*0xc0-0xc7*/ - 0xade5, 0xade6, 0xade7, 0xade8, 0xade9, 0xadea, 0xadeb, 0xadec, /*0xc8-0xcf*/ - 0xaded, 0xadee, 0xadef, 0xadf0, 0xadf1, 0xadf3, 0xadf4, 0xadf5, /*0xd0-0xd7*/ - 0xadf6, 0xadf7, 0xadf8, 0xadf9, 0xadfa, 0xadfb, 0xadfc, 0xadfd, /*0xd8-0xdf*/ - 0xae41, 0xae42, 0xae43, 0xae44, 0xae45, 0xae46, 0xae47, 0xae48, /*0xe0-0xe7*/ - 0xae49, 0xae4a, 0xae4b, 0xae4c, 0xae4d, 0xae4e, 0xae4f, 0xae50, /*0xe8-0xef*/ - 0xae51, 0xae53, 0xae54, 0xae55, 0xae56, 0xae57, 0xae58, 0xae59, /*0xf0-0xf7*/ - 0xae5a, 0xae5b, 0xae5c, 0xae5d, 0xae61, 0xae62, 0xae63, 0xae64, /*0xf8-0xff*/ - /* 0xc200 */ - 0xae65, 0xae66, 0xae67, 0xae68, 0xae69, 0xae6a, 0xae6b, 0xae6c, /*0x00-0x07*/ - 0xae6d, 0xae6e, 0xae6f, 0xae70, 0xae71, 0xae73, 0xae74, 0xae75, /*0x08-0x0f*/ - 0xae76, 0xae77, 0xae78, 0xae79, 0xae7a, 0xae7b, 0xae7c, 0xae7d, /*0x10-0x17*/ - 0xae81, 0xae82, 0xae83, 0xae84, 0xae85, 0xae86, 0xae87, 0xae88, /*0x18-0x1f*/ - 0xae89, 0xae8a, 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f, 0xae90, /*0x20-0x27*/ - 0xae91, 0xae93, 0xae94, 0xae95, 0xae96, 0xae97, 0xae98, 0xae99, /*0x28-0x2f*/ - 0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xaea1, 0xaea2, 0xaea3, 0xaea4, /*0x30-0x37*/ - 0xaea5, 0xaea6, 0xaea7, 0xaea8, 0xaea9, 0xaeaa, 0xaeab, 0xaeac, /*0x38-0x3f*/ - 0xaead, 0xaeae, 0xaeaf, 0xaeb0, 0xaeb1, 0xaeb3, 0xaeb4, 0xaeb5, /*0x40-0x47*/ - 0xaeb6, 0xaeb7, 0xaeb8, 0xaeb9, 0xaeba, 0xaebb, 0xaebc, 0xaebd, /*0x48-0x4f*/ - 0xaec1, 0xaec2, 0xaec3, 0xaec4, 0xaec5, 0xaec6, 0xaec7, 0xaec8, /*0x50-0x57*/ - 0xaec9, 0xaeca, 0xaecb, 0xaecc, 0xaecd, 0xaece, 0xaecf, 0xaed0, /*0x58-0x5f*/ - 0xaed1, 0xaed3, 0xaed4, 0xaed5, 0xaed6, 0xaed7, 0xaed8, 0xaed9, /*0x60-0x67*/ - 0xaeda, 0xaedb, 0xaedc, 0xaedd, 0xaee1, 0xaee2, 0xaee3, 0xaee4, /*0x68-0x6f*/ - 0xaee5, 0xaee6, 0xaee7, 0xaee8, 0xaee9, 0xaeea, 0xaeeb, 0xaeec, /*0x70-0x77*/ - 0xaeed, 0xaeee, 0xaeef, 0xaef0, 0xaef1, 0xaef3, 0xaef4, 0xaef5, /*0x78-0x7f*/ - 0xaef6, 0xaef7, 0xaef8, 0xaef9, 0xaefa, 0xaefb, 0xaefc, 0xaefd, /*0x80-0x87*/ - 0xaf41, 0xaf42, 0xaf43, 0xaf44, 0xaf45, 0xaf46, 0xaf47, 0xaf48, /*0x88-0x8f*/ - 0xaf49, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, 0xaf4e, 0xaf4f, 0xaf50, /*0x90-0x97*/ - 0xaf51, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57, 0xaf58, 0xaf59, /*0x98-0x9f*/ - 0xaf5a, 0xaf5b, 0xaf5c, 0xaf5d, 0xaf61, 0xaf62, 0xaf63, 0xaf64, /*0xa0-0xa7*/ - 0xaf65, 0xaf66, 0xaf67, 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c, /*0xa8-0xaf*/ - 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70, 0xaf71, 0xaf73, 0xaf74, 0xaf75, /*0xb0-0xb7*/ - 0xaf76, 0xaf77, 0xaf78, 0xaf79, 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d, /*0xb8-0xbf*/ - 0xaf81, 0xaf82, 0xaf83, 0xaf84, 0xaf85, 0xaf86, 0xaf87, 0xaf88, /*0xc0-0xc7*/ - 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, 0xaf8f, 0xaf90, /*0xc8-0xcf*/ - 0xaf91, 0xaf93, 0xaf94, 0xaf95, 0xaf96, 0xaf97, 0xaf98, 0xaf99, /*0xd0-0xd7*/ - 0xaf9a, 0xaf9b, 0xaf9c, 0xaf9d, 0xafa1, 0xafa2, 0xafa3, 0xafa4, /*0xd8-0xdf*/ - 0xafa5, 0xafa6, 0xafa7, 0xafa8, 0xafa9, 0xafaa, 0xafab, 0xafac, /*0xe0-0xe7*/ - 0xafad, 0xafae, 0xafaf, 0xafb0, 0xafb1, 0xafb3, 0xafb4, 0xafb5, /*0xe8-0xef*/ - 0xafb6, 0xafb7, 0xafb8, 0xafb9, 0xafba, 0xafbb, 0xafbc, 0xafbd, /*0xf0-0xf7*/ - 0xb061, 0xb062, 0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068, /*0xf8-0xff*/ - /* 0xc300 */ - 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e, 0xb06f, 0xb070, /*0x00-0x07*/ - 0xb071, 0xb073, 0xb074, 0xb075, 0xb076, 0xb077, 0xb078, 0xb079, /*0x08-0x0f*/ - 0xb07a, 0xb07b, 0xb07c, 0xb07d, 0xb081, 0xb082, 0xb083, 0xb084, /*0x10-0x17*/ - 0xb085, 0xb086, 0xb087, 0xb088, 0xb089, 0xb08a, 0xb08b, 0xb08c, /*0x18-0x1f*/ - 0xb08d, 0xb08e, 0xb08f, 0xb090, 0xb091, 0xb093, 0xb094, 0xb095, /*0x20-0x27*/ - 0xb096, 0xb097, 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, /*0x28-0x2f*/ - 0xb0a1, 0xb0a2, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, 0xb0a7, 0xb0a8, /*0x30-0x37*/ - 0xb0a9, 0xb0aa, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af, 0xb0b0, /*0x38-0x3f*/ - 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b6, 0xb0b7, 0xb0b8, 0xb0b9, /*0x40-0x47*/ - 0xb0ba, 0xb0bb, 0xb0bc, 0xb0bd, 0xb0c1, 0xb0c2, 0xb0c3, 0xb0c4, /*0x48-0x4f*/ - 0xb0c5, 0xb0c6, 0xb0c7, 0xb0c8, 0xb0c9, 0xb0ca, 0xb0cb, 0xb0cc, /*0x50-0x57*/ - 0xb0cd, 0xb0ce, 0xb0cf, 0xb0d0, 0xb0d1, 0xb0d3, 0xb0d4, 0xb0d5, /*0x58-0x5f*/ - 0xb0d6, 0xb0d7, 0xb0d8, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc, 0xb0dd, /*0x60-0x67*/ - 0xb0e1, 0xb0e2, 0xb0e3, 0xb0e4, 0xb0e5, 0xb0e6, 0xb0e7, 0xb0e8, /*0x68-0x6f*/ - 0xb0e9, 0xb0ea, 0xb0eb, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, 0xb0f0, /*0x70-0x77*/ - 0xb0f1, 0xb0f3, 0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, 0xb0f8, 0xb0f9, /*0x78-0x7f*/ - 0xb0fa, 0xb0fb, 0xb0fc, 0xb0fd, 0xb141, 0xb142, 0xb143, 0xb144, /*0x80-0x87*/ - 0xb145, 0xb146, 0xb147, 0xb148, 0xb149, 0xb14a, 0xb14b, 0xb14c, /*0x88-0x8f*/ - 0xb14d, 0xb14e, 0xb14f, 0xb150, 0xb151, 0xb153, 0xb154, 0xb155, /*0x90-0x97*/ - 0xb156, 0xb157, 0xb158, 0xb159, 0xb15a, 0xb15b, 0xb15c, 0xb15d, /*0x98-0x9f*/ - 0xb161, 0xb162, 0xb163, 0xb164, 0xb165, 0xb166, 0xb167, 0xb168, /*0xa0-0xa7*/ - 0xb169, 0xb16a, 0xb16b, 0xb16c, 0xb16d, 0xb16e, 0xb16f, 0xb170, /*0xa8-0xaf*/ - 0xb171, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, 0xb178, 0xb179, /*0xb0-0xb7*/ - 0xb17a, 0xb17b, 0xb17c, 0xb17d, 0xb181, 0xb182, 0xb183, 0xb184, /*0xb8-0xbf*/ - 0xb185, 0xb186, 0xb187, 0xb188, 0xb189, 0xb18a, 0xb18b, 0xb18c, /*0xc0-0xc7*/ - 0xb18d, 0xb18e, 0xb18f, 0xb190, 0xb191, 0xb193, 0xb194, 0xb195, /*0xc8-0xcf*/ - 0xb196, 0xb197, 0xb198, 0xb199, 0xb19a, 0xb19b, 0xb19c, 0xb19d, /*0xd0-0xd7*/ - 0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4, 0xb1a5, 0xb1a6, 0xb1a7, 0xb1a8, /*0xd8-0xdf*/ - 0xb1a9, 0xb1aa, 0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, 0xb1b0, /*0xe0-0xe7*/ - 0xb1b1, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, 0xb1b7, 0xb1b8, 0xb1b9, /*0xe8-0xef*/ - 0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, /*0xf0-0xf7*/ - 0xb1c5, 0xb1c6, 0xb1c7, 0xb1c8, 0xb1c9, 0xb1ca, 0xb1cb, 0xb1cc, /*0xf8-0xff*/ - /* 0xc400 */ - 0xb1cd, 0xb1ce, 0xb1cf, 0xb1d0, 0xb1d1, 0xb1d3, 0xb1d4, 0xb1d5, /*0x00-0x07*/ - 0xb1d6, 0xb1d7, 0xb1d8, 0xb1d9, 0xb1da, 0xb1db, 0xb1dc, 0xb1dd, /*0x08-0x0f*/ - 0xb1e1, 0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, 0xb1e8, /*0x10-0x17*/ - 0xb1e9, 0xb1ea, 0xb1eb, 0xb1ec, 0xb1ed, 0xb1ee, 0xb1ef, 0xb1f0, /*0x18-0x1f*/ - 0xb1f1, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6, 0xb1f7, 0xb1f8, 0xb1f9, /*0x20-0x27*/ - 0xb1fa, 0xb1fb, 0xb1fc, 0xb1fd, 0xb241, 0xb242, 0xb243, 0xb244, /*0x28-0x2f*/ - 0xb245, 0xb246, 0xb247, 0xb248, 0xb249, 0xb24a, 0xb24b, 0xb24c, /*0x30-0x37*/ - 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb253, 0xb254, 0xb255, /*0x38-0x3f*/ - 0xb256, 0xb257, 0xb258, 0xb259, 0xb25a, 0xb25b, 0xb25c, 0xb25d, /*0x40-0x47*/ - 0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, 0xb267, 0xb268, /*0x48-0x4f*/ - 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xb26e, 0xb26f, 0xb270, /*0x50-0x57*/ - 0xb271, 0xb273, 0xb274, 0xb275, 0xb276, 0xb277, 0xb278, 0xb279, /*0x58-0x5f*/ - 0xb27a, 0xb27b, 0xb27c, 0xb27d, 0xb281, 0xb282, 0xb283, 0xb284, /*0x60-0x67*/ - 0xb285, 0xb286, 0xb287, 0xb288, 0xb289, 0xb28a, 0xb28b, 0xb28c, /*0x68-0x6f*/ - 0xb28d, 0xb28e, 0xb28f, 0xb290, 0xb291, 0xb293, 0xb294, 0xb295, /*0x70-0x77*/ - 0xb296, 0xb297, 0xb298, 0xb299, 0xb29a, 0xb29b, 0xb29c, 0xb29d, /*0x78-0x7f*/ - 0xb2a1, 0xb2a2, 0xb2a3, 0xb2a4, 0xb2a5, 0xb2a6, 0xb2a7, 0xb2a8, /*0x80-0x87*/ - 0xb2a9, 0xb2aa, 0xb2ab, 0xb2ac, 0xb2ad, 0xb2ae, 0xb2af, 0xb2b0, /*0x88-0x8f*/ - 0xb2b1, 0xb2b3, 0xb2b4, 0xb2b5, 0xb2b6, 0xb2b7, 0xb2b8, 0xb2b9, /*0x90-0x97*/ - 0xb2ba, 0xb2bb, 0xb2bc, 0xb2bd, 0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4, /*0x98-0x9f*/ - 0xb2c5, 0xb2c6, 0xb2c7, 0xb2c8, 0xb2c9, 0xb2ca, 0xb2cb, 0xb2cc, /*0xa0-0xa7*/ - 0xb2cd, 0xb2ce, 0xb2cf, 0xb2d0, 0xb2d1, 0xb2d3, 0xb2d4, 0xb2d5, /*0xa8-0xaf*/ - 0xb2d6, 0xb2d7, 0xb2d8, 0xb2d9, 0xb2da, 0xb2db, 0xb2dc, 0xb2dd, /*0xb0-0xb7*/ - 0xb2e1, 0xb2e2, 0xb2e3, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e7, 0xb2e8, /*0xb8-0xbf*/ - 0xb2e9, 0xb2ea, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef, 0xb2f0, /*0xc0-0xc7*/ - 0xb2f1, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f6, 0xb2f7, 0xb2f8, 0xb2f9, /*0xc8-0xcf*/ - 0xb2fa, 0xb2fb, 0xb2fc, 0xb2fd, 0xb341, 0xb342, 0xb343, 0xb344, /*0xd0-0xd7*/ - 0xb345, 0xb346, 0xb347, 0xb348, 0xb349, 0xb34a, 0xb34b, 0xb34c, /*0xd8-0xdf*/ - 0xb34d, 0xb34e, 0xb34f, 0xb350, 0xb351, 0xb353, 0xb354, 0xb355, /*0xe0-0xe7*/ - 0xb356, 0xb357, 0xb358, 0xb359, 0xb35a, 0xb35b, 0xb35c, 0xb35d, /*0xe8-0xef*/ - 0xb361, 0xb362, 0xb363, 0xb364, 0xb365, 0xb366, 0xb367, 0xb368, /*0xf0-0xf7*/ - 0xb369, 0xb36a, 0xb36b, 0xb36c, 0xb36d, 0xb36e, 0xb36f, 0xb370, /*0xf8-0xff*/ - /* 0xc500 */ - 0xb371, 0xb373, 0xb374, 0xb375, 0xb376, 0xb377, 0xb378, 0xb379, /*0x00-0x07*/ - 0xb37a, 0xb37b, 0xb37c, 0xb37d, 0xb381, 0xb382, 0xb383, 0xb384, /*0x08-0x0f*/ - 0xb385, 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, 0xb38c, /*0x10-0x17*/ - 0xb38d, 0xb38e, 0xb38f, 0xb390, 0xb391, 0xb393, 0xb394, 0xb395, /*0x18-0x1f*/ - 0xb396, 0xb397, 0xb398, 0xb399, 0xb39a, 0xb39b, 0xb39c, 0xb39d, /*0x20-0x27*/ - 0xb3a1, 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5, 0xb3a6, 0xb3a7, 0xb3a8, /*0x28-0x2f*/ - 0xb3a9, 0xb3aa, 0xb3ab, 0xb3ac, 0xb3ad, 0xb3ae, 0xb3af, 0xb3b0, /*0x30-0x37*/ - 0xb3b1, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6, 0xb3b7, 0xb3b8, 0xb3b9, /*0x38-0x3f*/ - 0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd, 0xb461, 0xb462, 0xb463, 0xb464, /*0x40-0x47*/ - 0xb465, 0xb466, 0xb467, 0xb468, 0xb469, 0xb46a, 0xb46b, 0xb46c, /*0x48-0x4f*/ - 0xb46d, 0xb46e, 0xb46f, 0xb470, 0xb471, 0xb473, 0xb474, 0xb475, /*0x50-0x57*/ - 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, 0xb47b, 0xb47c, 0xb47d, /*0x58-0x5f*/ - 0xb481, 0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, 0xb488, /*0x60-0x67*/ - 0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e, 0xb48f, 0xb490, /*0x68-0x6f*/ - 0xb491, 0xb493, 0xb494, 0xb495, 0xb496, 0xb497, 0xb498, 0xb499, /*0x70-0x77*/ - 0xb49a, 0xb49b, 0xb49c, 0xb49d, 0xb4a1, 0xb4a2, 0xb4a3, 0xb4a4, /*0x78-0x7f*/ - 0xb4a5, 0xb4a6, 0xb4a7, 0xb4a8, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ac, /*0x80-0x87*/ - 0xb4ad, 0xb4ae, 0xb4af, 0xb4b0, 0xb4b1, 0xb4b3, 0xb4b4, 0xb4b5, /*0x88-0x8f*/ - 0xb4b6, 0xb4b7, 0xb4b8, 0xb4b9, 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, /*0x90-0x97*/ - 0xb4c1, 0xb4c2, 0xb4c3, 0xb4c4, 0xb4c5, 0xb4c6, 0xb4c7, 0xb4c8, /*0x98-0x9f*/ - 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce, 0xb4cf, 0xb4d0, /*0xa0-0xa7*/ - 0xb4d1, 0xb4d3, 0xb4d4, 0xb4d5, 0xb4d6, 0xb4d7, 0xb4d8, 0xb4d9, /*0xa8-0xaf*/ - 0xb4da, 0xb4db, 0xb4dc, 0xb4dd, 0xb4e1, 0xb4e2, 0xb4e3, 0xb4e4, /*0xb0-0xb7*/ - 0xb4e5, 0xb4e6, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea, 0xb4eb, 0xb4ec, /*0xb8-0xbf*/ - 0xb4ed, 0xb4ee, 0xb4ef, 0xb4f0, 0xb4f1, 0xb4f3, 0xb4f4, 0xb4f5, /*0xc0-0xc7*/ - 0xb4f6, 0xb4f7, 0xb4f8, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, /*0xc8-0xcf*/ - 0xb541, 0xb542, 0xb543, 0xb544, 0xb545, 0xb546, 0xb547, 0xb548, /*0xd0-0xd7*/ - 0xb549, 0xb54a, 0xb54b, 0xb54c, 0xb54d, 0xb54e, 0xb54f, 0xb550, /*0xd8-0xdf*/ - 0xb551, 0xb553, 0xb554, 0xb555, 0xb556, 0xb557, 0xb558, 0xb559, /*0xe0-0xe7*/ - 0xb55a, 0xb55b, 0xb55c, 0xb55d, 0xb561, 0xb562, 0xb563, 0xb564, /*0xe8-0xef*/ - 0xb565, 0xb566, 0xb567, 0xb568, 0xb569, 0xb56a, 0xb56b, 0xb56c, /*0xf0-0xf7*/ - 0xb56d, 0xb56e, 0xb56f, 0xb570, 0xb571, 0xb573, 0xb574, 0xb575, /*0xf8-0xff*/ - /* 0xc600 */ - 0xb576, 0xb577, 0xb578, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d, /*0x00-0x07*/ - 0xb581, 0xb582, 0xb583, 0xb584, 0xb585, 0xb586, 0xb587, 0xb588, /*0x08-0x0f*/ - 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, 0xb590, /*0x10-0x17*/ - 0xb591, 0xb593, 0xb594, 0xb595, 0xb596, 0xb597, 0xb598, 0xb599, /*0x18-0x1f*/ - 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb5a1, 0xb5a2, 0xb5a3, 0xb5a4, /*0x20-0x27*/ - 0xb5a5, 0xb5a6, 0xb5a7, 0xb5a8, 0xb5a9, 0xb5aa, 0xb5ab, 0xb5ac, /*0x28-0x2f*/ - 0xb5ad, 0xb5ae, 0xb5af, 0xb5b0, 0xb5b1, 0xb5b3, 0xb5b4, 0xb5b5, /*0x30-0x37*/ - 0xb5b6, 0xb5b7, 0xb5b8, 0xb5b9, 0xb5ba, 0xb5bb, 0xb5bc, 0xb5bd, /*0x38-0x3f*/ - 0xb5c1, 0xb5c2, 0xb5c3, 0xb5c4, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8, /*0x40-0x47*/ - 0xb5c9, 0xb5ca, 0xb5cb, 0xb5cc, 0xb5cd, 0xb5ce, 0xb5cf, 0xb5d0, /*0x48-0x4f*/ - 0xb5d1, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7, 0xb5d8, 0xb5d9, /*0x50-0x57*/ - 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, /*0x58-0x5f*/ - 0xb5e5, 0xb5e6, 0xb5e7, 0xb5e8, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ec, /*0x60-0x67*/ - 0xb5ed, 0xb5ee, 0xb5ef, 0xb5f0, 0xb5f1, 0xb5f3, 0xb5f4, 0xb5f5, /*0x68-0x6f*/ - 0xb5f6, 0xb5f7, 0xb5f8, 0xb5f9, 0xb5fa, 0xb5fb, 0xb5fc, 0xb5fd, /*0x70-0x77*/ - 0xb641, 0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, 0xb648, /*0x78-0x7f*/ - 0xb649, 0xb64a, 0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, /*0x80-0x87*/ - 0xb651, 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659, /*0x88-0x8f*/ - 0xb65a, 0xb65b, 0xb65c, 0xb65d, 0xb661, 0xb662, 0xb663, 0xb664, /*0x90-0x97*/ - 0xb665, 0xb666, 0xb667, 0xb668, 0xb669, 0xb66a, 0xb66b, 0xb66c, /*0x98-0x9f*/ - 0xb66d, 0xb66e, 0xb66f, 0xb670, 0xb671, 0xb673, 0xb674, 0xb675, /*0xa0-0xa7*/ - 0xb676, 0xb677, 0xb678, 0xb679, 0xb67a, 0xb67b, 0xb67c, 0xb67d, /*0xa8-0xaf*/ - 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, 0xb688, /*0xb0-0xb7*/ - 0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e, 0xb68f, 0xb690, /*0xb8-0xbf*/ - 0xb691, 0xb693, 0xb694, 0xb695, 0xb696, 0xb697, 0xb698, 0xb699, /*0xc0-0xc7*/ - 0xb69a, 0xb69b, 0xb69c, 0xb69d, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a4, /*0xc8-0xcf*/ - 0xb6a5, 0xb6a6, 0xb6a7, 0xb6a8, 0xb6a9, 0xb6aa, 0xb6ab, 0xb6ac, /*0xd0-0xd7*/ - 0xb6ad, 0xb6ae, 0xb6af, 0xb6b0, 0xb6b1, 0xb6b3, 0xb6b4, 0xb6b5, /*0xd8-0xdf*/ - 0xb6b6, 0xb6b7, 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb, 0xb6bc, 0xb6bd, /*0xe0-0xe7*/ - 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6, 0xb6c7, 0xb6c8, /*0xe8-0xef*/ - 0xb6c9, 0xb6ca, 0xb6cb, 0xb6cc, 0xb6cd, 0xb6ce, 0xb6cf, 0xb6d0, /*0xf0-0xf7*/ - 0xb6d1, 0xb6d3, 0xb6d4, 0xb6d5, 0xb6d6, 0xb6d7, 0xb6d8, 0xb6d9, /*0xf8-0xff*/ - /* 0xc700 */ - 0xb6da, 0xb6db, 0xb6dc, 0xb6dd, 0xb6e1, 0xb6e2, 0xb6e3, 0xb6e4, /*0x00-0x07*/ - 0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9, 0xb6ea, 0xb6eb, 0xb6ec, /*0x08-0x0f*/ - 0xb6ed, 0xb6ee, 0xb6ef, 0xb6f0, 0xb6f1, 0xb6f3, 0xb6f4, 0xb6f5, /*0x10-0x17*/ - 0xb6f6, 0xb6f7, 0xb6f8, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc, 0xb6fd, /*0x18-0x1f*/ - 0xb741, 0xb742, 0xb743, 0xb744, 0xb745, 0xb746, 0xb747, 0xb748, /*0x20-0x27*/ - 0xb749, 0xb74a, 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f, 0xb750, /*0x28-0x2f*/ - 0xb751, 0xb753, 0xb754, 0xb755, 0xb756, 0xb757, 0xb758, 0xb759, /*0x30-0x37*/ - 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb761, 0xb762, 0xb763, 0xb764, /*0x38-0x3f*/ - 0xb765, 0xb766, 0xb767, 0xb768, 0xb769, 0xb76a, 0xb76b, 0xb76c, /*0x40-0x47*/ - 0xb76d, 0xb76e, 0xb76f, 0xb770, 0xb771, 0xb773, 0xb774, 0xb775, /*0x48-0x4f*/ - 0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77c, 0xb77d, /*0x50-0x57*/ - 0xb781, 0xb782, 0xb783, 0xb784, 0xb785, 0xb786, 0xb787, 0xb788, /*0x58-0x5f*/ - 0xb789, 0xb78a, 0xb78b, 0xb78c, 0xb78d, 0xb78e, 0xb78f, 0xb790, /*0x60-0x67*/ - 0xb791, 0xb793, 0xb794, 0xb795, 0xb796, 0xb797, 0xb798, 0xb799, /*0x68-0x6f*/ - 0xb79a, 0xb79b, 0xb79c, 0xb79d, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4, /*0x70-0x77*/ - 0xb7a5, 0xb7a6, 0xb7a7, 0xb7a8, 0xb7a9, 0xb7aa, 0xb7ab, 0xb7ac, /*0x78-0x7f*/ - 0xb7ad, 0xb7ae, 0xb7af, 0xb7b0, 0xb7b1, 0xb7b3, 0xb7b4, 0xb7b5, /*0x80-0x87*/ - 0xb7b6, 0xb7b7, 0xb7b8, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd, /*0x88-0x8f*/ - 0xb861, 0xb862, 0xb863, 0xb864, 0xb865, 0xb866, 0xb867, 0xb868, /*0x90-0x97*/ - 0xb869, 0xb86a, 0xb86b, 0xb86c, 0xb86d, 0xb86e, 0xb86f, 0xb870, /*0x98-0x9f*/ - 0xb871, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877, 0xb878, 0xb879, /*0xa0-0xa7*/ - 0xb87a, 0xb87b, 0xb87c, 0xb87d, 0xb881, 0xb882, 0xb883, 0xb884, /*0xa8-0xaf*/ - 0xb885, 0xb886, 0xb887, 0xb888, 0xb889, 0xb88a, 0xb88b, 0xb88c, /*0xb0-0xb7*/ - 0xb88d, 0xb88e, 0xb88f, 0xb890, 0xb891, 0xb893, 0xb894, 0xb895, /*0xb8-0xbf*/ - 0xb896, 0xb897, 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c, 0xb89d, /*0xc0-0xc7*/ - 0xb8a1, 0xb8a2, 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a8, /*0xc8-0xcf*/ - 0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, 0xb8b0, /*0xd0-0xd7*/ - 0xb8b1, 0xb8b3, 0xb8b4, 0xb8b5, 0xb8b6, 0xb8b7, 0xb8b8, 0xb8b9, /*0xd8-0xdf*/ - 0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8c1, 0xb8c2, 0xb8c3, 0xb8c4, /*0xe0-0xe7*/ - 0xb8c5, 0xb8c6, 0xb8c7, 0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0xb8cc, /*0xe8-0xef*/ - 0xb8cd, 0xb8ce, 0xb8cf, 0xb8d0, 0xb8d1, 0xb8d3, 0xb8d4, 0xb8d5, /*0xf0-0xf7*/ - 0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9, 0xb8da, 0xb8db, 0xb8dc, 0xb8dd, /*0xf8-0xff*/ - /* 0xc800 */ - 0xb8e1, 0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7, 0xb8e8, /*0x00-0x07*/ - 0xb8e9, 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ed, 0xb8ee, 0xb8ef, 0xb8f0, /*0x08-0x0f*/ - 0xb8f1, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7, 0xb8f8, 0xb8f9, /*0x10-0x17*/ - 0xb8fa, 0xb8fb, 0xb8fc, 0xb8fd, 0xb941, 0xb942, 0xb943, 0xb944, /*0x18-0x1f*/ - 0xb945, 0xb946, 0xb947, 0xb948, 0xb949, 0xb94a, 0xb94b, 0xb94c, /*0x20-0x27*/ - 0xb94d, 0xb94e, 0xb94f, 0xb950, 0xb951, 0xb953, 0xb954, 0xb955, /*0x28-0x2f*/ - 0xb956, 0xb957, 0xb958, 0xb959, 0xb95a, 0xb95b, 0xb95c, 0xb95d, /*0x30-0x37*/ - 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xb968, /*0x38-0x3f*/ - 0xb969, 0xb96a, 0xb96b, 0xb96c, 0xb96d, 0xb96e, 0xb96f, 0xb970, /*0x40-0x47*/ - 0xb971, 0xb973, 0xb974, 0xb975, 0xb976, 0xb977, 0xb978, 0xb979, /*0x48-0x4f*/ - 0xb97a, 0xb97b, 0xb97c, 0xb97d, 0xb981, 0xb982, 0xb983, 0xb984, /*0x50-0x57*/ - 0xb985, 0xb986, 0xb987, 0xb988, 0xb989, 0xb98a, 0xb98b, 0xb98c, /*0x58-0x5f*/ - 0xb98d, 0xb98e, 0xb98f, 0xb990, 0xb991, 0xb993, 0xb994, 0xb995, /*0x60-0x67*/ - 0xb996, 0xb997, 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d, /*0x68-0x6f*/ - 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5, 0xb9a6, 0xb9a7, 0xb9a8, /*0x70-0x77*/ - 0xb9a9, 0xb9aa, 0xb9ab, 0xb9ac, 0xb9ad, 0xb9ae, 0xb9af, 0xb9b0, /*0x78-0x7f*/ - 0xb9b1, 0xb9b3, 0xb9b4, 0xb9b5, 0xb9b6, 0xb9b7, 0xb9b8, 0xb9b9, /*0x80-0x87*/ - 0xb9ba, 0xb9bb, 0xb9bc, 0xb9bd, 0xb9c1, 0xb9c2, 0xb9c3, 0xb9c4, /*0x88-0x8f*/ - 0xb9c5, 0xb9c6, 0xb9c7, 0xb9c8, 0xb9c9, 0xb9ca, 0xb9cb, 0xb9cc, /*0x90-0x97*/ - 0xb9cd, 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d3, 0xb9d4, 0xb9d5, /*0x98-0x9f*/ - 0xb9d6, 0xb9d7, 0xb9d8, 0xb9d9, 0xb9da, 0xb9db, 0xb9dc, 0xb9dd, /*0xa0-0xa7*/ - 0xb9e1, 0xb9e2, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e6, 0xb9e7, 0xb9e8, /*0xa8-0xaf*/ - 0xb9e9, 0xb9ea, 0xb9eb, 0xb9ec, 0xb9ed, 0xb9ee, 0xb9ef, 0xb9f0, /*0xb0-0xb7*/ - 0xb9f1, 0xb9f3, 0xb9f4, 0xb9f5, 0xb9f6, 0xb9f7, 0xb9f8, 0xb9f9, /*0xb8-0xbf*/ - 0xb9fa, 0xb9fb, 0xb9fc, 0xb9fd, 0xba41, 0xba42, 0xba43, 0xba44, /*0xc0-0xc7*/ - 0xba45, 0xba46, 0xba47, 0xba48, 0xba49, 0xba4a, 0xba4b, 0xba4c, /*0xc8-0xcf*/ - 0xba4d, 0xba4e, 0xba4f, 0xba50, 0xba51, 0xba53, 0xba54, 0xba55, /*0xd0-0xd7*/ - 0xba56, 0xba57, 0xba58, 0xba59, 0xba5a, 0xba5b, 0xba5c, 0xba5d, /*0xd8-0xdf*/ - 0xba61, 0xba62, 0xba63, 0xba64, 0xba65, 0xba66, 0xba67, 0xba68, /*0xe0-0xe7*/ - 0xba69, 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xba70, /*0xe8-0xef*/ - 0xba71, 0xba73, 0xba74, 0xba75, 0xba76, 0xba77, 0xba78, 0xba79, /*0xf0-0xf7*/ - 0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba81, 0xba82, 0xba83, 0xba84, /*0xf8-0xff*/ - /* 0xc900 */ - 0xba85, 0xba86, 0xba87, 0xba88, 0xba89, 0xba8a, 0xba8b, 0xba8c, /*0x00-0x07*/ - 0xba8d, 0xba8e, 0xba8f, 0xba90, 0xba91, 0xba93, 0xba94, 0xba95, /*0x08-0x0f*/ - 0xba96, 0xba97, 0xba98, 0xba99, 0xba9a, 0xba9b, 0xba9c, 0xba9d, /*0x10-0x17*/ - 0xbaa1, 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, 0xbaa8, /*0x18-0x1f*/ - 0xbaa9, 0xbaaa, 0xbaab, 0xbaac, 0xbaad, 0xbaae, 0xbaaf, 0xbab0, /*0x20-0x27*/ - 0xbab1, 0xbab3, 0xbab4, 0xbab5, 0xbab6, 0xbab7, 0xbab8, 0xbab9, /*0x28-0x2f*/ - 0xbaba, 0xbabb, 0xbabc, 0xbabd, 0xbac1, 0xbac2, 0xbac3, 0xbac4, /*0x30-0x37*/ - 0xbac5, 0xbac6, 0xbac7, 0xbac8, 0xbac9, 0xbaca, 0xbacb, 0xbacc, /*0x38-0x3f*/ - 0xbacd, 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad3, 0xbad4, 0xbad5, /*0x40-0x47*/ - 0xbad6, 0xbad7, 0xbad8, 0xbad9, 0xbada, 0xbadb, 0xbadc, 0xbadd, /*0x48-0x4f*/ - 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6, 0xbae7, 0xbae8, /*0x50-0x57*/ - 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef, 0xbaf0, /*0x58-0x5f*/ - 0xbaf1, 0xbaf3, 0xbaf4, 0xbaf5, 0xbaf6, 0xbaf7, 0xbaf8, 0xbaf9, /*0x60-0x67*/ - 0xbafa, 0xbafb, 0xbafc, 0xbafd, 0xbb41, 0xbb42, 0xbb43, 0xbb44, /*0x68-0x6f*/ - 0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49, 0xbb4a, 0xbb4b, 0xbb4c, /*0x70-0x77*/ - 0xbb4d, 0xbb4e, 0xbb4f, 0xbb50, 0xbb51, 0xbb53, 0xbb54, 0xbb55, /*0x78-0x7f*/ - 0xbb56, 0xbb57, 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c, 0xbb5d, /*0x80-0x87*/ - 0xbb61, 0xbb62, 0xbb63, 0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68, /*0x88-0x8f*/ - 0xbb69, 0xbb6a, 0xbb6b, 0xbb6c, 0xbb6d, 0xbb6e, 0xbb6f, 0xbb70, /*0x90-0x97*/ - 0xbb71, 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, 0xbb78, 0xbb79, /*0x98-0x9f*/ - 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, 0xbb81, 0xbb82, 0xbb83, 0xbb84, /*0xa0-0xa7*/ - 0xbb85, 0xbb86, 0xbb87, 0xbb88, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8c, /*0xa8-0xaf*/ - 0xbb8d, 0xbb8e, 0xbb8f, 0xbb90, 0xbb91, 0xbb93, 0xbb94, 0xbb95, /*0xb0-0xb7*/ - 0xbb96, 0xbb97, 0xbb98, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, /*0xb8-0xbf*/ - 0xbba1, 0xbba2, 0xbba3, 0xbba4, 0xbba5, 0xbba6, 0xbba7, 0xbba8, /*0xc0-0xc7*/ - 0xbba9, 0xbbaa, 0xbbab, 0xbbac, 0xbbad, 0xbbae, 0xbbaf, 0xbbb0, /*0xc8-0xcf*/ - 0xbbb1, 0xbbb3, 0xbbb4, 0xbbb5, 0xbbb6, 0xbbb7, 0xbbb8, 0xbbb9, /*0xd0-0xd7*/ - 0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbc61, 0xbc62, 0xbc63, 0xbc64, /*0xd8-0xdf*/ - 0xbc65, 0xbc66, 0xbc67, 0xbc68, 0xbc69, 0xbc6a, 0xbc6b, 0xbc6c, /*0xe0-0xe7*/ - 0xbc6d, 0xbc6e, 0xbc6f, 0xbc70, 0xbc71, 0xbc73, 0xbc74, 0xbc75, /*0xe8-0xef*/ - 0xbc76, 0xbc77, 0xbc78, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, /*0xf0-0xf7*/ - 0xbc81, 0xbc82, 0xbc83, 0xbc84, 0xbc85, 0xbc86, 0xbc87, 0xbc88, /*0xf8-0xff*/ - /* 0xca00 */ - 0xbc89, 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, 0xbc8f, 0xbc90, /*0x00-0x07*/ - 0xbc91, 0xbc93, 0xbc94, 0xbc95, 0xbc96, 0xbc97, 0xbc98, 0xbc99, /*0x08-0x0f*/ - 0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbca1, 0xbca2, 0xbca3, 0xbca4, /*0x10-0x17*/ - 0xbca5, 0xbca6, 0xbca7, 0xbca8, 0xbca9, 0xbcaa, 0xbcab, 0xbcac, /*0x18-0x1f*/ - 0xbcad, 0xbcae, 0xbcaf, 0xbcb0, 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5, /*0x20-0x27*/ - 0xbcb6, 0xbcb7, 0xbcb8, 0xbcb9, 0xbcba, 0xbcbb, 0xbcbc, 0xbcbd, /*0x28-0x2f*/ - 0xbcc1, 0xbcc2, 0xbcc3, 0xbcc4, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, /*0x30-0x37*/ - 0xbcc9, 0xbcca, 0xbccb, 0xbccc, 0xbccd, 0xbcce, 0xbccf, 0xbcd0, /*0x38-0x3f*/ - 0xbcd1, 0xbcd3, 0xbcd4, 0xbcd5, 0xbcd6, 0xbcd7, 0xbcd8, 0xbcd9, /*0x40-0x47*/ - 0xbcda, 0xbcdb, 0xbcdc, 0xbcdd, 0xbce1, 0xbce2, 0xbce3, 0xbce4, /*0x48-0x4f*/ - 0xbce5, 0xbce6, 0xbce7, 0xbce8, 0xbce9, 0xbcea, 0xbceb, 0xbcec, /*0x50-0x57*/ - 0xbced, 0xbcee, 0xbcef, 0xbcf0, 0xbcf1, 0xbcf3, 0xbcf4, 0xbcf5, /*0x58-0x5f*/ - 0xbcf6, 0xbcf7, 0xbcf8, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfc, 0xbcfd, /*0x60-0x67*/ - 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd48, /*0x68-0x6f*/ - 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, 0xbd4f, 0xbd50, /*0x70-0x77*/ - 0xbd51, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, 0xbd58, 0xbd59, /*0x78-0x7f*/ - 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd61, 0xbd62, 0xbd63, 0xbd64, /*0x80-0x87*/ - 0xbd65, 0xbd66, 0xbd67, 0xbd68, 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, /*0x88-0x8f*/ - 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, 0xbd71, 0xbd73, 0xbd74, 0xbd75, /*0x90-0x97*/ - 0xbd76, 0xbd77, 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, /*0x98-0x9f*/ - 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xbd87, 0xbd88, /*0xa0-0xa7*/ - 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, 0xbd90, /*0xa8-0xaf*/ - 0xbd91, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97, 0xbd98, 0xbd99, /*0xb0-0xb7*/ - 0xbd9a, 0xbd9b, 0xbd9c, 0xbd9d, 0xbda1, 0xbda2, 0xbda3, 0xbda4, /*0xb8-0xbf*/ - 0xbda5, 0xbda6, 0xbda7, 0xbda8, 0xbda9, 0xbdaa, 0xbdab, 0xbdac, /*0xc0-0xc7*/ - 0xbdad, 0xbdae, 0xbdaf, 0xbdb0, 0xbdb1, 0xbdb3, 0xbdb4, 0xbdb5, /*0xc8-0xcf*/ - 0xbdb6, 0xbdb7, 0xbdb8, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd, /*0xd0-0xd7*/ - 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6, 0xbdc7, 0xbdc8, /*0xd8-0xdf*/ - 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc, 0xbdcd, 0xbdce, 0xbdcf, 0xbdd0, /*0xe0-0xe7*/ - 0xbdd1, 0xbdd3, 0xbdd4, 0xbdd5, 0xbdd6, 0xbdd7, 0xbdd8, 0xbdd9, /*0xe8-0xef*/ - 0xbdda, 0xbddb, 0xbddc, 0xbddd, 0xbde1, 0xbde2, 0xbde3, 0xbde4, /*0xf0-0xf7*/ - 0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbde9, 0xbdea, 0xbdeb, 0xbdec, /*0xf8-0xff*/ - /* 0xcb00 */ - 0xbded, 0xbdee, 0xbdef, 0xbdf0, 0xbdf1, 0xbdf3, 0xbdf4, 0xbdf5, /*0x00-0x07*/ - 0xbdf6, 0xbdf7, 0xbdf8, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, /*0x08-0x0f*/ - 0xbe41, 0xbe42, 0xbe43, 0xbe44, 0xbe45, 0xbe46, 0xbe47, 0xbe48, /*0x10-0x17*/ - 0xbe49, 0xbe4a, 0xbe4b, 0xbe4c, 0xbe4d, 0xbe4e, 0xbe4f, 0xbe50, /*0x18-0x1f*/ - 0xbe51, 0xbe53, 0xbe54, 0xbe55, 0xbe56, 0xbe57, 0xbe58, 0xbe59, /*0x20-0x27*/ - 0xbe5a, 0xbe5b, 0xbe5c, 0xbe5d, 0xbe61, 0xbe62, 0xbe63, 0xbe64, /*0x28-0x2f*/ - 0xbe65, 0xbe66, 0xbe67, 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, /*0x30-0x37*/ - 0xbe6d, 0xbe6e, 0xbe6f, 0xbe70, 0xbe71, 0xbe73, 0xbe74, 0xbe75, /*0x38-0x3f*/ - 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0xbe7c, 0xbe7d, /*0x40-0x47*/ - 0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85, 0xbe86, 0xbe87, 0xbe88, /*0x48-0x4f*/ - 0xbe89, 0xbe8a, 0xbe8b, 0xbe8c, 0xbe8d, 0xbe8e, 0xbe8f, 0xbe90, /*0x50-0x57*/ - 0xbe91, 0xbe93, 0xbe94, 0xbe95, 0xbe96, 0xbe97, 0xbe98, 0xbe99, /*0x58-0x5f*/ - 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbea1, 0xbea2, 0xbea3, 0xbea4, /*0x60-0x67*/ - 0xbea5, 0xbea6, 0xbea7, 0xbea8, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, /*0x68-0x6f*/ - 0xbead, 0xbeae, 0xbeaf, 0xbeb0, 0xbeb1, 0xbeb3, 0xbeb4, 0xbeb5, /*0x70-0x77*/ - 0xbeb6, 0xbeb7, 0xbeb8, 0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd, /*0x78-0x7f*/ - 0xbec1, 0xbec2, 0xbec3, 0xbec4, 0xbec5, 0xbec6, 0xbec7, 0xbec8, /*0x80-0x87*/ - 0xbec9, 0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece, 0xbecf, 0xbed0, /*0x88-0x8f*/ - 0xbed1, 0xbed3, 0xbed4, 0xbed5, 0xbed6, 0xbed7, 0xbed8, 0xbed9, /*0x90-0x97*/ - 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbee1, 0xbee2, 0xbee3, 0xbee4, /*0x98-0x9f*/ - 0xbee5, 0xbee6, 0xbee7, 0xbee8, 0xbee9, 0xbeea, 0xbeeb, 0xbeec, /*0xa0-0xa7*/ - 0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef3, 0xbef4, 0xbef5, /*0xa8-0xaf*/ - 0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa, 0xbefb, 0xbefc, 0xbefd, /*0xb0-0xb7*/ - 0xbf41, 0xbf42, 0xbf43, 0xbf44, 0xbf45, 0xbf46, 0xbf47, 0xbf48, /*0xb8-0xbf*/ - 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f, 0xbf50, /*0xc0-0xc7*/ - 0xbf51, 0xbf53, 0xbf54, 0xbf55, 0xbf56, 0xbf57, 0xbf58, 0xbf59, /*0xc8-0xcf*/ - 0xbf5a, 0xbf5b, 0xbf5c, 0xbf5d, 0xbf61, 0xbf62, 0xbf63, 0xbf64, /*0xd0-0xd7*/ - 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, /*0xd8-0xdf*/ - 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf73, 0xbf74, 0xbf75, /*0xe0-0xe7*/ - 0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, /*0xe8-0xef*/ - 0xbf81, 0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xbf87, 0xbf88, /*0xf0-0xf7*/ - 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90, /*0xf8-0xff*/ - /* 0xcc00 */ - 0xbf91, 0xbf93, 0xbf94, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, /*0x00-0x07*/ - 0xbf9a, 0xbf9b, 0xbf9c, 0xbf9d, 0xbfa1, 0xbfa2, 0xbfa3, 0xbfa4, /*0x08-0x0f*/ - 0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9, 0xbfaa, 0xbfab, 0xbfac, /*0x10-0x17*/ - 0xbfad, 0xbfae, 0xbfaf, 0xbfb0, 0xbfb1, 0xbfb3, 0xbfb4, 0xbfb5, /*0x18-0x1f*/ - 0xbfb6, 0xbfb7, 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, /*0x20-0x27*/ - 0xc061, 0xc062, 0xc063, 0xc064, 0xc065, 0xc066, 0xc067, 0xc068, /*0x28-0x2f*/ - 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070, /*0x30-0x37*/ - 0xc071, 0xc073, 0xc074, 0xc075, 0xc076, 0xc077, 0xc078, 0xc079, /*0x38-0x3f*/ - 0xc07a, 0xc07b, 0xc07c, 0xc07d, 0xc081, 0xc082, 0xc083, 0xc084, /*0x40-0x47*/ - 0xc085, 0xc086, 0xc087, 0xc088, 0xc089, 0xc08a, 0xc08b, 0xc08c, /*0x48-0x4f*/ - 0xc08d, 0xc08e, 0xc08f, 0xc090, 0xc091, 0xc093, 0xc094, 0xc095, /*0x50-0x57*/ - 0xc096, 0xc097, 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, /*0x58-0x5f*/ - 0xc0a1, 0xc0a2, 0xc0a3, 0xc0a4, 0xc0a5, 0xc0a6, 0xc0a7, 0xc0a8, /*0x60-0x67*/ - 0xc0a9, 0xc0aa, 0xc0ab, 0xc0ac, 0xc0ad, 0xc0ae, 0xc0af, 0xc0b0, /*0x68-0x6f*/ - 0xc0b1, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0b7, 0xc0b8, 0xc0b9, /*0x70-0x77*/ - 0xc0ba, 0xc0bb, 0xc0bc, 0xc0bd, 0xc0c1, 0xc0c2, 0xc0c3, 0xc0c4, /*0x78-0x7f*/ - 0xc0c5, 0xc0c6, 0xc0c7, 0xc0c8, 0xc0c9, 0xc0ca, 0xc0cb, 0xc0cc, /*0x80-0x87*/ - 0xc0cd, 0xc0ce, 0xc0cf, 0xc0d0, 0xc0d1, 0xc0d3, 0xc0d4, 0xc0d5, /*0x88-0x8f*/ - 0xc0d6, 0xc0d7, 0xc0d8, 0xc0d9, 0xc0da, 0xc0db, 0xc0dc, 0xc0dd, /*0x90-0x97*/ - 0xc0e1, 0xc0e2, 0xc0e3, 0xc0e4, 0xc0e5, 0xc0e6, 0xc0e7, 0xc0e8, /*0x98-0x9f*/ - 0xc0e9, 0xc0ea, 0xc0eb, 0xc0ec, 0xc0ed, 0xc0ee, 0xc0ef, 0xc0f0, /*0xa0-0xa7*/ - 0xc0f1, 0xc0f3, 0xc0f4, 0xc0f5, 0xc0f6, 0xc0f7, 0xc0f8, 0xc0f9, /*0xa8-0xaf*/ - 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc141, 0xc142, 0xc143, 0xc144, /*0xb0-0xb7*/ - 0xc145, 0xc146, 0xc147, 0xc148, 0xc149, 0xc14a, 0xc14b, 0xc14c, /*0xb8-0xbf*/ - 0xc14d, 0xc14e, 0xc14f, 0xc150, 0xc151, 0xc153, 0xc154, 0xc155, /*0xc0-0xc7*/ - 0xc156, 0xc157, 0xc158, 0xc159, 0xc15a, 0xc15b, 0xc15c, 0xc15d, /*0xc8-0xcf*/ - 0xc161, 0xc162, 0xc163, 0xc164, 0xc165, 0xc166, 0xc167, 0xc168, /*0xd0-0xd7*/ - 0xc169, 0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, 0xc170, /*0xd8-0xdf*/ - 0xc171, 0xc173, 0xc174, 0xc175, 0xc176, 0xc177, 0xc178, 0xc179, /*0xe0-0xe7*/ - 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc181, 0xc182, 0xc183, 0xc184, /*0xe8-0xef*/ - 0xc185, 0xc186, 0xc187, 0xc188, 0xc189, 0xc18a, 0xc18b, 0xc18c, /*0xf0-0xf7*/ - 0xc18d, 0xc18e, 0xc18f, 0xc190, 0xc191, 0xc193, 0xc194, 0xc195, /*0xf8-0xff*/ - /* 0xcd00 */ - 0xc196, 0xc197, 0xc198, 0xc199, 0xc19a, 0xc19b, 0xc19c, 0xc19d, /*0x00-0x07*/ - 0xc1a1, 0xc1a2, 0xc1a3, 0xc1a4, 0xc1a5, 0xc1a6, 0xc1a7, 0xc1a8, /*0x08-0x0f*/ - 0xc1a9, 0xc1aa, 0xc1ab, 0xc1ac, 0xc1ad, 0xc1ae, 0xc1af, 0xc1b0, /*0x10-0x17*/ - 0xc1b1, 0xc1b3, 0xc1b4, 0xc1b5, 0xc1b6, 0xc1b7, 0xc1b8, 0xc1b9, /*0x18-0x1f*/ - 0xc1ba, 0xc1bb, 0xc1bc, 0xc1bd, 0xc1c1, 0xc1c2, 0xc1c3, 0xc1c4, /*0x20-0x27*/ - 0xc1c5, 0xc1c6, 0xc1c7, 0xc1c8, 0xc1c9, 0xc1ca, 0xc1cb, 0xc1cc, /*0x28-0x2f*/ - 0xc1cd, 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d3, 0xc1d4, 0xc1d5, /*0x30-0x37*/ - 0xc1d6, 0xc1d7, 0xc1d8, 0xc1d9, 0xc1da, 0xc1db, 0xc1dc, 0xc1dd, /*0x38-0x3f*/ - 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e4, 0xc1e5, 0xc1e6, 0xc1e7, 0xc1e8, /*0x40-0x47*/ - 0xc1e9, 0xc1ea, 0xc1eb, 0xc1ec, 0xc1ed, 0xc1ee, 0xc1ef, 0xc1f0, /*0x48-0x4f*/ - 0xc1f1, 0xc1f3, 0xc1f4, 0xc1f5, 0xc1f6, 0xc1f7, 0xc1f8, 0xc1f9, /*0x50-0x57*/ - 0xc1fa, 0xc1fb, 0xc1fc, 0xc1fd, 0xc241, 0xc242, 0xc243, 0xc244, /*0x58-0x5f*/ - 0xc245, 0xc246, 0xc247, 0xc248, 0xc249, 0xc24a, 0xc24b, 0xc24c, /*0x60-0x67*/ - 0xc24d, 0xc24e, 0xc24f, 0xc250, 0xc251, 0xc253, 0xc254, 0xc255, /*0x68-0x6f*/ - 0xc256, 0xc257, 0xc258, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d, /*0x70-0x77*/ - 0xc261, 0xc262, 0xc263, 0xc264, 0xc265, 0xc266, 0xc267, 0xc268, /*0x78-0x7f*/ - 0xc269, 0xc26a, 0xc26b, 0xc26c, 0xc26d, 0xc26e, 0xc26f, 0xc270, /*0x80-0x87*/ - 0xc271, 0xc273, 0xc274, 0xc275, 0xc276, 0xc277, 0xc278, 0xc279, /*0x88-0x8f*/ - 0xc27a, 0xc27b, 0xc27c, 0xc27d, 0xc281, 0xc282, 0xc283, 0xc284, /*0x90-0x97*/ - 0xc285, 0xc286, 0xc287, 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, /*0x98-0x9f*/ - 0xc28d, 0xc28e, 0xc28f, 0xc290, 0xc291, 0xc293, 0xc294, 0xc295, /*0xa0-0xa7*/ - 0xc296, 0xc297, 0xc298, 0xc299, 0xc29a, 0xc29b, 0xc29c, 0xc29d, /*0xa8-0xaf*/ - 0xc2a1, 0xc2a2, 0xc2a3, 0xc2a4, 0xc2a5, 0xc2a6, 0xc2a7, 0xc2a8, /*0xb0-0xb7*/ - 0xc2a9, 0xc2aa, 0xc2ab, 0xc2ac, 0xc2ad, 0xc2ae, 0xc2af, 0xc2b0, /*0xb8-0xbf*/ - 0xc2b1, 0xc2b3, 0xc2b4, 0xc2b5, 0xc2b6, 0xc2b7, 0xc2b8, 0xc2b9, /*0xc0-0xc7*/ - 0xc2ba, 0xc2bb, 0xc2bc, 0xc2bd, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, /*0xc8-0xcf*/ - 0xc2c5, 0xc2c6, 0xc2c7, 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, /*0xd0-0xd7*/ - 0xc2cd, 0xc2ce, 0xc2cf, 0xc2d0, 0xc2d1, 0xc2d3, 0xc2d4, 0xc2d5, /*0xd8-0xdf*/ - 0xc2d6, 0xc2d7, 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0xc2dc, 0xc2dd, /*0xe0-0xe7*/ - 0xc2e1, 0xc2e2, 0xc2e3, 0xc2e4, 0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8, /*0xe8-0xef*/ - 0xc2e9, 0xc2ea, 0xc2eb, 0xc2ec, 0xc2ed, 0xc2ee, 0xc2ef, 0xc2f0, /*0xf0-0xf7*/ - 0xc2f1, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f6, 0xc2f7, 0xc2f8, 0xc2f9, /*0xf8-0xff*/ - /* 0xce00 */ - 0xc2fa, 0xc2fb, 0xc2fc, 0xc2fd, 0xc341, 0xc342, 0xc343, 0xc344, /*0x00-0x07*/ - 0xc345, 0xc346, 0xc347, 0xc348, 0xc349, 0xc34a, 0xc34b, 0xc34c, /*0x08-0x0f*/ - 0xc34d, 0xc34e, 0xc34f, 0xc350, 0xc351, 0xc353, 0xc354, 0xc355, /*0x10-0x17*/ - 0xc356, 0xc357, 0xc358, 0xc359, 0xc35a, 0xc35b, 0xc35c, 0xc35d, /*0x18-0x1f*/ - 0xc361, 0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367, 0xc368, /*0x20-0x27*/ - 0xc369, 0xc36a, 0xc36b, 0xc36c, 0xc36d, 0xc36e, 0xc36f, 0xc370, /*0x28-0x2f*/ - 0xc371, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377, 0xc378, 0xc379, /*0x30-0x37*/ - 0xc37a, 0xc37b, 0xc37c, 0xc37d, 0xc381, 0xc382, 0xc383, 0xc384, /*0x38-0x3f*/ - 0xc385, 0xc386, 0xc387, 0xc388, 0xc389, 0xc38a, 0xc38b, 0xc38c, /*0x40-0x47*/ - 0xc38d, 0xc38e, 0xc38f, 0xc390, 0xc391, 0xc393, 0xc394, 0xc395, /*0x48-0x4f*/ - 0xc396, 0xc397, 0xc398, 0xc399, 0xc39a, 0xc39b, 0xc39c, 0xc39d, /*0x50-0x57*/ - 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4, 0xc3a5, 0xc3a6, 0xc3a7, 0xc3a8, /*0x58-0x5f*/ - 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae, 0xc3af, 0xc3b0, /*0x60-0x67*/ - 0xc3b1, 0xc3b3, 0xc3b4, 0xc3b5, 0xc3b6, 0xc3b7, 0xc3b8, 0xc3b9, /*0x68-0x6f*/ - 0xc3ba, 0xc3bb, 0xc3bc, 0xc3bd, 0xc461, 0xc462, 0xc463, 0xc464, /*0x70-0x77*/ - 0xc465, 0xc466, 0xc467, 0xc468, 0xc469, 0xc46a, 0xc46b, 0xc46c, /*0x78-0x7f*/ - 0xc46d, 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc473, 0xc474, 0xc475, /*0x80-0x87*/ - 0xc476, 0xc477, 0xc478, 0xc479, 0xc47a, 0xc47b, 0xc47c, 0xc47d, /*0x88-0x8f*/ - 0xc481, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, 0xc487, 0xc488, /*0x90-0x97*/ - 0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, 0xc48f, 0xc490, /*0x98-0x9f*/ - 0xc491, 0xc493, 0xc494, 0xc495, 0xc496, 0xc497, 0xc498, 0xc499, /*0xa0-0xa7*/ - 0xc49a, 0xc49b, 0xc49c, 0xc49d, 0xc4a1, 0xc4a2, 0xc4a3, 0xc4a4, /*0xa8-0xaf*/ - 0xc4a5, 0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0xc4aa, 0xc4ab, 0xc4ac, /*0xb0-0xb7*/ - 0xc4ad, 0xc4ae, 0xc4af, 0xc4b0, 0xc4b1, 0xc4b3, 0xc4b4, 0xc4b5, /*0xb8-0xbf*/ - 0xc4b6, 0xc4b7, 0xc4b8, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bc, 0xc4bd, /*0xc0-0xc7*/ - 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5, 0xc4c6, 0xc4c7, 0xc4c8, /*0xc8-0xcf*/ - 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, 0xc4ce, 0xc4cf, 0xc4d0, /*0xd0-0xd7*/ - 0xc4d1, 0xc4d3, 0xc4d4, 0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9, /*0xd8-0xdf*/ - 0xc4da, 0xc4db, 0xc4dc, 0xc4dd, 0xc4e1, 0xc4e2, 0xc4e3, 0xc4e4, /*0xe0-0xe7*/ - 0xc4e5, 0xc4e6, 0xc4e7, 0xc4e8, 0xc4e9, 0xc4ea, 0xc4eb, 0xc4ec, /*0xe8-0xef*/ - 0xc4ed, 0xc4ee, 0xc4ef, 0xc4f0, 0xc4f1, 0xc4f3, 0xc4f4, 0xc4f5, /*0xf0-0xf7*/ - 0xc4f6, 0xc4f7, 0xc4f8, 0xc4f9, 0xc4fa, 0xc4fb, 0xc4fc, 0xc4fd, /*0xf8-0xff*/ - /* 0xcf00 */ - 0xc541, 0xc542, 0xc543, 0xc544, 0xc545, 0xc546, 0xc547, 0xc548, /*0x00-0x07*/ - 0xc549, 0xc54a, 0xc54b, 0xc54c, 0xc54d, 0xc54e, 0xc54f, 0xc550, /*0x08-0x0f*/ - 0xc551, 0xc553, 0xc554, 0xc555, 0xc556, 0xc557, 0xc558, 0xc559, /*0x10-0x17*/ - 0xc55a, 0xc55b, 0xc55c, 0xc55d, 0xc561, 0xc562, 0xc563, 0xc564, /*0x18-0x1f*/ - 0xc565, 0xc566, 0xc567, 0xc568, 0xc569, 0xc56a, 0xc56b, 0xc56c, /*0x20-0x27*/ - 0xc56d, 0xc56e, 0xc56f, 0xc570, 0xc571, 0xc573, 0xc574, 0xc575, /*0x28-0x2f*/ - 0xc576, 0xc577, 0xc578, 0xc579, 0xc57a, 0xc57b, 0xc57c, 0xc57d, /*0x30-0x37*/ - 0xc581, 0xc582, 0xc583, 0xc584, 0xc585, 0xc586, 0xc587, 0xc588, /*0x38-0x3f*/ - 0xc589, 0xc58a, 0xc58b, 0xc58c, 0xc58d, 0xc58e, 0xc58f, 0xc590, /*0x40-0x47*/ - 0xc591, 0xc593, 0xc594, 0xc595, 0xc596, 0xc597, 0xc598, 0xc599, /*0x48-0x4f*/ - 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, /*0x50-0x57*/ - 0xc5a5, 0xc5a6, 0xc5a7, 0xc5a8, 0xc5a9, 0xc5aa, 0xc5ab, 0xc5ac, /*0x58-0x5f*/ - 0xc5ad, 0xc5ae, 0xc5af, 0xc5b0, 0xc5b1, 0xc5b3, 0xc5b4, 0xc5b5, /*0x60-0x67*/ - 0xc5b6, 0xc5b7, 0xc5b8, 0xc5b9, 0xc5ba, 0xc5bb, 0xc5bc, 0xc5bd, /*0x68-0x6f*/ - 0xc5c1, 0xc5c2, 0xc5c3, 0xc5c4, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, /*0x70-0x77*/ - 0xc5c9, 0xc5ca, 0xc5cb, 0xc5cc, 0xc5cd, 0xc5ce, 0xc5cf, 0xc5d0, /*0x78-0x7f*/ - 0xc5d1, 0xc5d3, 0xc5d4, 0xc5d5, 0xc5d6, 0xc5d7, 0xc5d8, 0xc5d9, /*0x80-0x87*/ - 0xc5da, 0xc5db, 0xc5dc, 0xc5dd, 0xc5e1, 0xc5e2, 0xc5e3, 0xc5e4, /*0x88-0x8f*/ - 0xc5e5, 0xc5e6, 0xc5e7, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xc5ec, /*0x90-0x97*/ - 0xc5ed, 0xc5ee, 0xc5ef, 0xc5f0, 0xc5f1, 0xc5f3, 0xc5f4, 0xc5f5, /*0x98-0x9f*/ - 0xc5f6, 0xc5f7, 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, 0xc5fc, 0xc5fd, /*0xa0-0xa7*/ - 0xc641, 0xc642, 0xc643, 0xc644, 0xc645, 0xc646, 0xc647, 0xc648, /*0xa8-0xaf*/ - 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e, 0xc64f, 0xc650, /*0xb0-0xb7*/ - 0xc651, 0xc653, 0xc654, 0xc655, 0xc656, 0xc657, 0xc658, 0xc659, /*0xb8-0xbf*/ - 0xc65a, 0xc65b, 0xc65c, 0xc65d, 0xc661, 0xc662, 0xc663, 0xc664, /*0xc0-0xc7*/ - 0xc665, 0xc666, 0xc667, 0xc668, 0xc669, 0xc66a, 0xc66b, 0xc66c, /*0xc8-0xcf*/ - 0xc66d, 0xc66e, 0xc66f, 0xc670, 0xc671, 0xc673, 0xc674, 0xc675, /*0xd0-0xd7*/ - 0xc676, 0xc677, 0xc678, 0xc679, 0xc67a, 0xc67b, 0xc67c, 0xc67d, /*0xd8-0xdf*/ - 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686, 0xc687, 0xc688, /*0xe0-0xe7*/ - 0xc689, 0xc68a, 0xc68b, 0xc68c, 0xc68d, 0xc68e, 0xc68f, 0xc690, /*0xe8-0xef*/ - 0xc691, 0xc693, 0xc694, 0xc695, 0xc696, 0xc697, 0xc698, 0xc699, /*0xf0-0xf7*/ - 0xc69a, 0xc69b, 0xc69c, 0xc69d, 0xc6a1, 0xc6a2, 0xc6a3, 0xc6a4, /*0xf8-0xff*/ - /* 0xd000 */ - 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab, 0xc6ac, /*0x00-0x07*/ - 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b3, 0xc6b4, 0xc6b5, /*0x08-0x0f*/ - 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd, /*0x10-0x17*/ - 0xc6c1, 0xc6c2, 0xc6c3, 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, /*0x18-0x1f*/ - 0xc6c9, 0xc6ca, 0xc6cb, 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, /*0x20-0x27*/ - 0xc6d1, 0xc6d3, 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, /*0x28-0x2f*/ - 0xc6da, 0xc6db, 0xc6dc, 0xc6dd, 0xc6e1, 0xc6e2, 0xc6e3, 0xc6e4, /*0x30-0x37*/ - 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, /*0x38-0x3f*/ - 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f3, 0xc6f4, 0xc6f5, /*0x40-0x47*/ - 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, /*0x48-0x4f*/ - 0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, /*0x50-0x57*/ - 0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f, 0xc750, /*0x58-0x5f*/ - 0xc751, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, /*0x60-0x67*/ - 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc761, 0xc762, 0xc763, 0xc764, /*0x68-0x6f*/ - 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c, /*0x70-0x77*/ - 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc773, 0xc774, 0xc775, /*0x78-0x7f*/ - 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, 0xc77c, 0xc77d, /*0x80-0x87*/ - 0xc781, 0xc782, 0xc783, 0xc784, 0xc785, 0xc786, 0xc787, 0xc788, /*0x88-0x8f*/ - 0xc789, 0xc78a, 0xc78b, 0xc78c, 0xc78d, 0xc78e, 0xc78f, 0xc790, /*0x90-0x97*/ - 0xc791, 0xc793, 0xc794, 0xc795, 0xc796, 0xc797, 0xc798, 0xc799, /*0x98-0x9f*/ - 0xc79a, 0xc79b, 0xc79c, 0xc79d, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, /*0xa0-0xa7*/ - 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac, /*0xa8-0xaf*/ - 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b3, 0xc7b4, 0xc7b5, /*0xb0-0xb7*/ - 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc, 0xc7bd, /*0xb8-0xbf*/ - 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, /*0xc0-0xc7*/ - 0xc869, 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870, /*0xc8-0xcf*/ - 0xc871, 0xc873, 0xc874, 0xc875, 0xc876, 0xc877, 0xc878, 0xc879, /*0xd0-0xd7*/ - 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc881, 0xc882, 0xc883, 0xc884, /*0xd8-0xdf*/ - 0xc885, 0xc886, 0xc887, 0xc888, 0xc889, 0xc88a, 0xc88b, 0xc88c, /*0xe0-0xe7*/ - 0xc88d, 0xc88e, 0xc88f, 0xc890, 0xc891, 0xc893, 0xc894, 0xc895, /*0xe8-0xef*/ - 0xc896, 0xc897, 0xc898, 0xc899, 0xc89a, 0xc89b, 0xc89c, 0xc89d, /*0xf0-0xf7*/ - 0xc8a1, 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0xc8a8, /*0xf8-0xff*/ - /* 0xd100 */ - 0xc8a9, 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, 0xc8b0, /*0x00-0x07*/ - 0xc8b1, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8, 0xc8b9, /*0x08-0x0f*/ - 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, 0xc8c1, 0xc8c2, 0xc8c3, 0xc8c4, /*0x10-0x17*/ - 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9, 0xc8ca, 0xc8cb, 0xc8cc, /*0x18-0x1f*/ - 0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d3, 0xc8d4, 0xc8d5, /*0x20-0x27*/ - 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, /*0x28-0x2f*/ - 0xc8e1, 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, /*0x30-0x37*/ - 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, /*0x38-0x3f*/ - 0xc8f1, 0xc8f3, 0xc8f4, 0xc8f5, 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9, /*0x40-0x47*/ - 0xc8fa, 0xc8fb, 0xc8fc, 0xc8fd, 0xc941, 0xc942, 0xc943, 0xc944, /*0x48-0x4f*/ - 0xc945, 0xc946, 0xc947, 0xc948, 0xc949, 0xc94a, 0xc94b, 0xc94c, /*0x50-0x57*/ - 0xc94d, 0xc94e, 0xc94f, 0xc950, 0xc951, 0xc953, 0xc954, 0xc955, /*0x58-0x5f*/ - 0xc956, 0xc957, 0xc958, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d, /*0x60-0x67*/ - 0xc961, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, 0xc967, 0xc968, /*0x68-0x6f*/ - 0xc969, 0xc96a, 0xc96b, 0xc96c, 0xc96d, 0xc96e, 0xc96f, 0xc970, /*0x70-0x77*/ - 0xc971, 0xc973, 0xc974, 0xc975, 0xc976, 0xc977, 0xc978, 0xc979, /*0x78-0x7f*/ - 0xc97a, 0xc97b, 0xc97c, 0xc97d, 0xc981, 0xc982, 0xc983, 0xc984, /*0x80-0x87*/ - 0xc985, 0xc986, 0xc987, 0xc988, 0xc989, 0xc98a, 0xc98b, 0xc98c, /*0x88-0x8f*/ - 0xc98d, 0xc98e, 0xc98f, 0xc990, 0xc991, 0xc993, 0xc994, 0xc995, /*0x90-0x97*/ - 0xc996, 0xc997, 0xc998, 0xc999, 0xc99a, 0xc99b, 0xc99c, 0xc99d, /*0x98-0x9f*/ - 0xc9a1, 0xc9a2, 0xc9a3, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, 0xc9a8, /*0xa0-0xa7*/ - 0xc9a9, 0xc9aa, 0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, 0xc9b0, /*0xa8-0xaf*/ - 0xc9b1, 0xc9b3, 0xc9b4, 0xc9b5, 0xc9b6, 0xc9b7, 0xc9b8, 0xc9b9, /*0xb0-0xb7*/ - 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9c1, 0xc9c2, 0xc9c3, 0xc9c4, /*0xb8-0xbf*/ - 0xc9c5, 0xc9c6, 0xc9c7, 0xc9c8, 0xc9c9, 0xc9ca, 0xc9cb, 0xc9cc, /*0xc0-0xc7*/ - 0xc9cd, 0xc9ce, 0xc9cf, 0xc9d0, 0xc9d1, 0xc9d3, 0xc9d4, 0xc9d5, /*0xc8-0xcf*/ - 0xc9d6, 0xc9d7, 0xc9d8, 0xc9d9, 0xc9da, 0xc9db, 0xc9dc, 0xc9dd, /*0xd0-0xd7*/ - 0xc9e1, 0xc9e2, 0xc9e3, 0xc9e4, 0xc9e5, 0xc9e6, 0xc9e7, 0xc9e8, /*0xd8-0xdf*/ - 0xc9e9, 0xc9ea, 0xc9eb, 0xc9ec, 0xc9ed, 0xc9ee, 0xc9ef, 0xc9f0, /*0xe0-0xe7*/ - 0xc9f1, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, 0xc9f8, 0xc9f9, /*0xe8-0xef*/ - 0xc9fa, 0xc9fb, 0xc9fc, 0xc9fd, 0xca41, 0xca42, 0xca43, 0xca44, /*0xf0-0xf7*/ - 0xca45, 0xca46, 0xca47, 0xca48, 0xca49, 0xca4a, 0xca4b, 0xca4c, /*0xf8-0xff*/ - /* 0xd200 */ - 0xca4d, 0xca4e, 0xca4f, 0xca50, 0xca51, 0xca53, 0xca54, 0xca55, /*0x00-0x07*/ - 0xca56, 0xca57, 0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5c, 0xca5d, /*0x08-0x0f*/ - 0xca61, 0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67, 0xca68, /*0x10-0x17*/ - 0xca69, 0xca6a, 0xca6b, 0xca6c, 0xca6d, 0xca6e, 0xca6f, 0xca70, /*0x18-0x1f*/ - 0xca71, 0xca73, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78, 0xca79, /*0x20-0x27*/ - 0xca7a, 0xca7b, 0xca7c, 0xca7d, 0xca81, 0xca82, 0xca83, 0xca84, /*0x28-0x2f*/ - 0xca85, 0xca86, 0xca87, 0xca88, 0xca89, 0xca8a, 0xca8b, 0xca8c, /*0x30-0x37*/ - 0xca8d, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca93, 0xca94, 0xca95, /*0x38-0x3f*/ - 0xca96, 0xca97, 0xca98, 0xca99, 0xca9a, 0xca9b, 0xca9c, 0xca9d, /*0x40-0x47*/ - 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6, 0xcaa7, 0xcaa8, /*0x48-0x4f*/ - 0xcaa9, 0xcaaa, 0xcaab, 0xcaac, 0xcaad, 0xcaae, 0xcaaf, 0xcab0, /*0x50-0x57*/ - 0xcab1, 0xcab3, 0xcab4, 0xcab5, 0xcab6, 0xcab7, 0xcab8, 0xcab9, /*0x58-0x5f*/ - 0xcaba, 0xcabb, 0xcabc, 0xcabd, 0xcac1, 0xcac2, 0xcac3, 0xcac4, /*0x60-0x67*/ - 0xcac5, 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcacc, /*0x68-0x6f*/ - 0xcacd, 0xcace, 0xcacf, 0xcad0, 0xcad1, 0xcad3, 0xcad4, 0xcad5, /*0x70-0x77*/ - 0xcad6, 0xcad7, 0xcad8, 0xcad9, 0xcada, 0xcadb, 0xcadc, 0xcadd, /*0x78-0x7f*/ - 0xcae1, 0xcae2, 0xcae3, 0xcae4, 0xcae5, 0xcae6, 0xcae7, 0xcae8, /*0x80-0x87*/ - 0xcae9, 0xcaea, 0xcaeb, 0xcaec, 0xcaed, 0xcaee, 0xcaef, 0xcaf0, /*0x88-0x8f*/ - 0xcaf1, 0xcaf3, 0xcaf4, 0xcaf5, 0xcaf6, 0xcaf7, 0xcaf8, 0xcaf9, /*0x90-0x97*/ - 0xcafa, 0xcafb, 0xcafc, 0xcafd, 0xcb41, 0xcb42, 0xcb43, 0xcb44, /*0x98-0x9f*/ - 0xcb45, 0xcb46, 0xcb47, 0xcb48, 0xcb49, 0xcb4a, 0xcb4b, 0xcb4c, /*0xa0-0xa7*/ - 0xcb4d, 0xcb4e, 0xcb4f, 0xcb50, 0xcb51, 0xcb53, 0xcb54, 0xcb55, /*0xa8-0xaf*/ - 0xcb56, 0xcb57, 0xcb58, 0xcb59, 0xcb5a, 0xcb5b, 0xcb5c, 0xcb5d, /*0xb0-0xb7*/ - 0xcb61, 0xcb62, 0xcb63, 0xcb64, 0xcb65, 0xcb66, 0xcb67, 0xcb68, /*0xb8-0xbf*/ - 0xcb69, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f, 0xcb70, /*0xc0-0xc7*/ - 0xcb71, 0xcb73, 0xcb74, 0xcb75, 0xcb76, 0xcb77, 0xcb78, 0xcb79, /*0xc8-0xcf*/ - 0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb81, 0xcb82, 0xcb83, 0xcb84, /*0xd0-0xd7*/ - 0xcb85, 0xcb86, 0xcb87, 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, /*0xd8-0xdf*/ - 0xcb8d, 0xcb8e, 0xcb8f, 0xcb90, 0xcb91, 0xcb93, 0xcb94, 0xcb95, /*0xe0-0xe7*/ - 0xcb96, 0xcb97, 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9c, 0xcb9d, /*0xe8-0xef*/ - 0xcba1, 0xcba2, 0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, 0xcba8, /*0xf0-0xf7*/ - 0xcba9, 0xcbaa, 0xcbab, 0xcbac, 0xcbad, 0xcbae, 0xcbaf, 0xcbb0, /*0xf8-0xff*/ - /* 0xd300 */ - 0xcbb1, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7, 0xcbb8, 0xcbb9, /*0x00-0x07*/ - 0xcbba, 0xcbbb, 0xcbbc, 0xcbbd, 0xcc61, 0xcc62, 0xcc63, 0xcc64, /*0x08-0x0f*/ - 0xcc65, 0xcc66, 0xcc67, 0xcc68, 0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, /*0x10-0x17*/ - 0xcc6d, 0xcc6e, 0xcc6f, 0xcc70, 0xcc71, 0xcc73, 0xcc74, 0xcc75, /*0x18-0x1f*/ - 0xcc76, 0xcc77, 0xcc78, 0xcc79, 0xcc7a, 0xcc7b, 0xcc7c, 0xcc7d, /*0x20-0x27*/ - 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, 0xcc88, /*0x28-0x2f*/ - 0xcc89, 0xcc8a, 0xcc8b, 0xcc8c, 0xcc8d, 0xcc8e, 0xcc8f, 0xcc90, /*0x30-0x37*/ - 0xcc91, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97, 0xcc98, 0xcc99, /*0x38-0x3f*/ - 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, 0xcca1, 0xcca2, 0xcca3, 0xcca4, /*0x40-0x47*/ - 0xcca5, 0xcca6, 0xcca7, 0xcca8, 0xcca9, 0xccaa, 0xccab, 0xccac, /*0x48-0x4f*/ - 0xccad, 0xccae, 0xccaf, 0xccb0, 0xccb1, 0xccb3, 0xccb4, 0xccb5, /*0x50-0x57*/ - 0xccb6, 0xccb7, 0xccb8, 0xccb9, 0xccba, 0xccbb, 0xccbc, 0xccbd, /*0x58-0x5f*/ - 0xccc1, 0xccc2, 0xccc3, 0xccc4, 0xccc5, 0xccc6, 0xccc7, 0xccc8, /*0x60-0x67*/ - 0xccc9, 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, 0xccd0, /*0x68-0x6f*/ - 0xccd1, 0xccd3, 0xccd4, 0xccd5, 0xccd6, 0xccd7, 0xccd8, 0xccd9, /*0x70-0x77*/ - 0xccda, 0xccdb, 0xccdc, 0xccdd, 0xcce1, 0xcce2, 0xcce3, 0xcce4, /*0x78-0x7f*/ - 0xcce5, 0xcce6, 0xcce7, 0xcce8, 0xcce9, 0xccea, 0xcceb, 0xccec, /*0x80-0x87*/ - 0xcced, 0xccee, 0xccef, 0xccf0, 0xccf1, 0xccf3, 0xccf4, 0xccf5, /*0x88-0x8f*/ - 0xccf6, 0xccf7, 0xccf8, 0xccf9, 0xccfa, 0xccfb, 0xccfc, 0xccfd, /*0x90-0x97*/ - 0xcd41, 0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48, /*0x98-0x9f*/ - 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, 0xcd4f, 0xcd50, /*0xa0-0xa7*/ - 0xcd51, 0xcd53, 0xcd54, 0xcd55, 0xcd56, 0xcd57, 0xcd58, 0xcd59, /*0xa8-0xaf*/ - 0xcd5a, 0xcd5b, 0xcd5c, 0xcd5d, 0xcd61, 0xcd62, 0xcd63, 0xcd64, /*0xb0-0xb7*/ - 0xcd65, 0xcd66, 0xcd67, 0xcd68, 0xcd69, 0xcd6a, 0xcd6b, 0xcd6c, /*0xb8-0xbf*/ - 0xcd6d, 0xcd6e, 0xcd6f, 0xcd70, 0xcd71, 0xcd73, 0xcd74, 0xcd75, /*0xc0-0xc7*/ - 0xcd76, 0xcd77, 0xcd78, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, /*0xc8-0xcf*/ - 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, 0xcd86, 0xcd87, 0xcd88, /*0xd0-0xd7*/ - 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, 0xcd8f, 0xcd90, /*0xd8-0xdf*/ - 0xcd91, 0xcd93, 0xcd94, 0xcd95, 0xcd96, 0xcd97, 0xcd98, 0xcd99, /*0xe0-0xe7*/ - 0xcd9a, 0xcd9b, 0xcd9c, 0xcd9d, 0xcda1, 0xcda2, 0xcda3, 0xcda4, /*0xe8-0xef*/ - 0xcda5, 0xcda6, 0xcda7, 0xcda8, 0xcda9, 0xcdaa, 0xcdab, 0xcdac, /*0xf0-0xf7*/ - 0xcdad, 0xcdae, 0xcdaf, 0xcdb0, 0xcdb1, 0xcdb3, 0xcdb4, 0xcdb5, /*0xf8-0xff*/ - /* 0xd400 */ - 0xcdb6, 0xcdb7, 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb, 0xcdbc, 0xcdbd, /*0x00-0x07*/ - 0xcdc1, 0xcdc2, 0xcdc3, 0xcdc4, 0xcdc5, 0xcdc6, 0xcdc7, 0xcdc8, /*0x08-0x0f*/ - 0xcdc9, 0xcdca, 0xcdcb, 0xcdcc, 0xcdcd, 0xcdce, 0xcdcf, 0xcdd0, /*0x10-0x17*/ - 0xcdd1, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7, 0xcdd8, 0xcdd9, /*0x18-0x1f*/ - 0xcdda, 0xcddb, 0xcddc, 0xcddd, 0xcde1, 0xcde2, 0xcde3, 0xcde4, /*0x20-0x27*/ - 0xcde5, 0xcde6, 0xcde7, 0xcde8, 0xcde9, 0xcdea, 0xcdeb, 0xcdec, /*0x28-0x2f*/ - 0xcded, 0xcdee, 0xcdef, 0xcdf0, 0xcdf1, 0xcdf3, 0xcdf4, 0xcdf5, /*0x30-0x37*/ - 0xcdf6, 0xcdf7, 0xcdf8, 0xcdf9, 0xcdfa, 0xcdfb, 0xcdfc, 0xcdfd, /*0x38-0x3f*/ - 0xce41, 0xce42, 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, 0xce48, /*0x40-0x47*/ - 0xce49, 0xce4a, 0xce4b, 0xce4c, 0xce4d, 0xce4e, 0xce4f, 0xce50, /*0x48-0x4f*/ - 0xce51, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, 0xce58, 0xce59, /*0x50-0x57*/ - 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce61, 0xce62, 0xce63, 0xce64, /*0x58-0x5f*/ - 0xce65, 0xce66, 0xce67, 0xce68, 0xce69, 0xce6a, 0xce6b, 0xce6c, /*0x60-0x67*/ - 0xce6d, 0xce6e, 0xce6f, 0xce70, 0xce71, 0xce73, 0xce74, 0xce75, /*0x68-0x6f*/ - 0xce76, 0xce77, 0xce78, 0xce79, 0xce7a, 0xce7b, 0xce7c, 0xce7d, /*0x70-0x77*/ - 0xce81, 0xce82, 0xce83, 0xce84, 0xce85, 0xce86, 0xce87, 0xce88, /*0x78-0x7f*/ - 0xce89, 0xce8a, 0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, 0xce90, /*0x80-0x87*/ - 0xce91, 0xce93, 0xce94, 0xce95, 0xce96, 0xce97, 0xce98, 0xce99, /*0x88-0x8f*/ - 0xce9a, 0xce9b, 0xce9c, 0xce9d, 0xcea1, 0xcea2, 0xcea3, 0xcea4, /*0x90-0x97*/ - 0xcea5, 0xcea6, 0xcea7, 0xcea8, 0xcea9, 0xceaa, 0xceab, 0xceac, /*0x98-0x9f*/ - 0xcead, 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb3, 0xceb4, 0xceb5, /*0xa0-0xa7*/ - 0xceb6, 0xceb7, 0xceb8, 0xceb9, 0xceba, 0xcebb, 0xcebc, 0xcebd, /*0xa8-0xaf*/ - 0xcec1, 0xcec2, 0xcec3, 0xcec4, 0xcec5, 0xcec6, 0xcec7, 0xcec8, /*0xb0-0xb7*/ - 0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf, 0xced0, /*0xb8-0xbf*/ - 0xced1, 0xced3, 0xced4, 0xced5, 0xced6, 0xced7, 0xced8, 0xced9, /*0xc0-0xc7*/ - 0xceda, 0xcedb, 0xcedc, 0xcedd, 0xcee1, 0xcee2, 0xcee3, 0xcee4, /*0xc8-0xcf*/ - 0xcee5, 0xcee6, 0xcee7, 0xcee8, 0xcee9, 0xceea, 0xceeb, 0xceec, /*0xd0-0xd7*/ - 0xceed, 0xceee, 0xceef, 0xcef0, 0xcef1, 0xcef3, 0xcef4, 0xcef5, /*0xd8-0xdf*/ - 0xcef6, 0xcef7, 0xcef8, 0xcef9, 0xcefa, 0xcefb, 0xcefc, 0xcefd, /*0xe0-0xe7*/ - 0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46, 0xcf47, 0xcf48, /*0xe8-0xef*/ - 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d, 0xcf4e, 0xcf4f, 0xcf50, /*0xf0-0xf7*/ - 0xcf51, 0xcf53, 0xcf54, 0xcf55, 0xcf56, 0xcf57, 0xcf58, 0xcf59, /*0xf8-0xff*/ - /* 0xd500 */ - 0xcf5a, 0xcf5b, 0xcf5c, 0xcf5d, 0xcf61, 0xcf62, 0xcf63, 0xcf64, /*0x00-0x07*/ - 0xcf65, 0xcf66, 0xcf67, 0xcf68, 0xcf69, 0xcf6a, 0xcf6b, 0xcf6c, /*0x08-0x0f*/ - 0xcf6d, 0xcf6e, 0xcf6f, 0xcf70, 0xcf71, 0xcf73, 0xcf74, 0xcf75, /*0x10-0x17*/ - 0xcf76, 0xcf77, 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, /*0x18-0x1f*/ - 0xcf81, 0xcf82, 0xcf83, 0xcf84, 0xcf85, 0xcf86, 0xcf87, 0xcf88, /*0x20-0x27*/ - 0xcf89, 0xcf8a, 0xcf8b, 0xcf8c, 0xcf8d, 0xcf8e, 0xcf8f, 0xcf90, /*0x28-0x2f*/ - 0xcf91, 0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97, 0xcf98, 0xcf99, /*0x30-0x37*/ - 0xcf9a, 0xcf9b, 0xcf9c, 0xcf9d, 0xcfa1, 0xcfa2, 0xcfa3, 0xcfa4, /*0x38-0x3f*/ - 0xcfa5, 0xcfa6, 0xcfa7, 0xcfa8, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, /*0x40-0x47*/ - 0xcfad, 0xcfae, 0xcfaf, 0xcfb0, 0xcfb1, 0xcfb3, 0xcfb4, 0xcfb5, /*0x48-0x4f*/ - 0xcfb6, 0xcfb7, 0xcfb8, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd, /*0x50-0x57*/ - 0xd061, 0xd062, 0xd063, 0xd064, 0xd065, 0xd066, 0xd067, 0xd068, /*0x58-0x5f*/ - 0xd069, 0xd06a, 0xd06b, 0xd06c, 0xd06d, 0xd06e, 0xd06f, 0xd070, /*0x60-0x67*/ - 0xd071, 0xd073, 0xd074, 0xd075, 0xd076, 0xd077, 0xd078, 0xd079, /*0x68-0x6f*/ - 0xd07a, 0xd07b, 0xd07c, 0xd07d, 0xd081, 0xd082, 0xd083, 0xd084, /*0x70-0x77*/ - 0xd085, 0xd086, 0xd087, 0xd088, 0xd089, 0xd08a, 0xd08b, 0xd08c, /*0x78-0x7f*/ - 0xd08d, 0xd08e, 0xd08f, 0xd090, 0xd091, 0xd093, 0xd094, 0xd095, /*0x80-0x87*/ - 0xd096, 0xd097, 0xd098, 0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d, /*0x88-0x8f*/ - 0xd0a1, 0xd0a2, 0xd0a3, 0xd0a4, 0xd0a5, 0xd0a6, 0xd0a7, 0xd0a8, /*0x90-0x97*/ - 0xd0a9, 0xd0aa, 0xd0ab, 0xd0ac, 0xd0ad, 0xd0ae, 0xd0af, 0xd0b0, /*0x98-0x9f*/ - 0xd0b1, 0xd0b3, 0xd0b4, 0xd0b5, 0xd0b6, 0xd0b7, 0xd0b8, 0xd0b9, /*0xa0-0xa7*/ - 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0c1, 0xd0c2, 0xd0c3, 0xd0c4, /*0xa8-0xaf*/ - 0xd0c5, 0xd0c6, 0xd0c7, 0xd0c8, 0xd0c9, 0xd0ca, 0xd0cb, 0xd0cc, /*0xb0-0xb7*/ - 0xd0cd, 0xd0ce, 0xd0cf, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4, 0xd0d5, /*0xb8-0xbf*/ - 0xd0d6, 0xd0d7, 0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0xd0dc, 0xd0dd, /*0xc0-0xc7*/ - 0xd0e1, 0xd0e2, 0xd0e3, 0xd0e4, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8, /*0xc8-0xcf*/ - 0xd0e9, 0xd0ea, 0xd0eb, 0xd0ec, 0xd0ed, 0xd0ee, 0xd0ef, 0xd0f0, /*0xd0-0xd7*/ - 0xd0f1, 0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, 0xd0f8, 0xd0f9, /*0xd8-0xdf*/ - 0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd141, 0xd142, 0xd143, 0xd144, /*0xe0-0xe7*/ - 0xd145, 0xd146, 0xd147, 0xd148, 0xd149, 0xd14a, 0xd14b, 0xd14c, /*0xe8-0xef*/ - 0xd14d, 0xd14e, 0xd14f, 0xd150, 0xd151, 0xd153, 0xd154, 0xd155, /*0xf0-0xf7*/ - 0xd156, 0xd157, 0xd158, 0xd159, 0xd15a, 0xd15b, 0xd15c, 0xd15d, /*0xf8-0xff*/ - /* 0xd600 */ - 0xd161, 0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, 0xd168, /*0x00-0x07*/ - 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e, 0xd16f, 0xd170, /*0x08-0x0f*/ - 0xd171, 0xd173, 0xd174, 0xd175, 0xd176, 0xd177, 0xd178, 0xd179, /*0x10-0x17*/ - 0xd17a, 0xd17b, 0xd17c, 0xd17d, 0xd181, 0xd182, 0xd183, 0xd184, /*0x18-0x1f*/ - 0xd185, 0xd186, 0xd187, 0xd188, 0xd189, 0xd18a, 0xd18b, 0xd18c, /*0x20-0x27*/ - 0xd18d, 0xd18e, 0xd18f, 0xd190, 0xd191, 0xd193, 0xd194, 0xd195, /*0x28-0x2f*/ - 0xd196, 0xd197, 0xd198, 0xd199, 0xd19a, 0xd19b, 0xd19c, 0xd19d, /*0x30-0x37*/ - 0xd1a1, 0xd1a2, 0xd1a3, 0xd1a4, 0xd1a5, 0xd1a6, 0xd1a7, 0xd1a8, /*0x38-0x3f*/ - 0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af, 0xd1b0, /*0x40-0x47*/ - 0xd1b1, 0xd1b3, 0xd1b4, 0xd1b5, 0xd1b6, 0xd1b7, 0xd1b8, 0xd1b9, /*0x48-0x4f*/ - 0xd1ba, 0xd1bb, 0xd1bc, 0xd1bd, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4, /*0x50-0x57*/ - 0xd1c5, 0xd1c6, 0xd1c7, 0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc, /*0x58-0x5f*/ - 0xd1cd, 0xd1ce, 0xd1cf, 0xd1d0, 0xd1d1, 0xd1d3, 0xd1d4, 0xd1d5, /*0x60-0x67*/ - 0xd1d6, 0xd1d7, 0xd1d8, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, /*0x68-0x6f*/ - 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6, 0xd1e7, 0xd1e8, /*0x70-0x77*/ - 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee, 0xd1ef, 0xd1f0, /*0x78-0x7f*/ - 0xd1f1, 0xd1f3, 0xd1f4, 0xd1f5, 0xd1f6, 0xd1f7, 0xd1f8, 0xd1f9, /*0x80-0x87*/ - 0xd1fa, 0xd1fb, 0xd1fc, 0xd1fd, 0xd241, 0xd242, 0xd243, 0xd244, /*0x88-0x8f*/ - 0xd245, 0xd246, 0xd247, 0xd248, 0xd249, 0xd24a, 0xd24b, 0xd24c, /*0x90-0x97*/ - 0xd24d, 0xd24e, 0xd24f, 0xd250, 0xd251, 0xd253, 0xd254, 0xd255, /*0x98-0x9f*/ - 0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d, /*0xa0-0xa7*/ - 0xd261, 0xd262, 0xd263, 0xd264, 0xd265, 0xd266, 0xd267, 0xd268, /*0xa8-0xaf*/ - 0xd269, 0xd26a, 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, 0xd270, /*0xb0-0xb7*/ - 0xd271, 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, /*0xb8-0xbf*/ - 0xd27a, 0xd27b, 0xd27c, 0xd27d, 0xd281, 0xd282, 0xd283, 0xd284, /*0xc0-0xc7*/ - 0xd285, 0xd286, 0xd287, 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, /*0xc8-0xcf*/ - 0xd28d, 0xd28e, 0xd28f, 0xd290, 0xd291, 0xd293, 0xd294, 0xd295, /*0xd0-0xd7*/ - 0xd296, 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29c, 0xd29d, /*0xd8-0xdf*/ - 0xd2a1, 0xd2a2, 0xd2a3, 0xd2a4, 0xd2a5, 0xd2a6, 0xd2a7, 0xd2a8, /*0xe0-0xe7*/ - 0xd2a9, 0xd2aa, 0xd2ab, 0xd2ac, 0xd2ad, 0xd2ae, 0xd2af, 0xd2b0, /*0xe8-0xef*/ - 0xd2b1, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6, 0xd2b7, 0xd2b8, 0xd2b9, /*0xf0-0xf7*/ - 0xd2ba, 0xd2bb, 0xd2bc, 0xd2bd, 0xd2c1, 0xd2c2, 0xd2c3, 0xd2c4, /*0xf8-0xff*/ - /* 0xd700 */ - 0xd2c5, 0xd2c6, 0xd2c7, 0xd2c8, 0xd2c9, 0xd2ca, 0xd2cb, 0xd2cc, /*0x00-0x07*/ - 0xd2cd, 0xd2ce, 0xd2cf, 0xd2d0, 0xd2d1, 0xd2d3, 0xd2d4, 0xd2d5, /*0x08-0x0f*/ - 0xd2d6, 0xd2d7, 0xd2d8, 0xd2d9, 0xd2da, 0xd2db, 0xd2dc, 0xd2dd, /*0x10-0x17*/ - 0xd2e1, 0xd2e2, 0xd2e3, 0xd2e4, 0xd2e5, 0xd2e6, 0xd2e7, 0xd2e8, /*0x18-0x1f*/ - 0xd2e9, 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, 0xd2f0, /*0x20-0x27*/ - 0xd2f1, 0xd2f3, 0xd2f4, 0xd2f5, 0xd2f6, 0xd2f7, 0xd2f8, 0xd2f9, /*0x28-0x2f*/ - 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd341, 0xd342, 0xd343, 0xd344, /*0x30-0x37*/ - 0xd345, 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c, /*0x38-0x3f*/ - 0xd34d, 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd353, 0xd354, 0xd355, /*0x40-0x47*/ - 0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b, 0xd35c, 0xd35d, /*0x48-0x4f*/ - 0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, 0xd367, 0xd368, /*0x50-0x57*/ - 0xd369, 0xd36a, 0xd36b, 0xd36c, 0xd36d, 0xd36e, 0xd36f, 0xd370, /*0x58-0x5f*/ - 0xd371, 0xd373, 0xd374, 0xd375, 0xd376, 0xd377, 0xd378, 0xd379, /*0x60-0x67*/ - 0xd37a, 0xd37b, 0xd37c, 0xd37d, 0xd381, 0xd382, 0xd383, 0xd384, /*0x68-0x6f*/ - 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd38b, 0xd38c, /*0x70-0x77*/ - 0xd38d, 0xd38e, 0xd38f, 0xd390, 0xd391, 0xd393, 0xd394, 0xd395, /*0x78-0x7f*/ - 0xd396, 0xd397, 0xd398, 0xd399, 0xd39a, 0xd39b, 0xd39c, 0xd39d, /*0x80-0x87*/ - 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a6, 0xd3a7, 0xd3a8, /*0x88-0x8f*/ - 0xd3a9, 0xd3aa, 0xd3ab, 0xd3ac, 0xd3ad, 0xd3ae, 0xd3af, 0xd3b0, /*0x90-0x97*/ - 0xd3b1, 0xd3b3, 0xd3b4, 0xd3b5, 0xd3b6, 0xd3b7, 0xd3b8, 0xd3b9, /*0x98-0x9f*/ - 0xd3ba, 0xd3bb, 0xd3bc, 0xd3bd, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa0-0xa7*/ +/* index3 = jamo_final_index[bitspart3] <==> + bitspart3 = jamo_final_index_inverse[index3] */ +static const char jamo_final_index_inverse[28] = { + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, }; static int johab_hangul_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) { if (n >= 2) { - unsigned short c = 0; - if (wc >= 0x3130 && wc < 0x3168) - c = johab_hangul_page31[wc-0x3130]; - else if (wc >= 0xac00 && wc < 0xd7a8) - c = johab_hangul_pageac[wc-0xac00]; - if (c != 0) { + if (wc >= 0x3131 && wc < 0x3164) { + unsigned short c = johab_hangul_page31[wc-0x3131]; + r[0] = (c >> 8); r[1] = (c & 0xff); + return 2; + } else if (wc >= 0xac00 && wc < 0xd7a4) { + unsigned int index1; + unsigned int index2; + unsigned int index3; + unsigned short c; + unsigned int tmp = wc - 0xac00; + index3 = tmp % 28; tmp = tmp / 28; + index2 = tmp % 21; tmp = tmp / 21; + index1 = tmp; + c = (((((1 << 5) + | jamo_initial_index_inverse[index1]) << 5) + | jamo_medial_index_inverse[index2]) << 5) + | jamo_final_index_inverse[index3]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } @@ -3493,3 +203,41 @@ johab_hangul_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) } return RET_TOOSMALL; } + +/* + * Decomposition of JOHAB Hangul in one to three Johab Jamo elements. + */ + +/* Decompose wc into r[0..2], and return the number of resulting Jamo elements. + Return RET_ILSEQ if decomposition is not possible. */ + +static int johab_hangul_decompose (conv_t conv, wchar_t* r, wchar_t wc) +{ + unsigned char buf[2]; + int ret = johab_hangul_wctomb(conv,buf,wc,2); + if (ret != RET_ILSEQ) { + unsigned int hangul = (buf[0] << 8) | buf[1]; + unsigned char jamo1 = jamo_initial[(hangul >> 10) & 31]; + unsigned char jamo2 = jamo_medial[(hangul >> 5) & 31]; + unsigned char jamo3 = jamo_final[hangul & 31]; + if ((hangul >> 15) != 1) abort(); + if (jamo1 != NONE && jamo2 != NONE && jamo3 != NONE) { + /* They are not all three == FILL because that would correspond to + johab = 0x8441, which doesn't exist. */ + wchar_t* p = r; + if (jamo1 != FILL) + *p++ = 0x3130 + jamo1; + if (jamo2 != FILL) + *p++ = 0x3130 + jamo2; + if (jamo3 != FILL) + *p++ = 0x3130 + jamo3; + return p-r; + } + } + return RET_ILSEQ; +} + +#undef fill +#undef none +#undef FILL +#undef NONE diff --git a/libiconv/ksc5601.h b/libiconv/ksc5601.h index 01778bb..0e387fe 100644 --- a/libiconv/ksc5601.h +++ b/libiconv/ksc5601.h @@ -3,7 +3,7 @@ * KSC5601.1987-0 */ -static const unsigned short ksc5601_2uni_page21[3760] = { +static const unsigned short ksc5601_2uni_page21[1115] = { /* 0x21 */ 0x3000, 0x3001, 0x3002, 0x00b7, 0x2025, 0x2026, 0x00a8, 0x3003, 0x00ad, 0x2015, 0x2225, 0xff3c, 0x223c, 0x2018, 0x2019, 0x201c, @@ -26,10 +26,10 @@ static const unsigned short ksc5601_2uni_page21[3760] = { 0x25a8, 0x25a7, 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e, 0x261c, 0x261e, 0x00b6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196, 0x2198, 0x266d, 0x2669, 0x266a, 0x266c, 0x327f, 0x321c, 0x2116, - 0x33c7, 0x2122, 0x33c2, 0x33d8, 0x2121, 0xc932, 0xc933, 0xc935, - 0xc936, 0xc937, 0xc938, 0xc939, 0xc93a, 0xc93b, 0xc93c, 0xc93d, - 0xc93e, 0xc93f, 0xc940, 0xc941, 0xc942, 0xc943, 0xc944, 0xc945, - 0xc946, 0xc947, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0x33c7, 0x2122, 0x33c2, 0x33d8, 0x2121, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x23 */ 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10, @@ -64,11 +64,11 @@ static const unsigned short ksc5601_2uni_page21[3760] = { 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, - 0xca69, 0xca6a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, - 0xca85, 0xca86, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x26 */ 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b, @@ -78,10 +78,10 @@ static const unsigned short ksc5601_2uni_page21[3760] = { 0x251e, 0x251f, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252a, 0x252d, 0x252e, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253a, 0x253d, 0x253e, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546, - 0x2547, 0x2548, 0x2549, 0x254a, 0xcaca, 0xcacb, 0xcace, 0xcad0, - 0xcad2, 0xcad4, 0xcad5, 0xcad6, 0xcad7, 0xcada, 0xcadb, 0xcadc, - 0xcadd, 0xcade, 0xcadf, 0xcae1, 0xcae2, 0xcae3, 0xcae4, 0xcae5, - 0xcae6, 0xcae7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0x2547, 0x2548, 0x2549, 0x254a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x27 */ 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33c4, 0x33a3, 0x33a4, 0x33a5, 0x33a6, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d, 0x339e, @@ -92,9 +92,9 @@ static const unsigned short ksc5601_2uni_page21[3760] = { 0x33bd, 0x33be, 0x33bf, 0x3390, 0x3391, 0x3392, 0x3393, 0x3394, 0x2126, 0x33c0, 0x33c1, 0x338a, 0x338b, 0x338c, 0x33d6, 0x33c5, 0x33ad, 0x33ae, 0x33af, 0x33db, 0x33a9, 0x33aa, 0x33ab, 0x33ac, - 0x33dd, 0x33d0, 0x33d3, 0x33c3, 0x33c9, 0x33dc, 0x33c6, 0xcb39, - 0xcb3a, 0xcb3b, 0xcb3c, 0xcb3d, 0xcb3e, 0xcb3f, 0xcb40, 0xcb42, - 0xcb43, 0xcb44, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0x33dd, 0x33d0, 0x33d3, 0x33c3, 0x33c9, 0x33dc, 0x33c6, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x28 */ 0x00c6, 0x00d0, 0x00aa, 0x0126, 0xfffd, 0x0132, 0xfffd, 0x013f, 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a, 0xfffd, @@ -132,8 +132,8 @@ static const unsigned short ksc5601_2uni_page21[3760] = { 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, - 0x3091, 0x3092, 0x3093, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f, - 0xcc71, 0xcc72, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x2b */ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0, @@ -145,60 +145,22 @@ static const unsigned short ksc5601_2uni_page21[3760] = { 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0, - 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xccd7, 0xccd8, - 0xccd9, 0xccda, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x2c */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, - 0x042f, 0xccff, 0xcd00, 0xcd02, 0xcd03, 0xcd04, 0xcd05, 0xcd06, - 0xcd07, 0xcd0a, 0xcd0b, 0xcd0d, 0xcd0e, 0xcd0f, 0xcd11, 0xcd12, + 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, - 0x044f, 0xcd35, 0xcd36, 0xcd37, 0xcd38, 0xcd3a, 0xcd3b, 0xcd3c, - 0xcd3d, 0xcd3e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0x2d */ - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xcd61, 0xcd62, 0xcd63, 0xcd65, 0xcd66, 0xcd67, 0xcd68, 0xcd69, - 0xcd6a, 0xcd6b, 0xcd6e, 0xcd70, 0xcd72, 0xcd73, 0xcd74, 0xcd75, - 0xcd76, 0xcd77, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, 0xcd7e, - 0xcd7f, 0xcd80, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, 0xcd86, 0xcd87, 0xcd89, - 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, 0xcd8f, 0xcd90, 0xcd91, - 0xcd92, 0xcd93, 0xcd96, 0xcd97, 0xcd99, 0xcd9a, 0xcd9b, 0xcd9d, - 0xcd9e, 0xcd9f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0x2e */ - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xcdc6, 0xcdc7, 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0xcdcd, 0xcdce, - 0xcdcf, 0xcdd1, 0xcdd2, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7, - 0xcdd8, 0xcdd9, 0xcdda, 0xcddb, 0xcddc, 0xcddd, 0xcdde, 0xcddf, - 0xcde0, 0xcde1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7, 0xcde9, 0xcdea, - 0xcdeb, 0xcded, 0xcdee, 0xcdef, 0xcdf1, 0xcdf2, 0xcdf3, 0xcdf4, - 0xcdf5, 0xcdf6, 0xcdf7, 0xcdfa, 0xcdfc, 0xcdfe, 0xcdff, 0xce00, - 0xce01, 0xce02, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - /* 0x2f */ - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xce2c, 0xce2d, 0xce2e, 0xce2f, 0xce32, 0xce34, 0xce36, 0xce37, - 0xce38, 0xce39, 0xce3a, 0xce3b, 0xce3c, 0xce3d, 0xce3e, 0xce3f, - 0xce40, 0xce41, 0xce42, 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, - 0xce48, 0xce49, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xce4a, 0xce4b, 0xce4c, 0xce4d, 0xce4e, 0xce4f, 0xce50, 0xce51, - 0xce52, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, 0xce5a, 0xce5b, - 0xce5d, 0xce5e, 0xce62, 0xce63, 0xce64, 0xce65, 0xce66, 0xce67, - 0xce6a, 0xce6c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0x044f, +}; +static const unsigned short ksc5601_2uni_page30[2350] = { /* 0x30 */ 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09, 0xac0a, 0xac10, 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17, 0xac19, @@ -1208,15 +1170,18 @@ static int ksc5601_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; - if ((c1 >= 0x21 && c1 <= 0x48) || (c1 >= 0x4a && c1 <= 0x7d)) { + if ((c1 >= 0x21 && c1 <= 0x2c) || (c1 >= 0x30 && c1 <= 0x48) || (c1 >= 0x4a && c1 <= 0x7d)) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x21 && c2 < 0x7f) { unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); unsigned short wc = 0xfffd; - if (i < 3854) { - if (i < 3760) + if (i < 1410) { + if (i < 1115) wc = ksc5601_2uni_page21[i]; + } else if (i < 3854) { + if (i < 3760) + wc = ksc5601_2uni_page30[i-1410]; } else { if (i < 8742) wc = ksc5601_2uni_page4a[i-3854]; @@ -1233,7 +1198,7 @@ ksc5601_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) return RET_ILSEQ; } -static const unsigned short ksc5601_2charset[8473] = { +static const unsigned short ksc5601_2charset[8224] = { 0x222e, 0x2234, 0x2157, 0x2127, 0x2823, 0x2129, 0x2146, 0x213e, 0x2977, 0x2978, 0x2225, 0x2252, 0x2124, 0x222c, 0x2976, 0x282c, 0x2879, 0x2876, 0x287a, 0x222f, 0x2821, 0x2822, 0x213f, 0x282a, @@ -2130,170 +2095,138 @@ static const unsigned short ksc5601_2charset[8473] = { 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f, 0x4150, 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157, 0x4158, 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f, 0x4160, - 0x4161, 0x2266, 0x2267, 0x4162, 0x2268, 0x2269, 0x226a, 0x226b, - 0x226c, 0x226d, 0x226e, 0x226f, 0x2270, 0x2271, 0x2272, 0x2273, - 0x2274, 0x2275, 0x2276, 0x2277, 0x2278, 0x2279, 0x227a, 0x4163, - 0x4164, 0x4165, 0x4166, 0x4167, 0x4168, 0x4169, 0x416a, 0x416b, - 0x416c, 0x416d, 0x416e, 0x416f, 0x4170, 0x4171, 0x4172, 0x4173, - 0x4174, 0x4175, 0x4176, 0x4177, 0x4178, 0x4179, 0x417a, 0x417b, - 0x417c, 0x417d, 0x417e, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, - 0x4226, 0x4227, 0x4228, 0x4229, 0x422a, 0x422b, 0x422c, 0x422d, - 0x422e, 0x422f, 0x4230, 0x4231, 0x4232, 0x4233, 0x4234, 0x4235, - 0x4236, 0x4237, 0x4238, 0x4239, 0x423a, 0x423b, 0x423c, 0x423d, - 0x423e, 0x423f, 0x4240, 0x4241, 0x4242, 0x4243, 0x4244, 0x4245, - 0x2559, 0x255a, 0x4246, 0x4247, 0x2579, 0x257a, 0x4248, 0x4249, - 0x424a, 0x424b, 0x424c, 0x2665, 0x2666, 0x424d, 0x424e, 0x2667, - 0x424f, 0x2668, 0x4250, 0x2669, 0x4251, 0x266a, 0x266b, 0x266c, - 0x266d, 0x4252, 0x4253, 0x266e, 0x266f, 0x2670, 0x2671, 0x2672, - 0x2673, 0x4254, 0x2674, 0x2675, 0x2676, 0x2677, 0x2678, 0x2679, - 0x267a, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425a, 0x425b, - 0x425c, 0x2770, 0x2771, 0x2772, 0x2773, 0x2774, 0x2775, 0x2776, - 0x2777, 0x425d, 0x2778, 0x2779, 0x277a, 0x425e, 0x425f, 0x4260, - 0x4261, 0x4262, 0x4263, 0x4264, 0x4265, 0x4266, 0x4267, 0x4268, - 0x4269, 0x426a, 0x426b, 0x426c, 0x426d, 0x426e, 0x426f, 0x4270, - 0x4271, 0x4272, 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, 0x4278, - 0x4279, 0x427a, 0x427b, 0x427c, 0x427d, 0x427e, 0x4321, 0x4322, - 0x4323, 0x4324, 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432a, - 0x432b, 0x432c, 0x432d, 0x432e, 0x432f, 0x4330, 0x2a74, 0x2a75, - 0x2a76, 0x2a77, 0x2a78, 0x4331, 0x2a79, 0x2a7a, 0x4332, 0x4333, - 0x4334, 0x4335, 0x4336, 0x4337, 0x4338, 0x4339, 0x433a, 0x433b, - 0x433c, 0x433d, 0x433e, 0x433f, 0x4340, 0x4341, 0x4342, 0x4343, - 0x4344, 0x4345, 0x2b77, 0x2b78, 0x2b79, 0x2b7a, 0x4346, 0x4347, - 0x4348, 0x2c42, 0x2c43, 0x4349, 0x2c44, 0x2c45, 0x2c46, 0x2c47, - 0x2c48, 0x2c49, 0x434a, 0x434b, 0x2c4a, 0x2c4b, 0x434c, 0x2c4c, - 0x2c4d, 0x2c4e, 0x434d, 0x2c4f, 0x2c50, 0x434e, 0x434f, 0x4350, - 0x4351, 0x4352, 0x4353, 0x4354, 0x2c72, 0x2c73, 0x2c74, 0x2c75, - 0x4355, 0x2c76, 0x2c77, 0x2c78, 0x2c79, 0x2c7a, 0x4356, 0x4357, - 0x2d41, 0x2d42, 0x2d43, 0x4358, 0x2d44, 0x2d45, 0x2d46, 0x2d47, - 0x2d48, 0x2d49, 0x2d4a, 0x4359, 0x435a, 0x2d4b, 0x435b, 0x2d4c, - 0x435c, 0x2d4d, 0x2d4e, 0x2d4f, 0x2d50, 0x2d51, 0x2d52, 0x435d, - 0x2d53, 0x2d54, 0x2d55, 0x2d56, 0x2d57, 0x2d58, 0x2d59, 0x2d5a, - 0x2d61, 0x2d62, 0x2d63, 0x2d64, 0x2d65, 0x2d66, 0x2d67, 0x435e, - 0x2d68, 0x2d69, 0x2d6a, 0x2d6b, 0x2d6c, 0x2d6d, 0x2d6e, 0x2d6f, - 0x2d70, 0x2d71, 0x2d72, 0x435f, 0x4360, 0x2d73, 0x2d74, 0x4361, - 0x2d75, 0x2d76, 0x2d77, 0x4362, 0x2d78, 0x2d79, 0x2d7a, 0x4363, - 0x4364, 0x4365, 0x4366, 0x4367, 0x4368, 0x2e41, 0x2e42, 0x2e43, - 0x2e44, 0x2e45, 0x2e46, 0x4369, 0x2e47, 0x2e48, 0x2e49, 0x436a, - 0x2e4a, 0x2e4b, 0x2e4c, 0x2e4d, 0x2e4e, 0x2e4f, 0x2e50, 0x2e51, - 0x2e52, 0x2e53, 0x2e54, 0x2e55, 0x2e56, 0x2e57, 0x2e58, 0x2e59, - 0x2e5a, 0x2e61, 0x2e62, 0x2e63, 0x2e64, 0x2e65, 0x2e66, 0x436b, - 0x2e67, 0x2e68, 0x2e69, 0x436c, 0x2e6a, 0x2e6b, 0x2e6c, 0x436d, - 0x2e6d, 0x2e6e, 0x2e6f, 0x2e70, 0x2e71, 0x2e72, 0x2e73, 0x436e, - 0x436f, 0x2e74, 0x4370, 0x2e75, 0x4371, 0x2e76, 0x2e77, 0x2e78, - 0x2e79, 0x2e7a, 0x4372, 0x4373, 0x4374, 0x4375, 0x4376, 0x4377, - 0x4378, 0x4379, 0x437a, 0x2f41, 0x2f42, 0x2f43, 0x2f44, 0x437b, - 0x437c, 0x2f45, 0x437d, 0x2f46, 0x437e, 0x2f47, 0x2f48, 0x2f49, - 0x2f4a, 0x2f4b, 0x2f4c, 0x2f4d, 0x2f4e, 0x2f4f, 0x2f50, 0x2f51, - 0x2f52, 0x2f53, 0x2f54, 0x2f55, 0x2f56, 0x2f57, 0x2f58, 0x2f59, - 0x2f5a, 0x2f61, 0x2f62, 0x2f63, 0x2f64, 0x2f65, 0x2f66, 0x2f67, - 0x2f68, 0x2f69, 0x2f6a, 0x2f6b, 0x2f6c, 0x2f6d, 0x2f6e, 0x4421, - 0x4422, 0x2f6f, 0x2f70, 0x4423, 0x2f71, 0x2f72, 0x4424, 0x4425, - 0x4426, 0x2f73, 0x2f74, 0x2f75, 0x2f76, 0x2f77, 0x2f78, 0x4427, - 0x4428, 0x2f79, 0x4429, 0x2f7a, 0x442a, 0x442b, 0x442c, 0x442d, - 0x442e, 0x442f, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, - 0x4436, 0x4437, 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, - 0x443e, 0x443f, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, - 0x4446, 0x4447, 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, - 0x444e, 0x444f, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, - 0x4456, 0x4457, 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, - 0x445e, 0x445f, 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, - 0x4466, 0x4467, 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, - 0x446e, 0x446f, 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, - 0x4476, 0x4477, 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, - 0x447e, 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, - 0x4528, 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, - 0x4530, 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, - 0x4538, 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, - 0x4540, 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, - 0x4548, 0x4549, 0x454a, 0x454b, 0x454c, 0x454d, 0x454e, 0x454f, - 0x4550, 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, - 0x4558, 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, - 0x4560, 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, - 0x4568, 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, - 0x4570, 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, - 0x4578, 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x4621, - 0x4622, 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, - 0x462a, 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, 0x4630, 0x4631, - 0x4632, 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, 0x4638, 0x4639, - 0x463a, 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, 0x4640, 0x4641, - 0x4642, 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, 0x4649, - 0x464a, 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, 0x4650, 0x4651, - 0x4652, 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, - 0x465a, 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, 0x4660, 0x4661, - 0x4662, 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, 0x4668, 0x4669, - 0x466a, 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, 0x4670, 0x4671, - 0x4672, 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, 0x4678, 0x4679, - 0x467a, 0x467b, 0x467c, 0x467d, 0x467e, 0x4721, 0x4722, 0x4723, - 0x4724, 0x4725, 0x4726, 0x4727, 0x4728, 0x4729, 0x472a, 0x472b, - 0x472c, 0x472d, 0x472e, 0x472f, 0x4730, 0x4731, 0x4732, 0x4733, - 0x4734, 0x4735, 0x4736, 0x4737, 0x4738, 0x4739, 0x473a, 0x473b, - 0x473c, 0x473d, 0x473e, 0x473f, 0x4740, 0x4741, 0x4742, 0x4743, - 0x4744, 0x4745, 0x4746, 0x4747, 0x4748, 0x4749, 0x474a, 0x474b, - 0x474c, 0x474d, 0x474e, 0x474f, 0x4750, 0x4751, 0x4752, 0x4753, - 0x4754, 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475a, 0x475b, - 0x475c, 0x475d, 0x475e, 0x475f, 0x4760, 0x4761, 0x4762, 0x4763, - 0x4764, 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476a, 0x476b, - 0x476c, 0x476d, 0x476e, 0x476f, 0x4770, 0x4771, 0x4772, 0x4773, - 0x4774, 0x4775, 0x4776, 0x4777, 0x4778, 0x4779, 0x477a, 0x477b, - 0x477c, 0x477d, 0x477e, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, - 0x4826, 0x4827, 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, - 0x482e, 0x482f, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, - 0x4836, 0x4837, 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, - 0x483e, 0x483f, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, - 0x4846, 0x4847, 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x484d, - 0x484e, 0x484f, 0x4850, 0x4851, 0x4852, 0x4853, 0x4854, 0x4855, - 0x4856, 0x4857, 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, - 0x485e, 0x485f, 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, - 0x4866, 0x4867, 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, - 0x486e, 0x486f, 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, - 0x4876, 0x4877, 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, - 0x487e, 0x4b50, 0x4b56, 0x4b67, 0x4d4f, 0x4d68, 0x4e2d, 0x4f7b, - 0x5022, 0x5038, 0x5050, 0x505d, 0x5154, 0x5155, 0x5158, 0x515b, - 0x515c, 0x515d, 0x515e, 0x515f, 0x5160, 0x5162, 0x5163, 0x5164, - 0x5165, 0x5166, 0x5168, 0x5169, 0x516a, 0x516b, 0x516d, 0x516f, - 0x5170, 0x5172, 0x5176, 0x517a, 0x517c, 0x517d, 0x517e, 0x5222, - 0x5223, 0x5227, 0x5228, 0x5229, 0x522a, 0x522b, 0x522d, 0x5232, - 0x523e, 0x5242, 0x5243, 0x5244, 0x5246, 0x5247, 0x5248, 0x5249, - 0x524a, 0x524b, 0x524d, 0x524e, 0x524f, 0x5250, 0x5251, 0x5252, - 0x5253, 0x5254, 0x5255, 0x5256, 0x5257, 0x5259, 0x525a, 0x525e, - 0x525f, 0x5261, 0x5262, 0x5264, 0x5265, 0x5266, 0x5267, 0x5268, - 0x5269, 0x526a, 0x526b, 0x5270, 0x5271, 0x5272, 0x5273, 0x5274, - 0x5275, 0x5277, 0x5278, 0x5466, 0x547c, 0x5525, 0x552b, 0x552e, - 0x5638, 0x564d, 0x574b, 0x5764, 0x5b45, 0x5b64, 0x5c25, 0x5d25, - 0x5d55, 0x5d74, 0x5e7c, 0x5e7e, 0x5f33, 0x5f61, 0x5f68, 0x6071, - 0x612d, 0x616d, 0x6375, 0x6421, 0x6429, 0x652e, 0x6531, 0x6532, - 0x6539, 0x653b, 0x653c, 0x6544, 0x654e, 0x6550, 0x6552, 0x6556, - 0x657a, 0x657b, 0x657c, 0x657e, 0x6621, 0x6624, 0x6627, 0x662d, - 0x662f, 0x6630, 0x6631, 0x6633, 0x6637, 0x6638, 0x663c, 0x6644, - 0x6646, 0x6647, 0x664a, 0x6652, 0x6656, 0x6659, 0x665c, 0x665f, - 0x6661, 0x6664, 0x6665, 0x6666, 0x6668, 0x666a, 0x666b, 0x666c, - 0x666f, 0x6671, 0x6672, 0x6675, 0x6676, 0x6677, 0x6679, 0x6721, - 0x6726, 0x6729, 0x672a, 0x672c, 0x672d, 0x6730, 0x673f, 0x6741, - 0x6746, 0x6747, 0x674b, 0x674d, 0x674f, 0x6750, 0x6753, 0x675f, - 0x6764, 0x6766, 0x6777, 0x6867, 0x6868, 0x6870, 0x6871, 0x6877, - 0x6879, 0x687b, 0x687e, 0x6927, 0x692c, 0x694c, 0x6977, 0x6a41, - 0x6a65, 0x6a74, 0x6a77, 0x6a7c, 0x6a7e, 0x6b24, 0x6b27, 0x6b29, - 0x6b2a, 0x6b3a, 0x6b3b, 0x6b3d, 0x6b41, 0x6b42, 0x6b46, 0x6b47, - 0x6b4c, 0x6b4f, 0x6b50, 0x6b51, 0x6b52, 0x6b58, 0x6c26, 0x6c27, - 0x6c2a, 0x6c2f, 0x6c30, 0x6c31, 0x6c32, 0x6c35, 0x6c38, 0x6c3a, - 0x6c40, 0x6c41, 0x6c45, 0x6c46, 0x6c49, 0x6c4a, 0x6c55, 0x6c5d, - 0x6c5e, 0x6c61, 0x6c64, 0x6c67, 0x6c68, 0x6c77, 0x6c78, 0x6c7a, - 0x6d21, 0x6d22, 0x6d23, 0x6d6e, 0x6e5b, 0x723d, 0x727a, 0x7331, - 0x7427, 0x746e, 0x7674, 0x7676, 0x7738, 0x7748, 0x7753, 0x785b, - 0x7870, 0x7a21, 0x7a22, 0x7a66, 0x7c29, 0x2321, 0x2322, 0x2323, - 0x2324, 0x2325, 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 0x232b, - 0x232c, 0x232d, 0x232e, 0x232f, 0x2330, 0x2331, 0x2332, 0x2333, - 0x2334, 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x233a, 0x233b, - 0x233c, 0x233d, 0x233e, 0x233f, 0x2340, 0x2341, 0x2342, 0x2343, - 0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, - 0x234c, 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, - 0x2354, 0x2355, 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x235b, - 0x212c, 0x235d, 0x235e, 0x235f, 0x2360, 0x2361, 0x2362, 0x2363, - 0x2364, 0x2365, 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, - 0x236c, 0x236d, 0x236e, 0x236f, 0x2370, 0x2371, 0x2372, 0x2373, - 0x2374, 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x237b, - 0x237c, 0x237d, 0x2226, 0x214b, 0x214c, 0x217e, 0x237e, 0x214d, - 0x235c, + 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168, + 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f, 0x4170, + 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178, + 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x4221, 0x4222, + 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422a, + 0x422b, 0x422c, 0x422d, 0x422e, 0x422f, 0x4230, 0x4231, 0x4232, + 0x4233, 0x4234, 0x4235, 0x4236, 0x4237, 0x4238, 0x4239, 0x423a, + 0x423b, 0x423c, 0x423d, 0x423e, 0x423f, 0x4240, 0x4241, 0x4242, + 0x4243, 0x4244, 0x4245, 0x4246, 0x4247, 0x4248, 0x4249, 0x424a, + 0x424b, 0x424c, 0x424d, 0x424e, 0x424f, 0x4250, 0x4251, 0x4252, + 0x4253, 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425a, + 0x425b, 0x425c, 0x425d, 0x425e, 0x425f, 0x4260, 0x4261, 0x4262, + 0x4263, 0x4264, 0x4265, 0x4266, 0x4267, 0x4268, 0x4269, 0x426a, + 0x426b, 0x426c, 0x426d, 0x426e, 0x426f, 0x4270, 0x4271, 0x4272, + 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, 0x4278, 0x4279, 0x427a, + 0x427b, 0x427c, 0x427d, 0x427e, 0x4321, 0x4322, 0x4323, 0x4324, + 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432a, 0x432b, 0x432c, + 0x432d, 0x432e, 0x432f, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334, + 0x4335, 0x4336, 0x4337, 0x4338, 0x4339, 0x433a, 0x433b, 0x433c, + 0x433d, 0x433e, 0x433f, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, + 0x4345, 0x4346, 0x4347, 0x4348, 0x4349, 0x434a, 0x434b, 0x434c, + 0x434d, 0x434e, 0x434f, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354, + 0x4355, 0x4356, 0x4357, 0x4358, 0x4359, 0x435a, 0x435b, 0x435c, + 0x435d, 0x435e, 0x435f, 0x4360, 0x4361, 0x4362, 0x4363, 0x4364, + 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436a, 0x436b, 0x436c, + 0x436d, 0x436e, 0x436f, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374, + 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437a, 0x437b, 0x437c, + 0x437d, 0x437e, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426, + 0x4427, 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e, + 0x442f, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436, + 0x4437, 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e, + 0x443f, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446, + 0x4447, 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e, + 0x444f, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456, + 0x4457, 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e, + 0x445f, 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466, + 0x4467, 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e, + 0x446f, 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476, + 0x4477, 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e, + 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528, + 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, 0x4530, + 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538, + 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, 0x4540, + 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, 0x4548, + 0x4549, 0x454a, 0x454b, 0x454c, 0x454d, 0x454e, 0x454f, 0x4550, + 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, 0x4558, + 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, 0x4560, + 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, 0x4568, + 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, 0x4570, + 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578, + 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x4621, 0x4622, + 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462a, + 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, 0x4630, 0x4631, 0x4632, + 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, 0x4638, 0x4639, 0x463a, + 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, 0x4640, 0x4641, 0x4642, + 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, 0x4649, 0x464a, + 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, 0x4650, 0x4651, 0x4652, + 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465a, + 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, 0x4660, 0x4661, 0x4662, + 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, 0x4668, 0x4669, 0x466a, + 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, 0x4670, 0x4671, 0x4672, + 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, 0x4678, 0x4679, 0x467a, + 0x467b, 0x467c, 0x467d, 0x467e, 0x4721, 0x4722, 0x4723, 0x4724, + 0x4725, 0x4726, 0x4727, 0x4728, 0x4729, 0x472a, 0x472b, 0x472c, + 0x472d, 0x472e, 0x472f, 0x4730, 0x4731, 0x4732, 0x4733, 0x4734, + 0x4735, 0x4736, 0x4737, 0x4738, 0x4739, 0x473a, 0x473b, 0x473c, + 0x473d, 0x473e, 0x473f, 0x4740, 0x4741, 0x4742, 0x4743, 0x4744, + 0x4745, 0x4746, 0x4747, 0x4748, 0x4749, 0x474a, 0x474b, 0x474c, + 0x474d, 0x474e, 0x474f, 0x4750, 0x4751, 0x4752, 0x4753, 0x4754, + 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475a, 0x475b, 0x475c, + 0x475d, 0x475e, 0x475f, 0x4760, 0x4761, 0x4762, 0x4763, 0x4764, + 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476a, 0x476b, 0x476c, + 0x476d, 0x476e, 0x476f, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774, + 0x4775, 0x4776, 0x4777, 0x4778, 0x4779, 0x477a, 0x477b, 0x477c, + 0x477d, 0x477e, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826, + 0x4827, 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e, + 0x482f, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836, + 0x4837, 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e, + 0x483f, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846, + 0x4847, 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x484d, 0x484e, + 0x484f, 0x4850, 0x4851, 0x4852, 0x4853, 0x4854, 0x4855, 0x4856, + 0x4857, 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e, + 0x485f, 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866, + 0x4867, 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e, + 0x486f, 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876, + 0x4877, 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e, + 0x4b50, 0x4b56, 0x4b67, 0x4d4f, 0x4d68, 0x4e2d, 0x4f7b, 0x5022, + 0x5038, 0x5050, 0x505d, 0x5154, 0x5155, 0x5158, 0x515b, 0x515c, + 0x515d, 0x515e, 0x515f, 0x5160, 0x5162, 0x5163, 0x5164, 0x5165, + 0x5166, 0x5168, 0x5169, 0x516a, 0x516b, 0x516d, 0x516f, 0x5170, + 0x5172, 0x5176, 0x517a, 0x517c, 0x517d, 0x517e, 0x5222, 0x5223, + 0x5227, 0x5228, 0x5229, 0x522a, 0x522b, 0x522d, 0x5232, 0x523e, + 0x5242, 0x5243, 0x5244, 0x5246, 0x5247, 0x5248, 0x5249, 0x524a, + 0x524b, 0x524d, 0x524e, 0x524f, 0x5250, 0x5251, 0x5252, 0x5253, + 0x5254, 0x5255, 0x5256, 0x5257, 0x5259, 0x525a, 0x525e, 0x525f, + 0x5261, 0x5262, 0x5264, 0x5265, 0x5266, 0x5267, 0x5268, 0x5269, + 0x526a, 0x526b, 0x5270, 0x5271, 0x5272, 0x5273, 0x5274, 0x5275, + 0x5277, 0x5278, 0x5466, 0x547c, 0x5525, 0x552b, 0x552e, 0x5638, + 0x564d, 0x574b, 0x5764, 0x5b45, 0x5b64, 0x5c25, 0x5d25, 0x5d55, + 0x5d74, 0x5e7c, 0x5e7e, 0x5f33, 0x5f61, 0x5f68, 0x6071, 0x612d, + 0x616d, 0x6375, 0x6421, 0x6429, 0x652e, 0x6531, 0x6532, 0x6539, + 0x653b, 0x653c, 0x6544, 0x654e, 0x6550, 0x6552, 0x6556, 0x657a, + 0x657b, 0x657c, 0x657e, 0x6621, 0x6624, 0x6627, 0x662d, 0x662f, + 0x6630, 0x6631, 0x6633, 0x6637, 0x6638, 0x663c, 0x6644, 0x6646, + 0x6647, 0x664a, 0x6652, 0x6656, 0x6659, 0x665c, 0x665f, 0x6661, + 0x6664, 0x6665, 0x6666, 0x6668, 0x666a, 0x666b, 0x666c, 0x666f, + 0x6671, 0x6672, 0x6675, 0x6676, 0x6677, 0x6679, 0x6721, 0x6726, + 0x6729, 0x672a, 0x672c, 0x672d, 0x6730, 0x673f, 0x6741, 0x6746, + 0x6747, 0x674b, 0x674d, 0x674f, 0x6750, 0x6753, 0x675f, 0x6764, + 0x6766, 0x6777, 0x6867, 0x6868, 0x6870, 0x6871, 0x6877, 0x6879, + 0x687b, 0x687e, 0x6927, 0x692c, 0x694c, 0x6977, 0x6a41, 0x6a65, + 0x6a74, 0x6a77, 0x6a7c, 0x6a7e, 0x6b24, 0x6b27, 0x6b29, 0x6b2a, + 0x6b3a, 0x6b3b, 0x6b3d, 0x6b41, 0x6b42, 0x6b46, 0x6b47, 0x6b4c, + 0x6b4f, 0x6b50, 0x6b51, 0x6b52, 0x6b58, 0x6c26, 0x6c27, 0x6c2a, + 0x6c2f, 0x6c30, 0x6c31, 0x6c32, 0x6c35, 0x6c38, 0x6c3a, 0x6c40, + 0x6c41, 0x6c45, 0x6c46, 0x6c49, 0x6c4a, 0x6c55, 0x6c5d, 0x6c5e, + 0x6c61, 0x6c64, 0x6c67, 0x6c68, 0x6c77, 0x6c78, 0x6c7a, 0x6d21, + 0x6d22, 0x6d23, 0x6d6e, 0x6e5b, 0x723d, 0x727a, 0x7331, 0x7427, + 0x746e, 0x7674, 0x7676, 0x7738, 0x7748, 0x7753, 0x785b, 0x7870, + 0x7a21, 0x7a22, 0x7a66, 0x7c29, 0x2321, 0x2322, 0x2323, 0x2324, + 0x2325, 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 0x232b, 0x232c, + 0x232d, 0x232e, 0x232f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, + 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, + 0x233d, 0x233e, 0x233f, 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, + 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, + 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, + 0x2355, 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x235b, 0x212c, + 0x235d, 0x235e, 0x235f, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, + 0x2365, 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, + 0x236d, 0x236e, 0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, + 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, + 0x237d, 0x2226, 0x214b, 0x214c, 0x217e, 0x237e, 0x214d, 0x235c, }; static const Summary16 ksc5601_uni2indx_page00[70] = { @@ -2936,95 +2869,95 @@ static const Summary16 ksc5601_uni2indx_pageac[698] = { { 7130, 0x38eb }, { 7139, 0xa010 }, { 7142, 0x0102 }, { 7144, 0x3000 }, { 7146, 0x1110 }, { 7149, 0x02b0 }, { 7153, 0x0013 }, { 7156, 0x3020 }, /* 0xc900 */ - { 7159, 0xb071 }, { 7166, 0x0102 }, { 7168, 0x1000 }, { 7169, 0xfffc }, - { 7183, 0x00ff }, { 7191, 0x0113 }, { 7195, 0x100b }, { 7199, 0x1011 }, - { 7202, 0x1300 }, { 7205, 0x2b01 }, { 7210, 0x0000 }, { 7210, 0x0000 }, - { 7210, 0x0593 }, { 7216, 0x366b }, { 7225, 0xb095 }, { 7232, 0x1303 }, + { 7159, 0xb071 }, { 7166, 0x0102 }, { 7168, 0x1000 }, { 7169, 0x0010 }, + { 7170, 0x0000 }, { 7170, 0x0113 }, { 7174, 0x100b }, { 7178, 0x1011 }, + { 7181, 0x1300 }, { 7184, 0x2b01 }, { 7189, 0x0000 }, { 7189, 0x0000 }, + { 7189, 0x0593 }, { 7195, 0x366b }, { 7204, 0xb095 }, { 7211, 0x1303 }, /* 0xca00 */ - { 7237, 0x3b01 }, { 7243, 0x0110 }, { 7245, 0x0200 }, { 7246, 0x0000 }, - { 7246, 0x3000 }, { 7248, 0xb011 }, { 7253, 0x0703 }, { 7258, 0x2000 }, - { 7259, 0x0070 }, { 7262, 0x0100 }, { 7263, 0x0000 }, { 7263, 0x3000 }, - { 7265, 0xfc11 }, { 7273, 0xffff }, { 7289, 0x10ff }, { 7298, 0x0010 }, + { 7216, 0x3b01 }, { 7222, 0x0110 }, { 7224, 0x0200 }, { 7225, 0x0000 }, + { 7225, 0x3000 }, { 7227, 0xb011 }, { 7232, 0x0103 }, { 7235, 0x2000 }, + { 7236, 0x0010 }, { 7237, 0x0100 }, { 7238, 0x0000 }, { 7238, 0x3000 }, + { 7240, 0xb011 }, { 7245, 0x030a }, { 7249, 0x1001 }, { 7251, 0x0010 }, /* 0xcb00 */ - { 7299, 0x0100 }, { 7300, 0x0111 }, { 7303, 0x0003 }, { 7305, 0xfe00 }, - { 7312, 0x131f }, { 7320, 0x2301 }, { 7324, 0x0010 }, { 7325, 0x0300 }, - { 7327, 0x0000 }, { 7327, 0x1000 }, { 7328, 0x0000 }, { 7328, 0x0100 }, - { 7329, 0x0000 }, { 7329, 0x0010 }, { 7330, 0x0290 }, { 7333, 0x0000 }, + { 7252, 0x0100 }, { 7253, 0x0111 }, { 7256, 0x0003 }, { 7258, 0x0000 }, + { 7258, 0x1302 }, { 7262, 0x2301 }, { 7266, 0x0010 }, { 7267, 0x0300 }, + { 7269, 0x0000 }, { 7269, 0x1000 }, { 7270, 0x0000 }, { 7270, 0x0100 }, + { 7271, 0x0000 }, { 7271, 0x0010 }, { 7272, 0x0290 }, { 7275, 0x0000 }, /* 0xcc00 */ - { 7333, 0x3000 }, { 7335, 0x3011 }, { 7339, 0x5386 }, { 7346, 0x7b01 }, - { 7353, 0x1130 }, { 7357, 0x03b0 }, { 7362, 0xf951 }, { 7371, 0x0027 }, - { 7375, 0x0000 }, { 7375, 0x1300 }, { 7378, 0x3b01 }, { 7384, 0x1130 }, - { 7388, 0x02b0 }, { 7392, 0x0791 }, { 7398, 0x1010 }, { 7400, 0x8001 }, + { 7275, 0x3000 }, { 7277, 0x3011 }, { 7281, 0x5386 }, { 7288, 0x7b01 }, + { 7295, 0x1130 }, { 7299, 0x03b0 }, { 7304, 0x0151 }, { 7308, 0x0021 }, + { 7310, 0x0000 }, { 7310, 0x1300 }, { 7313, 0x3b01 }, { 7319, 0x1130 }, + { 7323, 0x02b0 }, { 7327, 0x0011 }, { 7329, 0x1010 }, { 7331, 0x0001 }, /* 0xcd00 */ - { 7402, 0xffff }, { 7418, 0x2b07 }, { 7425, 0x1110 }, { 7428, 0x7fe0 }, - { 7438, 0x0000 }, { 7438, 0x1000 }, { 7439, 0xffff }, { 7455, 0xffff }, - { 7471, 0xffff }, { 7487, 0xffff }, { 7503, 0x02b0 }, { 7507, 0x0001 }, - { 7508, 0xffd0 }, { 7519, 0xffff }, { 7535, 0xffff }, { 7551, 0xffff }, + { 7332, 0x1302 }, { 7336, 0x2b01 }, { 7341, 0x1110 }, { 7344, 0x0200 }, + { 7345, 0x0000 }, { 7345, 0x1000 }, { 7346, 0xb011 }, { 7351, 0x0102 }, + { 7353, 0x0100 }, { 7354, 0x1130 }, { 7358, 0x02b0 }, { 7362, 0x0001 }, + { 7363, 0x1010 }, { 7365, 0x0001 }, { 7366, 0x1100 }, { 7368, 0x2b01 }, /* 0xce00 */ - { 7567, 0x1117 }, { 7573, 0x0210 }, { 7575, 0xf113 }, { 7583, 0xffff }, - { 7599, 0xffff }, { 7615, 0xffff }, { 7631, 0x3fff }, { 7645, 0x1130 }, - { 7649, 0x02b0 }, { 7653, 0x0113 }, { 7657, 0x303b }, { 7664, 0x0000 }, - { 7664, 0x0002 }, { 7665, 0x0000 }, { 7665, 0x1930 }, { 7670, 0x03b0 }, + { 7373, 0x1110 }, { 7376, 0x0210 }, { 7378, 0x0113 }, { 7382, 0x002b }, + { 7386, 0x0000 }, { 7386, 0x9300 }, { 7390, 0x2b03 }, { 7396, 0x1130 }, + { 7400, 0x02b0 }, { 7404, 0x0113 }, { 7408, 0x303b }, { 7415, 0x0000 }, + { 7415, 0x0002 }, { 7416, 0x0000 }, { 7416, 0x1930 }, { 7421, 0x03b0 }, /* 0xcf00 */ - { 7675, 0x0113 }, { 7679, 0x102b }, { 7684, 0xb011 }, { 7689, 0x0103 }, - { 7692, 0x0000 }, { 7692, 0x1130 }, { 7696, 0x02b0 }, { 7700, 0x0113 }, - { 7704, 0x1021 }, { 7707, 0x0000 }, { 7707, 0x0102 }, { 7709, 0x0001 }, - { 7710, 0x0010 }, { 7711, 0x0000 }, { 7711, 0x0113 }, { 7715, 0x102b }, + { 7426, 0x0113 }, { 7430, 0x102b }, { 7435, 0xb011 }, { 7440, 0x0103 }, + { 7443, 0x0000 }, { 7443, 0x1130 }, { 7447, 0x02b0 }, { 7451, 0x0113 }, + { 7455, 0x1021 }, { 7458, 0x0000 }, { 7458, 0x0102 }, { 7460, 0x0001 }, + { 7461, 0x0010 }, { 7462, 0x0000 }, { 7462, 0x0113 }, { 7466, 0x102b }, /* 0xd000 */ - { 7720, 0x0011 }, { 7722, 0x0102 }, { 7724, 0x2000 }, { 7725, 0x1130 }, - { 7729, 0x02b0 }, { 7733, 0x0111 }, { 7736, 0x3001 }, { 7739, 0x3011 }, - { 7743, 0x0002 }, { 7744, 0x0000 }, { 7744, 0x1130 }, { 7748, 0x02b0 }, - { 7752, 0x0313 }, { 7757, 0x303b }, { 7764, 0xb011 }, { 7769, 0x0103 }, + { 7471, 0x0011 }, { 7473, 0x0102 }, { 7475, 0x2000 }, { 7476, 0x1130 }, + { 7480, 0x02b0 }, { 7484, 0x0111 }, { 7487, 0x3001 }, { 7490, 0x3011 }, + { 7494, 0x0002 }, { 7495, 0x0000 }, { 7495, 0x1130 }, { 7499, 0x02b0 }, + { 7503, 0x0313 }, { 7508, 0x303b }, { 7515, 0xb011 }, { 7520, 0x0103 }, /* 0xd100 */ - { 7772, 0x2000 }, { 7773, 0x0000 }, { 7773, 0x0000 }, { 7773, 0x0513 }, - { 7778, 0x303b }, { 7785, 0xb011 }, { 7790, 0x1102 }, { 7793, 0x1000 }, - { 7794, 0x0110 }, { 7796, 0x0000 }, { 7796, 0x0113 }, { 7800, 0x142b }, - { 7806, 0x0001 }, { 7807, 0x0100 }, { 7808, 0x0000 }, { 7808, 0x0110 }, + { 7523, 0x2000 }, { 7524, 0x0000 }, { 7524, 0x0000 }, { 7524, 0x0513 }, + { 7529, 0x303b }, { 7536, 0xb011 }, { 7541, 0x1102 }, { 7544, 0x1000 }, + { 7545, 0x0110 }, { 7547, 0x0000 }, { 7547, 0x0113 }, { 7551, 0x142b }, + { 7557, 0x0001 }, { 7558, 0x0100 }, { 7559, 0x0000 }, { 7559, 0x0110 }, /* 0xd200 */ - { 7810, 0x0280 }, { 7812, 0x0001 }, { 7813, 0x3000 }, { 7815, 0xb011 }, - { 7820, 0x0102 }, { 7822, 0x1000 }, { 7823, 0x0010 }, { 7824, 0x0000 }, - { 7824, 0x0113 }, { 7828, 0x1023 }, { 7832, 0x1011 }, { 7835, 0x9302 }, - { 7840, 0x0b05 }, { 7845, 0x1110 }, { 7848, 0x0030 }, { 7850, 0x0113 }, + { 7561, 0x0280 }, { 7563, 0x0001 }, { 7564, 0x3000 }, { 7566, 0xb011 }, + { 7571, 0x0102 }, { 7573, 0x1000 }, { 7574, 0x0010 }, { 7575, 0x0000 }, + { 7575, 0x0113 }, { 7579, 0x1023 }, { 7583, 0x1011 }, { 7586, 0x9302 }, + { 7591, 0x0b05 }, { 7596, 0x1110 }, { 7599, 0x0030 }, { 7601, 0x0113 }, /* 0xd300 */ - { 7854, 0x702b }, { 7861, 0xb051 }, { 7867, 0x1323 }, { 7873, 0x3b01 }, - { 7879, 0x0030 }, { 7881, 0x0000 }, { 7881, 0x0000 }, { 7881, 0x3000 }, - { 7883, 0xb011 }, { 7888, 0x1303 }, { 7893, 0x2b01 }, { 7898, 0x1110 }, - { 7901, 0x0330 }, { 7905, 0x0101 }, { 7907, 0x300a }, { 7911, 0xb011 }, + { 7605, 0x702b }, { 7612, 0xb051 }, { 7618, 0x1323 }, { 7624, 0x3b01 }, + { 7630, 0x0030 }, { 7632, 0x0000 }, { 7632, 0x0000 }, { 7632, 0x3000 }, + { 7634, 0xb011 }, { 7639, 0x1303 }, { 7644, 0x2b01 }, { 7649, 0x1110 }, + { 7652, 0x0330 }, { 7656, 0x0101 }, { 7658, 0x300a }, { 7662, 0xb011 }, /* 0xd400 */ - { 7916, 0x0102 }, { 7918, 0x2000 }, { 7919, 0x0000 }, { 7919, 0x0000 }, - { 7919, 0x0011 }, { 7921, 0x1000 }, { 7922, 0xa011 }, { 7926, 0x9300 }, - { 7930, 0x2b05 }, { 7936, 0x0010 }, { 7937, 0x0200 }, { 7938, 0x0000 }, - { 7938, 0x1000 }, { 7939, 0x9011 }, { 7943, 0x1100 }, { 7945, 0x2901 }, + { 7667, 0x0102 }, { 7669, 0x2000 }, { 7670, 0x0000 }, { 7670, 0x0000 }, + { 7670, 0x0011 }, { 7672, 0x1000 }, { 7673, 0xa011 }, { 7677, 0x9300 }, + { 7681, 0x2b05 }, { 7687, 0x0010 }, { 7688, 0x0200 }, { 7689, 0x0000 }, + { 7689, 0x1000 }, { 7690, 0x9011 }, { 7694, 0x1100 }, { 7696, 0x2901 }, /* 0xd500 */ - { 7949, 0x1110 }, { 7952, 0x00b0 }, { 7955, 0x0000 }, { 7955, 0x3000 }, - { 7957, 0xb011 }, { 7962, 0x1302 }, { 7966, 0x2b21 }, { 7972, 0x1130 }, - { 7976, 0x03b0 }, { 7981, 0x0001 }, { 7982, 0x0020 }, { 7983, 0x0000 }, - { 7983, 0x1300 }, { 7986, 0x2b05 }, { 7992, 0x1130 }, { 7996, 0x02b0 }, + { 7700, 0x1110 }, { 7703, 0x00b0 }, { 7706, 0x0000 }, { 7706, 0x3000 }, + { 7708, 0xb011 }, { 7713, 0x1302 }, { 7717, 0x2b21 }, { 7723, 0x1130 }, + { 7727, 0x03b0 }, { 7732, 0x0001 }, { 7733, 0x0020 }, { 7734, 0x0000 }, + { 7734, 0x1300 }, { 7737, 0x2b05 }, { 7743, 0x1130 }, { 7747, 0x02b0 }, /* 0xd600 */ - { 8000, 0x0113 }, { 8004, 0x103b }, { 8010, 0x2011 }, { 8013, 0x1300 }, - { 8016, 0x2b21 }, { 8022, 0x1132 }, { 8027, 0x0280 }, { 8029, 0x0013 }, - { 8032, 0x3028 }, { 8036, 0xa011 }, { 8040, 0x1102 }, { 8043, 0x0a01 }, - { 8046, 0x1130 }, { 8050, 0x0292 }, { 8054, 0x0111 }, { 8057, 0x3021 }, + { 7751, 0x0113 }, { 7755, 0x103b }, { 7761, 0x2011 }, { 7764, 0x1300 }, + { 7767, 0x2b21 }, { 7773, 0x1132 }, { 7778, 0x0280 }, { 7780, 0x0013 }, + { 7783, 0x3028 }, { 7787, 0xa011 }, { 7791, 0x1102 }, { 7794, 0x0a01 }, + { 7797, 0x1130 }, { 7801, 0x0292 }, { 7805, 0x0111 }, { 7808, 0x3021 }, /* 0xd700 */ - { 8061, 0x0011 }, { 8063, 0x1302 }, { 8067, 0x2b01 }, { 8072, 0x1130 }, - { 8076, 0x0290 }, { 8079, 0x03d3 }, { 8086, 0x122b }, { 8092, 0x3011 }, - { 8096, 0x1302 }, { 8100, 0x2b01 }, + { 7812, 0x0011 }, { 7814, 0x1302 }, { 7818, 0x2b01 }, { 7823, 0x1130 }, + { 7827, 0x0290 }, { 7830, 0x03d3 }, { 7837, 0x122b }, { 7843, 0x3011 }, + { 7847, 0x1302 }, { 7851, 0x2b01 }, }; static const Summary16 ksc5601_uni2indx_pagef9[17] = { /* 0xf900 */ - { 8105, 0xffff }, { 8121, 0xffff }, { 8137, 0xffff }, { 8153, 0xffff }, - { 8169, 0xffff }, { 8185, 0xffff }, { 8201, 0xffff }, { 8217, 0xffff }, - { 8233, 0xffff }, { 8249, 0xffff }, { 8265, 0xffff }, { 8281, 0xffff }, - { 8297, 0xffff }, { 8313, 0xffff }, { 8329, 0xffff }, { 8345, 0xffff }, + { 7856, 0xffff }, { 7872, 0xffff }, { 7888, 0xffff }, { 7904, 0xffff }, + { 7920, 0xffff }, { 7936, 0xffff }, { 7952, 0xffff }, { 7968, 0xffff }, + { 7984, 0xffff }, { 8000, 0xffff }, { 8016, 0xffff }, { 8032, 0xffff }, + { 8048, 0xffff }, { 8064, 0xffff }, { 8080, 0xffff }, { 8096, 0xffff }, /* 0xfa00 */ - { 8361, 0x0fff }, + { 8112, 0x0fff }, }; static const Summary16 ksc5601_uni2indx_pageff[15] = { /* 0xff00 */ - { 8373, 0xfffe }, { 8388, 0xffff }, { 8404, 0xffff }, { 8420, 0xffff }, - { 8436, 0xffff }, { 8452, 0x7fff }, { 8467, 0x0000 }, { 8467, 0x0000 }, - { 8467, 0x0000 }, { 8467, 0x0000 }, { 8467, 0x0000 }, { 8467, 0x0000 }, - { 8467, 0x0000 }, { 8467, 0x0000 }, { 8467, 0x006f }, + { 8124, 0xfffe }, { 8139, 0xffff }, { 8155, 0xffff }, { 8171, 0xffff }, + { 8187, 0xffff }, { 8203, 0x7fff }, { 8218, 0x0000 }, { 8218, 0x0000 }, + { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 }, + { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x006f }, }; static int diff --git a/libiconv/tis620.h b/libiconv/tis620.h index 830834b..90547e3 100644 --- a/libiconv/tis620.h +++ b/libiconv/tis620.h @@ -3,27 +3,6 @@ * TIS620.2533-1 */ -static const unsigned short tis620_2uni[96] = { - /* 0xa0 */ - 0xfffd, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, - 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, - /* 0xb0 */ - 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, - 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, - /* 0xc0 */ - 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, - 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, - /* 0xd0 */ - 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, - 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f, - /* 0xe0 */ - 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, - 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, - /* 0xf0 */ - 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, - 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -}; - static int tis620_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) { @@ -32,45 +11,22 @@ tis620_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) *pwc = (wchar_t) c; return 1; } - else if (c < 0xa0) { - } - else { - unsigned short wc = tis620_2uni[c-0xa0]; - if (wc != 0xfffd) { - *pwc = (wchar_t) wc; - return 1; - } + else if (c >= 0xa1 && c <= 0xfb && !(c >= 0xdb && c <= 0xde)) { + *pwc = (wchar_t) (c + 0x0d60); + return 1; } return RET_ILSEQ; } -static const unsigned char tis620_page0e[96] = { - 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */ - 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */ - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */ - 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */ - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */ - 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */ - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */ - 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */ - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */ - 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */ - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */ - 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ -}; - static int tis620_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) { - unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } - else if (wc >= 0x0e00 && wc < 0x0e60) - c = tis620_page0e[wc-0x0e00]; - if (c != 0) { - *r = c; + else if (wc >= 0x0e01 && wc <= 0x0e5b && !(wc >= 0x0e3b && wc <= 0x0e3e)) { + *r = wc-0x0d60; return 1; } return RET_ILSEQ; diff --git a/libiconv/translit.h b/libiconv/translit.h new file mode 100644 index 0000000..11752c0 --- /dev/null +++ b/libiconv/translit.h @@ -0,0 +1,438 @@ + +/* + * Transliteration table + */ + +static const unsigned char translit_data[754] = { + 1, ' ', + 1, '!', + 1, 'c', + 2, 'l', 'b', + 3, 'y', 'e', 'n', + 1, '|', + 2, 'S', 'S', + 1, '"', + 3, '(', 'c', ')', + 1, 'a', + 2, '<', '<', + 3, 'n', 'o', 't', + 1, '-', + 3, '(', 'R', ')', + 2, '^', '0', + 3, '+', '/', '-', + 2, '^', '2', + 2, '^', '3', + 1,'\'', + 1, 'u', + 1, 'P', + 1, '.', + 1, ',', + 2, '^', '1', + 1, 'o', + 2, '>', '>', + 3, '1', '/', '4', + 3, '1', '/', '2', + 3, '3', '/', '4', + 1, '?', + 2, '`', 'A', + 2, '´', 'A', + 2, '^', 'A', + 2, '~', 'A', + 2, '"', 'A', + 1, 'A', + 2, 'A', 'E', + 1, 'C', + 2, '`', 'E', + 2, '´', 'E', + 2, '^', 'E', + 2, '"', 'E', + 2, '`', 'I', + 2, '´', 'I', + 2, '^', 'I', + 2, '"', 'I', + 1, 'D', + 2, '~', 'N', + 2, '`', 'O', + 2, '´', 'O', + 2, '^', 'O', + 2, '~', 'O', + 2, '"', 'O', + 1, 'x', + 1, 'O', + 2, '`', 'U', + 2, '´', 'U', + 2, '^', 'U', + 2, '"', 'U', + 2, '´', 'Y', + 2, 'T', 'h', + 2, 's', 's', + 2, '`', 'a', + 2, '´', 'a', + 2, '^', 'a', + 2, '~', 'a', + 2, '"', 'a', + 1, 'a', + 2, 'a', 'e', + 1, 'c', + 2, '`', 'e', + 2, '´', 'e', + 2, '^', 'e', + 2, '"', 'e', + 2, '`', 'i', + 2, '´', 'i', + 2, '^', 'i', + 2, '"', 'i', + 1, 'd', + 2, '~', 'n', + 2, '`', 'o', + 2, '´', 'o', + 2, '^', 'o', + 2, '~', 'o', + 2, '"', 'o', + 1, ':', + 1, 'o', + 2, '`', 'u', + 2, '´', 'u', + 2, '^', 'u', + 2, '"', 'u', + 2, '´', 'y', + 2, 't', 'h', + 2, '"', 'y', + 1, 'A', + 1, 'a', + 1, 'A', + 1, 'a', + 1, 'A', + 1, 'a', + 2, '´', 'C', + 2, '´', 'c', + 2, '^', 'C', + 2, '^', 'c', + 1, 'C', + 1, 'c', + 1, 'C', + 1, 'c', + 1, 'D', + 1, 'd', + 1, 'D', + 1, 'd', + 1, 'E', + 1, 'e', + 1, 'E', + 1, 'e', + 1, 'E', + 1, 'e', + 1, 'E', + 1, 'e', + 1, 'E', + 1, 'e', + 2, '^', 'G', + 2, '^', 'g', + 1, 'G', + 1, 'g', + 1, 'G', + 1, 'g', + 1, 'G', + 1, 'g', + 2, '^', 'H', + 2, '^', 'h', + 1, 'H', + 1, 'h', + 2, '~', 'I', + 2, '~', 'i', + 1, 'I', + 1, 'i', + 1, 'I', + 1, 'i', + 1, 'I', + 1, 'i', + 1, 'I', + 1, 'i', + 2, 'I', 'J', + 2, 'i', 'j', + 2, '^', 'J', + 2, '^', 'j', + 1, 'K', + 1, 'k', + 1, 'L', + 1, 'l', + 1, 'L', + 1, 'l', + 1, 'L', + 1, 'l', + 1, 'L', + 1, 'l', + 1, 'L', + 1, 'l', + 2, '´', 'N', + 2, '´', 'n', + 1, 'N', + 1, 'n', + 1, 'N', + 1, 'n', + 2,'\'', 'n', + 1, 'O', + 1, 'o', + 1, 'O', + 1, 'o', + 2, '"', 'O', + 2, '"', 'o', + 2, 'O', 'E', + 2, 'o', 'e', + 2, '´', 'R', + 2, '´', 'r', + 1, 'R', + 1, 'r', + 1, 'R', + 1, 'r', + 2, '´', 'S', + 2, '´', 's', + 2, '^', 'S', + 2, '^', 's', + 1, 'S', + 1, 's', + 1, 'S', + 1, 's', + 1, 'T', + 1, 't', + 1, 'T', + 1, 't', + 1, 'T', + 1, 't', + 2, '~', 'U', + 2, '~', 'u', + 1, 'U', + 1, 'u', + 1, 'U', + 1, 'u', + 1, 'U', + 1, 'u', + 2, '"', 'U', + 2, '"', 'u', + 1, 'U', + 1, 'u', + 2, '^', 'W', + 2, '^', 'w', + 2, '^', 'Y', + 2, '^', 'y', + 2, '"', 'Y', + 2, '´', 'Z', + 2, '´', 'z', + 1, 'Z', + 1, 'z', + 1, 'Z', + 1, 'z', + 1, 'S', + 1, 'f', + 1, 'S', + 1, 's', + 1, 'T', + 1, 't', + 1, '^', + 1, '~', + 1, '"', + 1, 'B', + 1, 'b', + 1, 'D', + 1, 'd', + 1, 'F', + 1, 'f', + 1, 'M', + 1, 'm', + 1, 'P', + 1, 'p', + 1, 'S', + 1, 's', + 1, 'T', + 1, 't', + 2, '`', 'W', + 2, '`', 'w', + 2, '´', 'W', + 2, '´', 'w', + 2, '"', 'W', + 2, '"', 'w', + 2, '`', 'Y', + 2, '`', 'y', + 1, '-', + 1, '-', + 1, '-', + 1, '-', + 1, '-', + 1, '-', + 1, '"', + 1, '"', + 1, '"', + 1, '+', + 1, 'o', + 3, '.', '.', '.', + 4, 'o', '/', 'o', 'o', + 1, '´', + 2, '´', '´', + 3, '´', '´', '´', + 1, '<', + 1, '>', + 3, 'E', 'U', 'R', + 3, 'N', 'o', '.', + 2, 'T', 'M', + 3, 'O', 'h', 'm', + 3, '1', '/', '8', + 3, '3', '/', '8', + 3, '5', '/', '8', + 3, '7', '/', '8', + 2, '<', '-', + 1, '^', + 2, '-', '>', + 1, 'V', + 2, '<', '=', + 2, '=', '>', + 1, '-', + 1, '/', + 2, '/', '=', + 2, '<', '=', + 2, '>', '=', + 2, '<', '<', + 2, '>', '>', + 1, '-', + 1, '|', + 1, '+', + 1, '+', + 1, '+', + 1, '+', + 1, '+', + 1, '+', + 1, '+', + 1, '+', + 1, '+', +}; + +static const short translit_page00[248] = { + 0, 2, 4, 6, -1, 9, 13, 15, /* 0xa0-0xa7 */ + 18, 20, 24, 26, 29, 33, 35, -1, /* 0xa8-0xaf */ + 39, 42, 46, 49, 52, 54, 56, 58, /* 0xb0-0xb7 */ + 60, 62, 65, 67, 70, 74, 78, 82, /* 0xb8-0xbf */ + 84, 87, 90, 93, 96, 99, 101, 104, /* 0xc0-0xc7 */ + 106, 109, 112, 115, 118, 121, 124, 127, /* 0xc8-0xcf */ + 130, 132, 135, 138, 141, 144, 147, 150, /* 0xd0-0xd7 */ + 152, 154, 157, 160, 163, 166, 169, 172, /* 0xd8-0xdf */ + 175, 178, 181, 184, 187, 190, 192, 195, /* 0xe0-0xe7 */ + 197, 200, 203, 206, 209, 212, 215, 218, /* 0xe8-0xef */ + 221, 223, 226, 229, 232, 235, 238, 241, /* 0xf0-0xf7 */ + 243, 245, 248, 251, 254, 257, 260, 263, /* 0xf8-0xff */ + /* 0x0100 */ + 266, 268, 270, 272, 274, 276, 278, 281, /* 0x00-0x07 */ + 284, 287, 290, 292, 294, 296, 298, 300, /* 0x08-0x0f */ + 302, 304, 306, 308, 310, 312, 314, 316, /* 0x10-0x17 */ + 318, 320, 322, 324, 326, 329, 332, 334, /* 0x18-0x1f */ + 336, 338, 340, 342, 344, 347, 350, 352, /* 0x20-0x27 */ + 354, 357, 360, 362, 364, 366, 368, 370, /* 0x28-0x2f */ + 372, 374, 376, 379, 382, 385, 388, 390, /* 0x30-0x37 */ + -1, 392, 394, 396, 398, 400, 402, 404, /* 0x38-0x3f */ + 406, 408, 410, 412, 415, 418, 420, 422, /* 0x40-0x47 */ + 424, 426, -1, -1, 429, 431, 433, 435, /* 0x48-0x4f */ + 437, 440, 443, 446, 449, 452, 455, 457, /* 0x50-0x57 */ + 459, 461, 463, 466, 469, 472, 475, 477, /* 0x58-0x5f */ + 479, 481, 483, 485, 487, 489, 491, 493, /* 0x60-0x67 */ + 495, 498, 501, 503, 505, 507, 509, 511, /* 0x68-0x6f */ + 513, 516, 519, 521, 523, 526, 529, 532, /* 0x70-0x77 */ + 535, 538, 541, 544, 546, 548, 550, 552, /* 0x78-0x7f */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x80-0x87 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x88-0x8f */ + -1, -1, 554, -1, -1, -1, -1, -1, /* 0x90-0x97 */ +}; +static const short translit_page02[8] = { + 556, 558, 560, 562, -1, -1, -1, -1, /* 0x18-0x1f */ +}; +static const short translit_page02_1[32] = { + -1, -1, -1, -1, -1, -1, 564, -1, /* 0xc0-0xc7 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0xc8-0xcf */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0xd0-0xd7 */ + -1, -1, -1, -1, 566, 568, -1, -1, /* 0xd8-0xdf */ +}; +static const short translit_page1e[136] = { + -1, -1, 570, 572, -1, -1, -1, -1, /* 0x00-0x07 */ + -1, -1, 574, 576, -1, -1, -1, -1, /* 0x08-0x0f */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x10-0x17 */ + -1, -1, -1, -1, -1, -1, 578, 580, /* 0x18-0x1f */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x20-0x27 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x28-0x2f */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x30-0x37 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x38-0x3f */ + 582, 584, -1, -1, -1, -1, -1, -1, /* 0x40-0x47 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x48-0x4f */ + -1, -1, -1, -1, -1, -1, 586, 588, /* 0x50-0x57 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x58-0x5f */ + 590, 592, -1, -1, -1, -1, -1, -1, /* 0x60-0x67 */ + -1, -1, 594, 596, -1, -1, -1, -1, /* 0x68-0x6f */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x70-0x77 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x78-0x7f */ + 598, 601, 604, 607, 610, 613, -1, -1, /* 0x80-0x87 */ +}; +static const short translit_page1e_2[8] = { + -1, -1, 616, 619, -1, -1, -1, -1, /* 0xf0-0xf7 */ +}; +static const short translit_page20[48] = { + 622, 624, 626, 628, 630, 632, -1, -1, /* 0x10-0x17 */ + -1, -1, -1, -1, 634, 636, 638, -1, /* 0x18-0x1f */ + 640, -1, 642, -1, -1, -1, 644, -1, /* 0x20-0x27 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x28-0x2f */ + 648, -1, 653, 655, 658, -1, -1, -1, /* 0x30-0x37 */ + -1, 662, 664, -1, -1, -1, -1, -1, /* 0x38-0x3f */ +}; +static const short translit_page21[200] = { + -1, -1, -1, -1, -1, -1, 670, -1, /* 0x10-0x17 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x18-0x1f */ + -1, -1, 674, -1, -1, -1, 677, -1, /* 0x20-0x27 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x28-0x2f */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x30-0x37 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x38-0x3f */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x40-0x47 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x48-0x4f */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x50-0x57 */ + -1, -1, -1, 681, 685, 689, 693, -1, /* 0x58-0x5f */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x60-0x67 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x68-0x6f */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x70-0x77 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x78-0x7f */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x80-0x87 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x88-0x8f */ + 697, 700, 702, 705, -1, -1, -1, -1, /* 0x90-0x97 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0x98-0x9f */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0xa0-0xa7 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0xa8-0xaf */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0xb0-0xb7 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0xb8-0xbf */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0xc0-0xc7 */ + -1, -1, -1, -1, -1, -1, -1, -1, /* 0xc8-0xcf */ + 707, -1, 710, -1, -1, -1, -1, -1, /* 0xd0-0xd7 */ +}; +static const short translit_page22[8] = { + -1, -1, 713, -1, -1, 715, -1, -1, /* 0x10-0x17 */ +}; +static const short translit_page22_3[16] = { + 717, -1, -1, -1, 720, 723, -1, -1, /* 0x60-0x67 */ + -1, -1, 726, 729, -1, -1, -1, -1, /* 0x68-0x6f */ +}; +static const short translit_page25[64] = { + 732, -1, 734, -1, -1, -1, -1, -1, /* 0x00-0x07 */ + -1, -1, -1, -1, 736, -1, -1, -1, /* 0x08-0x0f */ + 738, -1, -1, -1, 740, -1, -1, -1, /* 0x10-0x17 */ + 742, -1, -1, -1, 744, -1, -1, -1, /* 0x18-0x1f */ + -1, -1, -1, -1, 746, -1, -1, -1, /* 0x20-0x27 */ + -1, -1, -1, -1, 748, -1, -1, -1, /* 0x28-0x2f */ + -1, -1, -1, -1, 750, -1, -1, -1, /* 0x30-0x37 */ + -1, -1, -1, -1, 752, -1, -1, -1, /* 0x38-0x3f */ +}; + +#define translit_index(wc) \ + (wc >= 0x00a0 && wc < 0x0198 ? translit_page00[wc-0x00a0] : \ + wc >= 0x0218 && wc < 0x0220 ? translit_page02[wc-0x0218] : \ + wc >= 0x02c0 && wc < 0x02e0 ? translit_page02_1[wc-0x02c0] : \ + wc >= 0x1e00 && wc < 0x1e88 ? translit_page1e[wc-0x1e00] : \ + wc >= 0x1ef0 && wc < 0x1ef8 ? translit_page1e_2[wc-0x1ef0] : \ + wc >= 0x2010 && wc < 0x2040 ? translit_page20[wc-0x2010] : \ + wc == 0x20ac ? 666 : \ + wc >= 0x2110 && wc < 0x21d8 ? translit_page21[wc-0x2110] : \ + wc >= 0x2210 && wc < 0x2218 ? translit_page22[wc-0x2210] : \ + wc >= 0x2260 && wc < 0x2270 ? translit_page22_3[wc-0x2260] : \ + wc >= 0x2500 && wc < 0x2540 ? translit_page25[wc-0x2500] : \ + -1) diff --git a/libiconv/ucs2be.h b/libiconv/ucs2be.h new file mode 100644 index 0000000..092ab49 --- /dev/null +++ b/libiconv/ucs2be.h @@ -0,0 +1,27 @@ +/* + * UCS-2BE = UCS-2 big endian + */ + +static int +ucs2be_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + if (n >= 2) { + *pwc = (s[0] << 8) + s[1]; + return 2; + } + return RET_TOOFEW(0); +} + +static int +ucs2be_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + if (wc < 0x10000) { + if (n >= 2) { + r[0] = (unsigned char) (wc >> 8); + r[1] = (unsigned char) wc; + return 2; + } else + return RET_TOOSMALL; + } + return RET_ILSEQ; +} diff --git a/libiconv/ucs2le.h b/libiconv/ucs2le.h new file mode 100644 index 0000000..ba2e119 --- /dev/null +++ b/libiconv/ucs2le.h @@ -0,0 +1,27 @@ +/* + * UCS-2LE = UCS-2 little endian + */ + +static int +ucs2le_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + if (n >= 2) { + *pwc = s[0] + (s[1] << 8); + return 2; + } + return RET_TOOFEW(0); +} + +static int +ucs2le_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + if (wc < 0x10000) { + if (n >= 2) { + r[0] = (unsigned char) wc; + r[1] = (unsigned char) (wc >> 8); + return 2; + } else + return RET_TOOSMALL; + } + return RET_ILSEQ; +} diff --git a/libiconv/ucs2swapped.h b/libiconv/ucs2swapped.h index 5aea47c..b733f8f 100644 --- a/libiconv/ucs2swapped.h +++ b/libiconv/ucs2swapped.h @@ -28,20 +28,3 @@ ucs2swapped_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) } else return RET_ILSEQ; } - -/* - * UCS-2-BE = UCS-2 big endian, with machine dependent alignment - * UCS-2-LE = UCS-2 little endian, with machine dependent alignment - */ - -#ifdef WORDS_LITTLEENDIAN -#define ucs2be_mbtowc ucs2swapped_mbtowc -#define ucs2be_wctomb ucs2swapped_wctomb -#define ucs2le_mbtowc ucs2internal_mbtowc -#define ucs2le_wctomb ucs2internal_wctomb -#else -#define ucs2be_mbtowc ucs2internal_mbtowc -#define ucs2be_wctomb ucs2internal_wctomb -#define ucs2le_mbtowc ucs2swapped_mbtowc -#define ucs2le_wctomb ucs2swapped_wctomb -#endif diff --git a/libiconv/ucs4be.h b/libiconv/ucs4be.h new file mode 100644 index 0000000..6e85be7 --- /dev/null +++ b/libiconv/ucs4be.h @@ -0,0 +1,26 @@ +/* + * UCS-4BE = UCS-4 big endian + */ + +static int +ucs4be_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + if (n >= 4) { + *pwc = (s[0] << 24) + (s[1] << 16) + (s[2] << 8) + s[3]; + return 4; + } + return RET_TOOFEW(0); +} + +static int +ucs4be_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + if (n >= 4) { + r[0] = (unsigned char) (wc >> 24); + r[1] = (unsigned char) (wc >> 16); + r[2] = (unsigned char) (wc >> 8); + r[3] = (unsigned char) wc; + return 4; + } else + return RET_TOOSMALL; +} diff --git a/libiconv/ucs4le.h b/libiconv/ucs4le.h new file mode 100644 index 0000000..285a77b --- /dev/null +++ b/libiconv/ucs4le.h @@ -0,0 +1,26 @@ +/* + * UCS-4LE = UCS-4 little endian + */ + +static int +ucs4le_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + if (n >= 4) { + *pwc = s[0] + (s[1] << 8) + (s[2] << 16) + (s[3] << 24); + return 4; + } + return RET_TOOFEW(0); +} + +static int +ucs4le_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + if (n >= 4) { + r[0] = (unsigned char) wc; + r[1] = (unsigned char) (wc >> 8); + r[2] = (unsigned char) (wc >> 16); + r[3] = (unsigned char) (wc >> 24); + return 4; + } else + return RET_TOOSMALL; +} diff --git a/libiconv/ucs4swapped.h b/libiconv/ucs4swapped.h index 9f408bd..89f2314 100644 --- a/libiconv/ucs4swapped.h +++ b/libiconv/ucs4swapped.h @@ -25,20 +25,3 @@ ucs4swapped_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) } else return RET_TOOSMALL; } - -/* - * UCS-4-BE = UCS-4 big endian, with machine dependent alignment - * UCS-4-LE = UCS-4 little endian, with machine dependent alignment - */ - -#ifdef WORDS_LITTLEENDIAN -#define ucs4be_mbtowc ucs4swapped_mbtowc -#define ucs4be_wctomb ucs4swapped_wctomb -#define ucs4le_mbtowc ucs4internal_mbtowc -#define ucs4le_wctomb ucs4internal_wctomb -#else -#define ucs4be_mbtowc ucs4internal_mbtowc -#define ucs4be_wctomb ucs4internal_wctomb -#define ucs4le_mbtowc ucs4swapped_mbtowc -#define ucs4le_wctomb ucs4swapped_wctomb -#endif diff --git a/libiconv/uhc_1.h b/libiconv/uhc_1.h new file mode 100644 index 0000000..296b108 --- /dev/null +++ b/libiconv/uhc_1.h @@ -0,0 +1,1706 @@ + +/* + * Unified Hangul Code part 1 + */ + +static const unsigned short uhc_1_2uni_main_page81[64] = { + 0xac02, 0xac8d, 0xad14, 0xad91, 0xadfa, 0xae7a, 0xaee6, 0xaf57, + 0xafbf, 0xb030, 0xb0a5, 0xb122, 0xb19e, 0xb207, 0xb26f, 0xb2f0, + 0xb366, 0xb3e1, 0xb445, 0xb4ad, 0xb51e, 0xb590, 0xb600, 0xb661, + 0xb6c3, 0xb723, 0xb79f, 0xb811, 0xb885, 0xb8f1, 0xb95a, 0xb9d4, + 0xba47, 0xbac2, 0xbb28, 0xbb9a, 0xbc03, 0xbc80, 0xbcfe, 0xbd67, + 0xbdd2, 0xbe3d, 0xbeb8, 0xbf23, 0xbf83, 0xbfe6, 0xc040, 0xc0a7, + 0xc132, 0xc1b1, 0xc224, 0xc297, 0xc310, 0xc37a, 0xc3db, 0xc446, + 0xc4aa, 0xc50f, 0xc596, 0xc626, 0xc6a8, 0xc726, 0xc7b8, 0xc832, +}; +static const unsigned char uhc_1_2uni_page81[5696] = { + /* 0x81 */ + 0x00, 0x01, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, + 0x0d, 0x16, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, + 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2c, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3b, + 0x3c, 0x3d, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, + 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4c, 0x4d, 0x4e, + 0x4f, 0x50, 0x51, 0x53, 0x54, 0x55, 0x57, 0x58, + 0x59, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6a, 0x6b, 0x6c, 0x6d, 0x70, 0x71, 0x73, 0x74, + 0x77, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x80, 0x85, + 0x86, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x11, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1e, 0x20, 0x21, + 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2d, + 0x31, 0x32, 0x33, 0x35, 0x36, 0x38, 0x39, 0x3a, + 0x3c, 0x3d, 0x3e, 0x40, 0x41, 0x42, 0x43, 0x44, + 0x45, 0x46, 0x47, 0x49, 0x4b, 0x4c, 0x4d, 0x4e, + 0x4f, 0x50, 0x51, 0x52, 0x55, 0x56, 0x58, 0x59, + 0x5c, 0x5e, 0x60, 0x61, 0x65, 0x67, 0x6a, 0x6b, + 0x6c, 0x6d, 0x6e, 0x71, 0x72, 0x74, 0x75, 0x76, + 0x78, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x83, + 0x85, 0x86, + /* 0x82 */ + 0x00, 0x01, 0x02, 0x03, 0x05, 0x06, 0x07, 0x09, + 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, + 0x13, 0x14, 0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x22, 0x23, 0x25, 0x26, 0x27, 0x29, + 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x32, 0x34, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3d, 0x3e, + 0x3f, 0x41, 0x42, 0x43, 0x45, 0x46, 0x47, 0x48, + 0x49, 0x4a, 0x4b, 0x4c, 0x4e, 0x50, 0x51, 0x52, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x5a, 0x5b, 0x5d, + 0x5e, 0x63, 0x64, 0x65, 0x66, 0x6a, 0x6c, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x76, 0x77, 0x79, 0x7a, + 0x7b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, + 0x22, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2a, + 0x2b, 0x2c, 0x2d, 0x2e, 0x31, 0x32, 0x34, 0x35, + 0x36, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, + 0x41, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, + 0x4a, 0x4c, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x54, + 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, + 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, + 0x65, 0x66, + /* 0x83 */ + 0x00, 0x01, 0x03, 0x04, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3b, + 0x3c, 0x3f, 0x41, 0x42, 0x43, 0x44, 0x45, 0x48, + 0x4a, 0x4d, 0x4e, 0x4f, 0x51, 0x55, 0x57, 0x58, + 0x59, 0x5b, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x64, + 0x68, 0x69, 0x6a, 0x6c, 0x6d, 0x70, 0x71, 0x73, + 0x74, 0x75, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, + 0x7d, 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, + 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, + 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, + 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, + 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x45, 0x47, 0x48, + 0x49, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, + 0x54, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x60, + 0x61, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6a, 0x6b, + /* 0x84 */ + 0x00, 0x01, 0x03, 0x04, 0x06, 0x08, 0x09, 0x0a, + 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x13, 0x14, + 0x15, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x23, 0x24, 0x25, 0x26, 0x28, + 0x29, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, + 0x42, 0x43, 0x44, 0x45, 0x48, 0x49, 0x4b, 0x4d, + 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x58, + 0x5a, 0x5e, 0x5f, 0x60, 0x61, 0x64, 0x65, 0x66, + 0x67, 0x68, 0x69, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, 0x0f, 0x10, 0x11, 0x12, + 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, + 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x23, + 0x24, 0x25, 0x26, 0x27, 0x28, 0x2a, 0x2b, 0x2c, + 0x2e, 0x2f, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x41, + 0x42, 0x43, 0x44, 0x46, 0x47, 0x48, 0x49, 0x4a, + 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, + 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x63, 0x64, + 0x66, 0x67, + /* 0x85 */ + 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0b, + 0x0d, 0x10, 0x11, 0x12, 0x13, 0x14, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x33, 0x34, + 0x36, 0x37, 0x38, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, + 0x3f, 0x40, 0x43, 0x44, 0x46, 0x47, 0x48, 0x49, + 0x4a, 0x4b, 0x4c, 0x4e, 0x4f, 0x50, 0x52, 0x53, + 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, + 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, + 0x67, 0x68, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x16, 0x17, 0x19, + 0x1b, 0x1d, 0x1f, 0x20, 0x21, 0x22, 0x26, 0x28, + 0x2a, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, + 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, + 0x4b, 0x4e, 0x4f, 0x51, 0x52, 0x53, 0x55, 0x56, + 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5e, 0x60, 0x62, + 0x63, 0x64, 0x65, 0x66, 0x67, 0x6b, 0x6d, 0x6e, + 0x73, 0x74, + /* 0x86 */ + 0x00, 0x01, 0x02, 0x05, 0x0b, 0x0d, 0x11, 0x12, + 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, + 0x1d, 0x1e, 0x21, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x2a, 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3c, 0x3d, 0x3e, + 0x3f, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x65, 0x68, 0x69, 0x6a, 0x6c, + 0x6f, 0x70, 0x71, 0x72, 0x75, 0x79, 0x7a, 0x7b, + 0x7c, 0x00, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x20, 0x21, 0x23, + 0x24, 0x25, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, + 0x2d, 0x30, 0x31, 0x34, 0x35, 0x37, 0x38, 0x39, + 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x58, 0x59, 0x5b, 0x5c, 0x5d, 0x5f, + 0x61, 0x62, 0x63, 0x64, 0x65, 0x68, 0x6a, 0x6c, + 0x6d, 0x6e, 0x6f, 0x73, 0x74, 0x75, 0x77, 0x78, + 0x79, 0x7b, + /* 0x87 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2f, 0x30, 0x31, + 0x33, 0x34, 0x35, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x40, 0x42, 0x43, 0x44, 0x45, 0x46, + 0x47, 0x48, 0x49, 0x4c, 0x4d, 0x4f, 0x50, 0x51, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, + 0x5c, 0x5e, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x68, 0x00, 0x02, 0x03, 0x06, 0x07, 0x08, 0x09, + 0x0a, 0x0b, 0x0c, 0x0f, 0x11, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x36, 0x37, 0x38, + 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, + 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, + 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, + 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x63, 0x64, 0x65, + 0x66, 0x67, + /* 0x88 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x08, 0x09, + 0x0a, 0x0b, 0x0c, 0x0e, 0x0f, 0x10, 0x11, 0x12, + 0x13, 0x14, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x23, 0x24, 0x26, 0x27, 0x28, + 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x33, 0x35, 0x38, + 0x39, 0x3a, 0x3c, 0x3e, 0x3f, 0x40, 0x42, 0x43, + 0x44, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, + 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, + 0x55, 0x56, 0x57, 0x58, 0x5b, 0x5c, 0x5e, 0x5f, + 0x60, 0x62, 0x64, 0x65, 0x66, 0x67, 0x68, 0x6b, + 0x6d, 0x6f, 0x70, 0x71, 0x72, 0x74, 0x78, 0x7a, + 0x7b, 0x00, 0x01, 0x02, 0x06, 0x0c, 0x0d, 0x0e, + 0x12, 0x13, 0x15, 0x16, 0x17, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1e, 0x1f, 0x22, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2d, 0x2e, 0x2f, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, + 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, + 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, + 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, 0x67, 0x69, 0x6a, 0x6d, 0x70, 0x71, + 0x72, 0x73, + /* 0x89 */ + 0x00, 0x02, 0x04, 0x06, 0x07, 0x09, 0x0c, 0x0d, + 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1c, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x25, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, + 0x43, 0x44, 0x45, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x60, 0x61, 0x63, 0x64, 0x67, 0x69, + 0x6b, 0x6c, 0x6d, 0x70, 0x72, 0x74, 0x76, 0x78, + 0x79, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, + 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x38, 0x39, 0x3a, 0x3c, + 0x3d, 0x3e, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x46, 0x49, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, + 0x51, 0x52, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, + /* 0x8a */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x10, 0x11, 0x12, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1d, + 0x1f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, + 0x39, 0x3a, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, + 0x42, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, + 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x60, 0x61, 0x62, 0x64, 0x65, + 0x66, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x09, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, + 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1c, + 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x24, 0x25, + 0x26, 0x27, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x31, 0x32, 0x34, 0x35, 0x38, 0x3a, 0x3b, 0x3c, + 0x3d, 0x3e, 0x41, 0x43, 0x45, 0x46, 0x47, 0x48, + 0x49, 0x4a, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, + 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x69, 0x6a, 0x6c, + 0x6d, 0x70, + /* 0x8b */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, + 0x19, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, + 0x24, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x30, 0x31, + 0x33, 0x34, 0x35, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x40, 0x44, 0x45, 0x46, 0x47, 0x48, + 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, + 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, + 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, + 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, + 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, + 0x71, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x12, 0x13, 0x15, 0x16, 0x17, 0x19, 0x1c, + 0x1d, 0x1e, 0x1f, 0x22, 0x26, 0x27, 0x28, 0x29, + 0x2a, 0x2e, 0x2f, 0x31, 0x32, 0x33, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3e, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x49, 0x4a, 0x4b, 0x4c, + 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, + 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5d, + 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, + 0x6e, 0x6f, + /* 0x8c */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x12, 0x13, 0x15, 0x16, 0x17, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, + 0x24, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, + 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, + 0x47, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, + 0x39, 0x3a, 0x3d, 0x3e, 0x40, 0x41, 0x42, 0x44, + 0x45, 0x46, 0x47, 0x48, 0x49, 0x4c, 0x4d, 0x4e, + 0x4f, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, + /* 0x8d */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x32, + 0x33, 0x34, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3f, 0x40, 0x41, 0x43, 0x44, 0x45, 0x46, + 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, + 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, + 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, + 0x5f, 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x08, + 0x0a, 0x0b, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28, + 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3e, 0x3f, 0x40, 0x42, 0x43, 0x44, 0x46, + 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4f, 0x51, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x5b, 0x5c, + 0x5e, 0x5f, 0x60, 0x62, 0x63, 0x64, 0x65, 0x66, + 0x67, 0x68, 0x6b, 0x70, 0x71, 0x72, 0x77, 0x78, + 0x7a, 0x7b, + /* 0x8e */ + 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x0b, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x17, + 0x18, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x29, + 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, + 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, + 0x4b, 0x4c, 0x4f, 0x50, 0x52, 0x53, 0x54, 0x56, + 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5f, 0x63, + 0x64, 0x65, 0x66, 0x67, 0x6b, 0x6c, 0x6e, 0x6f, + 0x70, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x09, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, + 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, + 0x1f, 0x20, 0x21, 0x22, 0x25, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, + 0x3e, 0x3f, 0x41, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4d, 0x4e, 0x50, 0x51, 0x52, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5d, + 0x5f, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x68, + 0x69, 0x6a, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, + 0x72, 0x73, + /* 0x8f */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x2a, 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x34, + 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3d, 0x3f, + 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x48, 0x49, + 0x4a, 0x4c, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x59, 0x5b, 0x5d, 0x5e, + 0x5f, 0x60, 0x61, 0x62, 0x65, 0x66, 0x68, 0x69, + 0x6a, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x09, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, + 0x24, 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2b, 0x2c, + 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, + 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4d, 0x4e, 0x50, + 0x51, 0x52, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x5c, 0x5d, 0x5f, 0x61, 0x62, 0x63, 0x64, + 0x65, 0x66, + /* 0x90 */ + 0x00, 0x01, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, + 0x0a, 0x0b, 0x0c, 0x0d, 0x10, 0x12, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1c, 0x1d, 0x1f, 0x20, + 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x2c, 0x2e, 0x31, 0x32, 0x35, 0x36, 0x37, 0x38, + 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, + 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, + 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, + 0x51, 0x54, 0x55, 0x57, 0x58, 0x59, 0x5b, 0x5c, + 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x64, 0x66, 0x68, + 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x70, 0x71, 0x73, + 0x79, 0x00, 0x01, 0x02, 0x03, 0x06, 0x08, 0x0b, + 0x0c, 0x0e, 0x12, 0x13, 0x15, 0x16, 0x17, 0x19, + 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x22, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2e, 0x2f, 0x30, 0x31, + 0x32, 0x33, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, + 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, + 0x66, 0x67, 0x69, 0x6a, 0x6b, 0x6d, 0x6f, 0x70, + 0x71, 0x72, + /* 0x91 */ + 0x00, 0x03, 0x05, 0x08, 0x09, 0x0a, 0x0b, 0x0f, + 0x10, 0x12, 0x13, 0x14, 0x16, 0x17, 0x18, 0x19, + 0x1a, 0x1b, 0x1c, 0x1f, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, + 0x3b, 0x3f, 0x41, 0x42, 0x43, 0x44, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x63, 0x66, 0x67, 0x68, 0x6a, 0x6c, 0x6d, + 0x6e, 0x6f, 0x70, 0x73, 0x75, 0x77, 0x78, 0x79, + 0x7a, 0x00, 0x01, 0x03, 0x04, 0x05, 0x07, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x18, 0x19, 0x1a, + 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, + 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, + 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3b, + 0x3c, 0x3d, 0x3f, 0x40, 0x41, 0x43, 0x44, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4c, 0x4e, 0x50, + 0x51, 0x52, 0x53, 0x54, 0x55, 0x57, 0x58, 0x59, + 0x5b, 0x5c, 0x5d, 0x5f, 0x60, 0x61, 0x62, 0x63, + 0x64, 0x65, + /* 0x92 */ + 0x00, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, + 0x0a, 0x0b, 0x0f, 0x11, 0x12, 0x17, 0x18, 0x19, + 0x1a, 0x1b, 0x1e, 0x20, 0x22, 0x23, 0x24, 0x26, + 0x29, 0x2a, 0x2b, 0x2d, 0x2e, 0x2f, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x3a, 0x3c, + 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, + 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, + 0x5e, 0x5f, 0x61, 0x62, 0x63, 0x65, 0x66, 0x67, + 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, + 0x71, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, + 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, + 0x24, 0x25, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2d, + 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x37, + 0x38, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, + 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, + 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, + 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, + 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x60, 0x61, 0x63, + 0x64, 0x67, + /* 0x93 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x0b, 0x0d, + 0x0f, 0x10, 0x16, 0x17, 0x1d, 0x1e, 0x1f, 0x20, + 0x23, 0x25, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2f, + 0x30, 0x32, 0x33, 0x34, 0x36, 0x37, 0x38, 0x39, + 0x3a, 0x3b, 0x3c, 0x3f, 0x43, 0x44, 0x45, 0x47, + 0x48, 0x4b, 0x4c, 0x4e, 0x4f, 0x50, 0x51, 0x52, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, + 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, + 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, + 0x7c, 0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x09, + 0x0a, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x16, + 0x18, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x22, 0x23, + 0x25, 0x26, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x32, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3e, 0x3f, 0x41, 0x42, 0x43, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4e, 0x52, 0x53, + 0x54, 0x56, 0x57, 0x59, 0x5a, 0x5b, 0x5d, 0x5e, + 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, + 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, + 0x6f, 0x70, 0x71, 0x72, 0x73, 0x77, 0x79, 0x7a, + 0x7b, 0x7d, + /* 0x94 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x0a, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x13, 0x14, + 0x15, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, + 0x49, 0x4c, 0x4d, 0x4f, 0x50, 0x51, 0x53, 0x54, + 0x55, 0x56, 0x57, 0x58, 0x59, 0x5c, 0x5d, 0x5e, + 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x67, + 0x68, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x34, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3e, + 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, + 0x47, 0x48, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, + 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, + 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, + 0x69, 0x6a, + /* 0x95 */ + 0x00, 0x01, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, + 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2f, 0x30, + 0x32, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3c, + 0x3d, 0x3f, 0x40, 0x41, 0x43, 0x44, 0x45, 0x46, + 0x47, 0x48, 0x49, 0x4c, 0x4e, 0x4f, 0x50, 0x51, + 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6a, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x10, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x19, 0x1b, 0x1f, 0x20, 0x21, + 0x22, 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2c, 0x2e, + 0x2f, 0x30, 0x31, 0x32, 0x35, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x41, 0x42, 0x44, 0x45, 0x46, 0x48, + 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x51, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, + 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, + 0x79, 0x7a, + /* 0x96 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x1a, 0x1b, 0x1d, 0x1e, 0x21, 0x22, 0x23, 0x24, + 0x25, 0x26, 0x27, 0x29, 0x2a, 0x2e, 0x2f, 0x30, + 0x31, 0x32, 0x33, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, + 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, + 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x52, 0x53, 0x54, + 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, + 0x5d, 0x5e, 0x5f, 0x62, 0x66, 0x67, 0x68, 0x69, + 0x6a, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1f, 0x20, + 0x22, 0x23, 0x24, 0x26, 0x27, 0x28, 0x29, 0x2a, + 0x2b, 0x2c, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, + 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, + 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, + 0x5e, 0x5f, + /* 0x97 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, + 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4b, 0x4c, + 0x4e, 0x4f, 0x50, 0x52, 0x53, 0x54, 0x55, 0x56, + 0x57, 0x58, 0x5a, 0x5b, 0x5d, 0x5f, 0x60, 0x61, + 0x62, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, + 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, + 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, + 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x57, + 0x58, 0x59, + /* 0x98 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x19, + 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x21, 0x22, 0x23, + 0x24, 0x25, 0x26, 0x27, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, + 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, + 0x4e, 0x4f, 0x52, 0x53, 0x55, 0x56, 0x57, 0x59, + 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x62, 0x64, + 0x66, 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x0a, + 0x0b, 0x10, 0x11, 0x12, 0x13, 0x14, 0x17, 0x1b, + 0x1c, 0x1d, 0x1f, 0x20, 0x23, 0x24, 0x26, 0x27, + 0x28, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, + 0x33, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3f, + 0x40, 0x42, 0x43, 0x44, 0x46, 0x47, 0x48, 0x49, + 0x4a, 0x4b, 0x4c, 0x4f, 0x51, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x5a, 0x5b, 0x5c, 0x5e, 0x5f, + 0x60, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, + 0x6a, 0x6b, 0x6c, 0x6d, 0x6f, 0x70, 0x71, 0x72, + 0x73, 0x74, 0x7a, 0x7b, 0x7e, 0x81, 0x82, 0x83, + 0x84, 0x87, + /* 0x99 */ + 0x00, 0x01, 0x02, 0x03, 0x05, 0x08, 0x09, 0x0b, + 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x18, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, + 0x24, 0x25, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x34, 0x38, 0x39, 0x3a, + 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x41, 0x43, 0x44, + 0x45, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, + 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x54, 0x55, 0x56, + 0x57, 0x58, 0x59, 0x5d, 0x5f, 0x60, 0x61, 0x63, + 0x65, 0x66, 0x67, 0x68, 0x69, 0x6c, 0x6e, 0x70, + 0x71, 0x72, 0x74, 0x75, 0x78, 0x79, 0x7b, 0x7c, + 0x7d, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, + 0x1a, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, + 0x24, 0x25, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36, 0x38, + 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x41, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4d, + 0x4e, 0x50, 0x51, 0x52, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5d, 0x5f, 0x61, 0x62, 0x63, + 0x64, 0x65, 0x66, 0x69, 0x6a, 0x6c, 0x6d, 0x70, + 0x71, 0x72, + /* 0x9a */ + 0x00, 0x01, 0x02, 0x03, 0x06, 0x08, 0x0a, 0x0c, + 0x0f, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2e, 0x2f, 0x31, 0x32, 0x33, + 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3d, + 0x3e, 0x3f, 0x40, 0x42, 0x43, 0x44, 0x45, 0x46, + 0x47, 0x4a, 0x4b, 0x4d, 0x4e, 0x4f, 0x51, 0x52, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x5a, 0x5c, 0x5e, + 0x5f, 0x60, 0x61, 0x62, 0x63, 0x66, 0x67, 0x68, + 0x69, 0x6a, 0x6b, 0x6d, 0x6e, 0x6f, 0x70, 0x71, + 0x72, 0x00, 0x02, 0x03, 0x05, 0x07, 0x08, 0x09, + 0x0a, 0x0b, 0x0c, 0x0f, 0x10, 0x12, 0x13, 0x14, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1f, 0x21, + 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, + 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, + 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, + 0x43, 0x44, 0x47, 0x48, 0x4a, 0x4b, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x57, 0x59, 0x5b, 0x5c, + 0x5d, 0x5e, 0x60, 0x63, 0x66, 0x67, 0x68, 0x6a, + 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x73, 0x74, + 0x77, 0x78, + /* 0x9b */ + 0x00, 0x01, 0x02, 0x06, 0x07, 0x09, 0x0a, 0x0b, + 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x16, + 0x17, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x36, 0x37, 0x38, 0x39, + 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, + 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, + 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, + 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x5a, 0x5b, + 0x5d, 0x5e, 0x5f, 0x61, 0x63, 0x64, 0x65, 0x66, + 0x67, 0x00, 0x01, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, + 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, + 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, + 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, + 0x5d, 0x60, + /* 0x9c */ + 0x00, 0x02, 0x03, 0x06, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x21, + 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x2a, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x31, 0x32, + 0x33, 0x34, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4c, + 0x4d, 0x4e, 0x4f, 0x50, 0x52, 0x53, 0x54, 0x56, + 0x57, 0x58, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6a, 0x00, 0x01, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x20, 0x21, + 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4f, 0x50, + 0x51, 0x52, 0x53, 0x54, 0x55, 0x57, 0x58, 0x59, + 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, + /* 0x9d */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, + 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, + 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x40, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x48, 0x49, 0x4b, 0x4c, 0x4d, + 0x4f, 0x51, 0x52, 0x53, 0x54, 0x58, 0x59, 0x5a, + 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x63, + 0x64, 0x00, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, 0x0e, 0x0f, 0x10, 0x11, + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x1b, + 0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x2b, 0x2d, 0x2f, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x37, 0x38, 0x3c, 0x40, 0x41, + 0x42, 0x43, 0x47, 0x4b, 0x4c, 0x4d, 0x50, 0x53, + 0x54, 0x56, 0x57, 0x58, 0x5a, 0x5b, 0x5c, 0x5d, + 0x5e, 0x5f, 0x60, 0x63, 0x67, 0x68, 0x69, 0x6a, + 0x6b, 0x6c, 0x6f, 0x70, 0x72, 0x73, 0x74, 0x76, + 0x77, 0x79, 0x7a, 0x7b, 0x7c, 0x7f, 0x81, 0x83, + 0x84, 0x85, + /* 0x9e */ + 0x00, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, + 0x1d, 0x20, 0x21, 0x24, 0x29, 0x2a, 0x2b, 0x2c, + 0x2d, 0x35, 0x37, 0x39, 0x3c, 0x3d, 0x3f, 0x40, + 0x41, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, + 0x4c, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x59, 0x5b, 0x5c, 0x5d, 0x5f, 0x62, 0x63, 0x64, + 0x65, 0x6c, 0x6d, 0x6e, 0x73, 0x74, 0x75, 0x77, + 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, + 0x81, 0x84, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, + 0x8d, 0x00, 0x01, 0x03, 0x04, 0x05, 0x09, 0x0b, + 0x0c, 0x10, 0x12, 0x14, 0x16, 0x17, 0x18, 0x19, + 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2c, 0x30, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x38, 0x39, 0x3b, 0x3c, 0x3d, + 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x47, 0x48, 0x4a, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, + 0x51, 0x54, 0x55, 0x57, 0x58, 0x59, 0x5b, 0x5c, + 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x64, 0x66, 0x68, + 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x70, 0x71, 0x73, + 0x74, 0x75, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, + 0x7d, 0x80, + /* 0x9f */ + 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0a, + 0x0b, 0x0d, 0x0e, 0x0f, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x1a, 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, + 0x23, 0x26, 0x27, 0x29, 0x2a, 0x2b, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x32, 0x33, 0x36, 0x37, 0x3a, + 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x42, 0x43, 0x45, + 0x46, 0x47, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, + 0x4f, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x5b, 0x5e, 0x5f, 0x61, 0x62, 0x63, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6e, 0x70, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7a, 0x7b, + 0x7d, 0x00, 0x01, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0c, 0x0e, 0x10, 0x12, 0x13, 0x14, + 0x15, 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x25, 0x28, 0x2a, 0x33, 0x34, + 0x35, 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, + 0x3f, 0x40, 0x41, 0x43, 0x44, 0x46, 0x47, 0x48, + 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x50, 0x51, 0x53, + 0x54, 0x55, 0x59, 0x5a, 0x5b, 0x5c, 0x60, 0x65, + 0x66, 0x67, 0x69, 0x6c, 0x6d, 0x6f, 0x73, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7c, 0x81, 0x82, 0x83, + 0x84, 0x85, 0x88, 0x89, 0x8b, 0x8c, 0x8d, 0x8f, + 0x90, 0x91, + /* 0xa0 */ + 0x00, 0x01, 0x02, 0x03, 0x06, 0x0a, 0x0b, 0x0c, + 0x0d, 0x0e, 0x0f, 0x12, 0x13, 0x15, 0x17, 0x19, + 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x21, 0x22, + 0x23, 0x24, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0x2d, 0x2e, 0x2f, 0x31, 0x32, 0x33, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, + 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, + 0x47, 0x4a, 0x4b, 0x4d, 0x4e, 0x4f, 0x51, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x5a, 0x5c, 0x5f, 0x60, + 0x61, 0x62, 0x63, 0x66, 0x67, 0x69, 0x6a, 0x6b, + 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x76, + 0x78, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, + 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, + 0x12, 0x13, 0x14, 0x15, 0x18, 0x19, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x40, + 0x41, 0x43, 0x44, 0x45, 0x47, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x50, 0x52, 0x56, 0x57, 0x58, 0x5c, + 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6c, 0x6e, 0x70, + 0x71, 0x72, +}; + +static int +uhc_1_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + unsigned char c1 = s[0]; + if ((c1 >= 0x81 && c1 <= 0xa0)) { + if (n >= 2) { + unsigned char c2 = s[1]; + if ((c2 >= 0x41 && c2 < 0x5b) || (c2 >= 0x61 && c2 < 0x7b) || (c2 >= 0x81 && c2 < 0xff)) { + unsigned int row = c1 - 0x81; + unsigned int col = c2 - (c2 >= 0x81 ? 0x4d : c2 >= 0x61 ? 0x47 : 0x41); + unsigned int i = 178 * row + col; + if (i < 5696) { + *pwc = (wchar_t) (uhc_1_2uni_main_page81[2*row+(col>=89?1:0)] + uhc_1_2uni_page81[i]); + return 2; + } + } + return RET_ILSEQ; + } + return RET_TOOFEW(0); + } + return RET_ILSEQ; +} + +static const unsigned short uhc_1_2charset_main[45] = { + 0x8141, 0x81cd, 0x829b, 0x8363, 0x83e9, 0x84b7, 0x8585, 0x8647, + 0x86d3, 0x87a1, 0x8869, 0x88ef, 0x89bd, 0x8a8b, 0x8b4d, 0x8bd9, + 0x8ca7, 0x8d6f, 0x8df5, 0x8ec3, 0x8f91, 0x9053, 0x90df, 0x91ad, + 0x9275, 0x92fb, 0x93c9, 0x9497, 0x9559, 0x95e5, 0x96b3, 0x9781, + 0x9843, 0x98cf, 0x999d, 0x9a65, 0x9aeb, 0x9bb9, 0x9c87, 0x9d49, + 0x9dd5, 0x9ea3, 0x9f6b, 0x9ff1, 0xa0bf, +}; +static const unsigned char uhc_1_2charset[5696] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, + 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, + 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, + 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, + 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, + 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, + 0x8a, 0x8b, 0x8c, 0x8d, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0xa6, 0xa7, 0xa8, 0xa9, + 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, + 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, + 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc6, 0xc7, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, + 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, + 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, + 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, + 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, + 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x58, 0x59, + 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, + 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, + 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, + 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, + 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, + 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, + 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, + 0xa2, 0xa3, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, + 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, + 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, + 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, + 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x6e, 0x6f, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, + 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0xa0, 0xa1, + 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, + 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, + 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, + 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, + 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, + 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, + 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, + 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6a, 0x6b, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x92, 0x93, 0x94, 0x95, + 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, + 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, + 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, + 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, + 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, + 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, + 0x9a, 0x9b, 0x9c, 0x9d, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0xb6, 0xb7, 0xb8, 0xb9, + 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, + 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, + 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, + 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, + 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x68, 0x69, + 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, + 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, + 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, + 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, + 0xb2, 0xb3, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, + 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, + 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, + 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, + 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, + 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, + 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x8c, 0x8d, + 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, + 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, + 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, + 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, + 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x7e, 0x7f, 0x80, 0x81, + 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, + 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, + 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0xb0, 0xb1, + 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, + 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, + 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, + 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, + 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, + 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7a, 0x7b, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0xa2, 0xa3, 0xa4, 0xa5, + 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, + 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, + 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, + 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, + 0xaa, 0xab, 0xac, 0xad, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, + 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, + 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, + 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, + 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, + 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, + 0x00, 0x01, 0x02, 0x03, 0x46, 0x47, 0x48, 0x49, + 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, + 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, + 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, + 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, + 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, + 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, + 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x78, 0x79, + 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, + 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, + 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, + 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, + 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, + 0x00, 0x01, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, + 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, + 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, + 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, + 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x9c, 0x9d, + 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, + 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, + 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x8e, 0x8f, 0x90, 0x91, + 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, + 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, + 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0xc0, 0xc1, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, + 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, + 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, + 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, + 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, + 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, + 0x8a, 0x8b, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, + 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, + 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, + 0xba, 0xbb, 0xbc, 0xbd, 0xc4, 0xc5, 0xc6, 0xc7, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, + 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, + 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, + 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, + 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, + 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x76, 0x77, + 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, + 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, + 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, + 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x88, 0x89, + 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, + 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, + 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, + 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, + 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, + 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, + 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, + 0x82, 0x83, 0x84, 0x85, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xac, 0xad, + 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x9e, 0x9f, 0xa0, 0xa1, + 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, + 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, + 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, + 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, + 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, + 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, + 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, + 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x50, 0x51, + 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, + 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, + 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, + 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, + 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, + 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, +}; + +static const Summary16 uhc_1_uni2indx_pageac[459] = { + /* 0xac00 */ + { 0, 0xf86c }, { 9, 0xc100 }, { 12, 0x4fee }, { 23, 0xecfc }, + { 34, 0xd7fe }, { 47, 0xeeef }, { 60, 0xffff }, { 76, 0xfa6c }, + { 86, 0xe184 }, { 92, 0x4fee }, { 103, 0x68fc }, { 112, 0xc4fe }, + { 122, 0xeeed }, { 134, 0xff5f }, { 148, 0x6a6c }, { 156, 0xcf94 }, + /* 0xad00 */ + { 165, 0x4fae }, { 175, 0xeefd }, { 188, 0xcdfe }, { 200, 0xeecf }, + { 212, 0xfd4f }, { 224, 0xfeee }, { 237, 0xcff5 }, { 249, 0x4786 }, + { 256, 0xecf9 }, { 267, 0xcffe }, { 280, 0xffef }, { 295, 0xff7f }, + { 310, 0xfeec }, { 322, 0xeff4 }, { 334, 0xffee }, { 348, 0x6cff }, + /* 0xae00 */ + { 360, 0xd4fc }, { 370, 0xffef }, { 385, 0xffff }, { 401, 0xfa6c }, + { 411, 0x8b94 }, { 418, 0x4fae }, { 428, 0xecdc }, { 438, 0xc4fe }, + { 448, 0xefcf }, { 461, 0xffff }, { 477, 0xffff }, { 493, 0x8fff }, + { 506, 0x4fee }, { 517, 0xecfc }, { 528, 0xd6ff }, { 541, 0xeeef }, + /* 0xaf00 */ + { 554, 0xde7f }, { 567, 0xfffe }, { 582, 0xcfff }, { 596, 0x4fea }, + { 606, 0xfcf1 }, { 617, 0xcffe }, { 630, 0xffcf }, { 644, 0xfdff }, + { 659, 0xfeee }, { 672, 0xefdc }, { 684, 0xffff }, { 700, 0xecff }, + { 713, 0x947e }, { 722, 0xefef }, { 736, 0xfcff }, { 750, 0xfeec }, + /* 0xb000 */ + { 762, 0xefec }, { 774, 0xcfee }, { 786, 0xfeff }, { 801, 0xffff }, + { 817, 0xaacf }, { 827, 0xdd47 }, { 837, 0xffff }, { 853, 0xcfff }, + { 867, 0x4fee }, { 878, 0x68fd }, { 888, 0x04f8 }, { 894, 0xeec5 }, + { 904, 0xfc4f }, { 915, 0xfeec }, { 927, 0xffde }, { 941, 0xffff }, + /* 0xb100 */ + { 957, 0xe4ff }, { 969, 0xc4f2 }, { 977, 0xeec7 }, { 988, 0xfc4f }, + { 999, 0xfeec }, { 1011, 0xeecc }, { 1021, 0xfffe }, { 1036, 0xecff }, + { 1049, 0xd4fa }, { 1059, 0xeee3 }, { 1070, 0xfeff }, { 1085, 0xffff }, + { 1101, 0xefff }, { 1116, 0x4fee }, { 1127, 0xecff }, { 1140, 0xd5fe }, + /* 0xb200 */ + { 1152, 0xe6cf }, { 1163, 0xfd4f }, { 1175, 0xfffe }, { 1190, 0xefef }, + { 1204, 0xffff }, { 1220, 0xeeff }, { 1234, 0xfcfe }, { 1247, 0xefcf }, + { 1260, 0xfdcf }, { 1273, 0xf8ec }, { 1283, 0xeb94 }, { 1292, 0xffee }, + { 1306, 0xecff }, { 1319, 0xd4fa }, { 1329, 0x068b }, { 1335, 0x7047 }, + /* 0xb300 */ + { 1342, 0xfeec }, { 1354, 0xefc4 }, { 1364, 0xffff }, { 1380, 0xffff }, + { 1396, 0xffff }, { 1412, 0x268f }, { 1420, 0xb54f }, { 1430, 0xfeec }, + { 1442, 0xefc4 }, { 1452, 0xffee }, { 1466, 0xeefc }, { 1478, 0xffff }, + { 1494, 0xa6cf }, { 1504, 0xd54e }, { 1513, 0xfeee }, { 1526, 0xefff }, + /* 0xb400 */ + { 1541, 0xffff }, { 1557, 0xeefe }, { 1570, 0xf4fe }, { 1582, 0xffef }, + { 1597, 0xffff }, { 1613, 0xfeec }, { 1625, 0xefd4 }, { 1636, 0xffff }, + { 1652, 0xfefe }, { 1666, 0xdfff }, { 1681, 0xeeef }, { 1694, 0xfd5f }, + { 1707, 0xfeee }, { 1720, 0xcfde }, { 1732, 0x4fa6 }, { 1741, 0xfefd }, + /* 0xb500 */ + { 1755, 0xffff }, { 1771, 0xe6cf }, { 1782, 0xf84f }, { 1792, 0xfeec }, + { 1804, 0xc7c4 }, { 1812, 0x4fee }, { 1823, 0xfffc }, { 1837, 0xffff }, + { 1853, 0xffff }, { 1869, 0xffff }, { 1885, 0xf2ec }, { 1895, 0xc7c4 }, + { 1903, 0x4fee }, { 1914, 0xfefc }, { 1927, 0xefff }, { 1942, 0xffff }, + /* 0xb600 */ + { 1958, 0xffff }, { 1974, 0xfeec }, { 1986, 0xefdf }, { 2000, 0xffef }, + { 2015, 0xfeff }, { 2030, 0xffff }, { 2046, 0xfeef }, { 2060, 0xffff }, + { 2076, 0xffff }, { 2092, 0xcfff }, { 2106, 0xe7ee }, { 2118, 0xfffd }, + { 2133, 0xffff }, { 2149, 0xffef }, { 2164, 0xffff }, { 2180, 0xfeee }, + /* 0xb700 */ + { 2193, 0xffdc }, { 2206, 0xffff }, { 2222, 0x6cff }, { 2234, 0xf4fe }, + { 2246, 0xeeef }, { 2259, 0xffcf }, { 2273, 0xfeee }, { 2286, 0xcfd4 }, + { 2296, 0x4fee }, { 2307, 0xec38 }, { 2315, 0xc4fe }, { 2325, 0xfecf }, + { 2338, 0xfd7f }, { 2352, 0xffff }, { 2368, 0xcfff }, { 2382, 0x4fee }, + /* 0xb800 */ + { 2393, 0xec7c }, { 2403, 0xd4fe }, { 2414, 0xeecf }, { 2426, 0xfc4f }, + { 2437, 0xffee }, { 2451, 0xcff5 }, { 2463, 0x4fee }, { 2474, 0xeefd }, + { 2487, 0xdfff }, { 2502, 0xffff }, { 2518, 0xfeff }, { 2533, 0xfeee }, + { 2546, 0xefd4 }, { 2557, 0x5fee }, { 2569, 0xecfd }, { 2581, 0xd4fe }, + /* 0xb900 */ + { 2592, 0xffef }, { 2607, 0xfeff }, { 2622, 0xfffe }, { 2637, 0xcfff }, + { 2651, 0x6fee }, { 2663, 0xecfd }, { 2675, 0xd4fe }, { 2686, 0xeecf }, + { 2698, 0x994f }, { 2707, 0xffff }, { 2723, 0xcfff }, { 2737, 0x4fee }, + { 2748, 0x2cfd }, { 2758, 0x94f8 }, { 2766, 0xeec5 }, { 2776, 0xf84f }, + /* 0xba00 */ + { 2786, 0xfefc }, { 2799, 0xffdf }, { 2814, 0xffff }, { 2830, 0xecff }, + { 2843, 0x94fa }, { 2852, 0xeec7 }, { 2863, 0xfc4f }, { 2874, 0xfeec }, + { 2886, 0xef47 }, { 2897, 0xffff }, { 2913, 0xe4ff }, { 2925, 0xd4fa }, + { 2935, 0xfeef }, { 2949, 0xfcff }, { 2963, 0xffff }, { 2979, 0xefff }, + /* 0xbb00 */ + { 2994, 0x5fee }, { 3006, 0xeefd }, { 3019, 0xf5fe }, { 3032, 0x868f }, + { 3040, 0x5d4f }, { 3050, 0xfeee }, { 3063, 0xeff5 }, { 3076, 0xffff }, + { 3092, 0xeeff }, { 3106, 0xfffe }, { 3121, 0xeeef }, { 3134, 0xff6f }, + { 3148, 0xfeee }, { 3161, 0xfff6 }, { 3175, 0xffff }, { 3191, 0x6cff }, + /* 0xbc00 */ + { 3203, 0x44fa }, { 3211, 0x060d }, { 3216, 0xdd4f }, { 3227, 0xfeec }, + { 3239, 0xcdc4 }, { 3247, 0xdffe }, { 3261, 0xffff }, { 3277, 0xffff }, + { 3293, 0xa6cf }, { 3303, 0xf94f }, { 3314, 0xfe6c }, { 3325, 0xcfc4 }, + { 3334, 0x5fee }, { 3346, 0xeedc }, { 3357, 0xffff }, { 3373, 0xee8f }, + /* 0xbd00 */ + { 3384, 0xfd4f }, { 3396, 0xffee }, { 3410, 0xefef }, { 3424, 0xffff }, + { 3440, 0xecfe }, { 3452, 0xfcfe }, { 3465, 0xfeef }, { 3479, 0xffff }, + { 3495, 0xf86c }, { 3504, 0xe9d4 }, { 3513, 0xffef }, { 3528, 0xfefe }, + { 3542, 0xffff }, { 3558, 0xeecf }, { 3570, 0xfdff }, { 3585, 0xfeee }, + /* 0xbe00 */ + { 3598, 0xcfd6 }, { 3609, 0x4fee }, { 3620, 0xffff }, { 3636, 0xffff }, + { 3652, 0xaecf }, { 3663, 0xf14f }, { 3673, 0xfaec }, { 3684, 0xc7c4 }, + { 3692, 0x4fee }, { 3703, 0xfcfc }, { 3715, 0xfeff }, { 3730, 0xffff }, + { 3746, 0xffff }, { 3762, 0xfe6c }, { 3773, 0xefc6 }, { 3784, 0xffff }, + /* 0xbf00 */ + { 3800, 0xfcfd }, { 3813, 0xc4ff }, { 3824, 0xffff }, { 3840, 0xffff }, + { 3856, 0xfeec }, { 3868, 0xffdc }, { 3881, 0xffff }, { 3897, 0xffff }, + { 3913, 0xffff }, { 3929, 0xffef }, { 3944, 0xffff }, { 3960, 0xfffe }, + { 3975, 0xcfdf }, { 3988, 0x6fee }, { 4000, 0xfffd }, { 4015, 0xffff }, + /* 0xc000 */ + { 4031, 0xffff }, { 4047, 0xffff }, { 4063, 0xffff }, { 4079, 0xefff }, + { 4094, 0xffff }, { 4110, 0xeefd }, { 4123, 0xfcfe }, { 4136, 0xffff }, + { 4152, 0xffff }, { 4168, 0xfeec }, { 4180, 0x4fd4 }, { 4189, 0x4f86 }, + { 4197, 0xecdc }, { 4207, 0xc4fe }, { 4217, 0xeecf }, { 4229, 0xfd4f }, + /* 0xc100 */ + { 4241, 0xfeee }, { 4254, 0x0fde }, { 4264, 0x4f26 }, { 4272, 0xecbc }, + { 4282, 0xc4fe }, { 4292, 0xeecf }, { 4304, 0xfc4f }, { 4315, 0xfeee }, + { 4328, 0x8fdf }, { 4340, 0x4fae }, { 4350, 0xecdd }, { 4361, 0xdffe }, + { 4375, 0xeeef }, { 4388, 0xfe6f }, { 4401, 0xfeee }, { 4414, 0xcff4 }, + /* 0xc200 */ + { 4425, 0x4fee }, { 4436, 0x6cfd }, { 4447, 0x54fe }, { 4457, 0xffe9 }, + { 4470, 0xfeff }, { 4485, 0xfeec }, { 4497, 0xcfde }, { 4509, 0x4fee }, + { 4520, 0xfcfd }, { 4533, 0xd6fe }, { 4545, 0xcecf }, { 4556, 0xfd4f }, + { 4568, 0xffff }, { 4584, 0xcfff }, { 4598, 0x47e6 }, { 4607, 0xe4bd }, + /* 0xc300 */ + { 4617, 0xccfe }, { 4628, 0xeec7 }, { 4639, 0xfccf }, { 4651, 0xffff }, + { 4667, 0xffdf }, { 4682, 0xffff }, { 4698, 0xecff }, { 4711, 0xccfa }, + { 4721, 0xeeef }, { 4734, 0xffff }, { 4750, 0xffff }, { 4766, 0xffff }, + { 4782, 0xfffe }, { 4797, 0x6cff }, { 4809, 0xdcfa }, { 4820, 0xfecf }, + /* 0xc400 */ + { 4833, 0xfeff }, { 4848, 0xfffe }, { 4863, 0xefef }, { 4877, 0xcfee }, + { 4889, 0xfeff }, { 4904, 0xffff }, { 4920, 0xeecf }, { 4932, 0xfdcf }, + { 4945, 0xfffe }, { 4960, 0xefef }, { 4974, 0xffff }, { 4990, 0xeeff }, + { 5004, 0xffff }, { 5020, 0xffff }, { 5036, 0xfdff }, { 5051, 0x7aec }, + /* 0xc500 */ + { 5061, 0xeffc }, { 5074, 0xefee }, { 5087, 0xecff }, { 5100, 0xd4fe }, + { 5111, 0x88cf }, { 5119, 0x9c47 }, { 5127, 0xfeec }, { 5139, 0xcfc4 }, + { 5148, 0x4f6e }, { 5158, 0xee5d }, { 5169, 0xfdfe }, { 5183, 0x84cf }, + { 5191, 0xa80f }, { 5198, 0xfeec }, { 5210, 0x8fd4 }, { 5219, 0x0f2e }, + /* 0xc600 */ + { 5227, 0xee1c }, { 5236, 0xe4fe }, { 5247, 0x8ecf }, { 5257, 0xf546 }, + { 5266, 0xfeec }, { 5278, 0xcfc4 }, { 5287, 0x6ffe }, { 5300, 0xecfd }, + { 5312, 0xd4fe }, { 5323, 0xeecf }, { 5335, 0xfd4f }, { 5347, 0xf8ec }, + { 5357, 0xcfd4 }, { 5367, 0xcfee }, { 5379, 0xecfc }, { 5390, 0xdcfe }, + /* 0xc700 */ + { 5402, 0xeecf }, { 5414, 0xfd4f }, { 5426, 0xfeec }, { 5438, 0xcf54 }, + { 5447, 0x4bee }, { 5457, 0xee01 }, { 5464, 0xf6fe }, { 5477, 0x8ecf }, + { 5487, 0xb847 }, { 5495, 0xfa2c }, { 5504, 0xcf84 }, { 5512, 0x4fee }, + { 5523, 0xacfc }, { 5533, 0xdefe }, { 5546, 0xeeef }, { 5559, 0xffff }, + /* 0xc800 */ + { 5575, 0xfaec }, { 5586, 0xcf94 }, { 5595, 0x4fee }, { 5606, 0xeefd }, + { 5619, 0xccfe }, { 5630, 0xffef }, { 5645, 0xffff }, { 5661, 0xfaec }, + { 5672, 0xc714 }, { 5679, 0x5fef }, { 5692, 0x001d }, +}; + +static int +uhc_1_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + if (n >= 2) { + if (wc >= 0xac00 && wc < 0xc8b0) { + const Summary16 *summary = &uhc_1_uni2indx_pageac[(wc>>4)-0xac0]; + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short) 1 << i)) { + unsigned short c; + /* Keep in `used' only the bits 0..i-1. */ + used &= ((unsigned short) 1 << i) - 1; + /* Add `summary->indx' and the number of bits set in `used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + used += summary->indx; + c = uhc_1_2charset_main[used>>7] + uhc_1_2charset[used]; + r[0] = (c >> 8); r[1] = (c & 0xff); + return 2; + } + } + return RET_ILSEQ; + } + return RET_TOOSMALL; +} diff --git a/libiconv/uhc_2.h b/libiconv/uhc_2.h new file mode 100644 index 0000000..859002e --- /dev/null +++ b/libiconv/uhc_2.h @@ -0,0 +1,1003 @@ + +/* + * Unified Hangul Code part 2 + */ + +static const unsigned short uhc_2_2uni_main_pagea1[76] = { + 0xc8a5, 0xc8d8, 0xc910, 0xc93e, 0xc971, 0xc9a5, 0xc9de, 0xca1c, + 0xca47, 0xca7b, 0xcaa8, 0xcadd, 0xcb0b, 0xcb3a, 0xcb6d, 0xcb99, + 0xcbc5, 0xcbf3, 0xcc25, 0xcc67, 0xcc94, 0xcccf, 0xccfe, 0xcd34, + 0xcd61, 0xcd92, 0xcdc6, 0xcdf5, 0xce2c, 0xce5d, 0xce9a, 0xcecc, + 0xcf02, 0xcf3b, 0xcf6d, 0xcf9e, 0xcfcc, 0xcfff, 0xd02e, 0xd064, + 0xd095, 0xd0cc, 0xd105, 0xd132, 0xd16e, 0xd19b, 0xd1d0, 0xd1fd, + 0xd22a, 0xd25e, 0xd28d, 0xd2c5, 0xd2fb, 0xd33e, 0xd36a, 0xd3a1, + 0xd3d7, 0xd40d, 0xd438, 0xd467, 0xd49e, 0xd4c9, 0xd4fe, 0xd52e, + 0xd564, 0xd59d, 0xd5ca, 0xd606, 0xd63d, 0xd677, 0xd6ab, 0xd6e2, + 0xd715, 0xd74e, 0xd78d, 0xfffd, +}; +static const unsigned char uhc_2_2uni_pagea1[3126] = { + /* 0xa1 */ + 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x19, 0x1a, + 0x1b, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x24, + 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x31, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, + 0x23, 0x26, 0x27, 0x29, 0x2a, 0x2b, 0x2f, 0x30, + 0x31, 0x32, 0x33, 0x36, + /* 0xa2 */ + 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x09, + 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, + 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, + 0x19, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, + 0x24, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, + 0x2d, 0x2f, 0x30, 0x31, + /* 0xa3 */ + 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, + 0x12, 0x13, 0x14, 0x15, 0x16, 0x19, 0x1a, 0x1c, + 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x29, 0x2b, 0x2d, 0x2e, 0x2f, 0x30, 0x31, + 0x32, 0x33, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1d, 0x1e, 0x20, + 0x21, 0x24, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2d, + 0x2f, 0x32, 0x33, 0x36, + /* 0xa4 */ + 0x00, 0x01, 0x03, 0x05, 0x07, 0x08, 0x0a, 0x0b, + 0x0c, 0x0d, 0x10, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, + 0x25, 0x26, 0x27, 0x28, 0x29, 0x2c, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39, 0x3b, + 0x3c, 0x3d, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2a, + /* 0xa5 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x08, 0x0a, + 0x0b, 0x0c, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x17, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, + 0x32, 0x33, 0x00, 0x01, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, + /* 0xa6 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x16, 0x17, 0x19, 0x1a, + 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, + 0x26, 0x28, 0x2a, 0x2c, 0x2d, 0x2e, 0x2f, 0x32, + 0x33, 0x34, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2c, 0x2d, + /* 0xa7 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08, + 0x0a, 0x0b, 0x0c, 0x0e, 0x0f, 0x10, 0x11, 0x12, + 0x13, 0x14, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, + 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, + 0x2d, 0x2e, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x10, + 0x11, 0x13, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1a, + 0x1b, 0x1c, 0x1d, 0x20, 0x21, 0x22, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x32, + /* 0xa8 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x0f, 0x10, 0x11, + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, + 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x2a, 0x2b, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, + /* 0xa9 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x20, 0x21, + 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, + 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x2b, + 0x2c, 0x2d, 0x30, 0x31, + /* 0xaa */ + 0x00, 0x01, 0x05, 0x06, 0x08, 0x0a, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x15, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1e, 0x21, 0x22, 0x24, 0x25, 0x26, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x31, + 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3c, 0x3d, + 0x3e, 0x40, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, + /* 0xab */ + 0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x09, 0x0a, + 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, + 0x16, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x22, + 0x23, 0x25, 0x26, 0x27, 0x29, 0x2a, 0x2b, 0x2c, + 0x2d, 0x2e, 0x2f, 0x32, 0x34, 0x36, 0x37, 0x38, + 0x39, 0x3a, 0x00, 0x02, 0x03, 0x04, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22, + 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, + 0x2b, 0x2c, 0x2d, 0x2e, + /* 0xac */ + 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1c, 0x1e, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, + 0x2b, 0x2c, 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x00, 0x01, 0x02, 0x03, 0x04, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x29, 0x2a, 0x2b, + /* 0xad */ + 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0d, 0x0f, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x00, 0x01, 0x04, 0x05, 0x07, 0x08, + 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, + 0x14, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x33, + /* 0xae */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x08, + 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, + 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2b, 0x2c, + 0x2d, 0x2e, 0x00, 0x01, 0x02, 0x05, 0x07, 0x09, + 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, + 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, + 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x23, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2a, 0x2d, 0x2e, 0x30, 0x31, + 0x32, 0x34, 0x35, 0x36, + /* 0xaf */ + 0x00, 0x01, 0x02, 0x03, 0x06, 0x08, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, + 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0x2e, 0x2f, 0x00, 0x01, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0d, 0x0f, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x29, 0x2b, + 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x35, 0x36, + 0x38, 0x39, 0x3a, 0x3c, + /* 0xb0 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x0c, + 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x1a, 0x1b, 0x1d, 0x1e, 0x21, 0x22, + 0x23, 0x24, 0x25, 0x26, 0x27, 0x2a, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, + /* 0xb1 */ + 0x00, 0x01, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, + 0x0a, 0x0b, 0x0c, 0x0d, 0x10, 0x12, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1f, + 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2c, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x37, 0x38, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, + 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x2b, + 0x2d, 0x2f, 0x30, 0x31, + /* 0xb2 */ + 0x00, 0x01, 0x02, 0x05, 0x06, 0x08, 0x09, 0x0a, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x14, + 0x15, 0x16, 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, + 0x2a, 0x2b, 0x2c, 0x2d, + /* 0xb3 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x16, 0x17, 0x19, 0x1a, + 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, + 0x26, 0x28, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x31, 0x32, 0x00, 0x02, 0x03, 0x04, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, + 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x2a, 0x2b, 0x2c, 0x2d, + /* 0xb4 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x09, + 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x18, 0x1a, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, + 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x33, + 0x34, 0x35, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, 0x11, + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1a, 0x1b, + 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, + 0x2d, 0x2e, 0x2f, 0x30, + /* 0xb5 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x11, + 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1e, 0x21, 0x23, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2d, 0x2e, 0x30, 0x31, 0x32, + 0x35, 0x36, 0x00, 0x01, 0x02, 0x03, 0x06, 0x0a, + 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x12, 0x13, 0x15, + 0x16, 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x1f, 0x22, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, + 0x35, 0x36, 0x37, 0x38, + /* 0xb6 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x00, 0x01, 0x03, 0x04, 0x05, 0x07, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x10, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1c, 0x1d, 0x1f, 0x20, + 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x2c, 0x2e, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x37, 0x38, 0x39, 0x3b, + /* 0xb7 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x17, 0x18, 0x19, + 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, + 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, + 0x2b, 0x2c, 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, + 0x08, 0x0a, 0x0b, 0x0c, 0x0e, 0x0f, 0x10, 0x11, + 0x12, 0x13, 0x14, 0x17, 0x19, 0x1b, 0x1c, 0x1d, + 0x1e, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, + 0x31, 0x32, 0x33, 0x34, + /* 0xb8 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x25, 0x26, 0x27, 0x29, 0x2a, + 0x2b, 0x2c, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0b, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, + /* 0xb9 */ + 0x00, 0x01, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x16, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, + 0x31, 0x33, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x1f, 0x20, 0x21, 0x24, 0x25, 0x27, 0x28, 0x29, + 0x2b, 0x2c, 0x2d, 0x2e, + /* 0xba */ + 0x00, 0x01, 0x02, 0x05, 0x06, 0x07, 0x09, 0x0a, + 0x0b, 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, + 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x20, 0x21, 0x22, 0x23, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2d, 0x2e, 0x30, 0x31, 0x34, + 0x36, 0x37, 0x00, 0x01, 0x02, 0x05, 0x07, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x10, 0x11, + 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1e, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2d, 0x2e, 0x30, + 0x31, 0x32, 0x34, 0x35, + /* 0xbb */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x09, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x14, 0x16, 0x17, + 0x18, 0x1a, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x23, + 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2f, 0x30, 0x32, + 0x33, 0x34, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3f, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, + /* 0xbc */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1b, + 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x24, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x30, 0x31, 0x33, + 0x34, 0x35, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x09, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, + 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1c, + 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x25, 0x26, + 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x35, + /* 0xbd */ + 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, + 0x13, 0x14, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1e, + 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x27, 0x29, + 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x32, 0x33, + 0x34, 0x35, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2a, + /* 0xbe */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x09, 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, + 0x22, 0x23, 0x25, 0x26, 0x27, 0x29, 0x2a, 0x2b, + 0x2d, 0x2e, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x13, 0x14, 0x16, 0x17, 0x1a, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x23, 0x25, 0x27, 0x28, 0x29, + 0x2a, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, + /* 0xbf */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, + 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1a, + 0x1b, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x24, + 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x30, 0x31, 0x33, + /* 0xc0 */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x08, + 0x09, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x12, + 0x13, 0x14, 0x15, 0x18, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x10, 0x11, 0x13, 0x14, 0x15, 0x17, 0x18, 0x19, + 0x1a, 0x1b, 0x1c, 0x1d, 0x20, 0x22, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2c, 0x2d, 0x2f, 0x30, + 0x31, 0x33, 0x34, 0x35, + /* 0xc1 */ + 0x00, 0x02, 0x03, 0x06, 0x08, 0x0a, 0x0b, 0x0c, + 0x0d, 0x0e, 0x0f, 0x12, 0x13, 0x15, 0x16, 0x17, + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x22, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2a, + /* 0xc2 */ + 0x00, 0x01, 0x03, 0x04, 0x05, 0x07, 0x09, 0x0a, + 0x0b, 0x0c, 0x0d, 0x10, 0x12, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1c, 0x1d, 0x1f, 0x20, 0x21, + 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2c, + 0x2e, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x38, + 0x39, 0x3b, 0x00, 0x01, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0c, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d, + 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x34, 0x35, + /* 0xc3 */ + 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x09, + 0x0a, 0x0d, 0x0f, 0x11, 0x12, 0x13, 0x15, 0x16, + 0x19, 0x1a, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, + 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, + 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x35, 0x36, + 0x38, 0x39, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0d, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x17, 0x18, 0x1a, + 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, + 0x24, 0x25, 0x27, 0x29, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x32, 0x33, + /* 0xc4 */ + 0x00, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08, 0x09, + 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, + 0x1f, 0x20, 0x22, 0x23, 0x24, 0x25, 0x27, 0x28, + 0x2a, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x36, 0x00, 0x01, 0x03, 0x04, 0x05, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, + 0x11, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x30, 0x31, 0x32, + /* 0xc5 */ + 0x00, 0x01, 0x02, 0x05, 0x06, 0x08, 0x09, 0x0a, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x15, + 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x21, + 0x22, 0x24, 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x33, 0x35, 0x36, + 0x37, 0x38, 0x00, 0x01, 0x04, 0x05, 0x07, 0x0c, + 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x16, 0x18, + 0x19, 0x1a, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, + 0x24, 0x25, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, + 0x2d, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3c, 0x3d, + /* 0xc6 */ + 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0d, 0x0f, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, +}; + +static int +uhc_2_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + unsigned char c1 = s[0]; + if ((c1 >= 0xa1 && c1 <= 0xc6)) { + if (n >= 2) { + unsigned char c2 = s[1]; + if ((c2 >= 0x41 && c2 < 0x5b) || (c2 >= 0x61 && c2 < 0x7b) || (c2 >= 0x81 && c2 < 0xa1)) { + unsigned int row = c1 - 0xa1; + unsigned int col = c2 - (c2 >= 0x81 ? 0x4d : c2 >= 0x61 ? 0x47 : 0x41); + unsigned int i = 84 * row + col; + if (i < 3126) { + *pwc = (wchar_t) (uhc_2_2uni_main_pagea1[2*row+(col>=42?1:0)] + uhc_2_2uni_pagea1[i]); + return 2; + } + } + return RET_ILSEQ; + } + return RET_TOOFEW(0); + } + return RET_ILSEQ; +} + +static const unsigned short uhc_2_2charset_main[49] = { + 0xa141, 0xa18d, 0xa273, 0xa359, 0xa445, 0xa491, 0xa577, 0xa663, + 0xa749, 0xa795, 0xa881, 0xa967, 0xaa4d, 0xaa99, 0xab85, 0xac6b, + 0xad51, 0xad9d, 0xae89, 0xaf6f, 0xb055, 0xb141, 0xb18d, 0xb273, + 0xb359, 0xb445, 0xb491, 0xb577, 0xb663, 0xb749, 0xb795, 0xb881, + 0xb967, 0xba4d, 0xba99, 0xbb85, 0xbc6b, 0xbd51, 0xbd9d, 0xbe89, + 0xbf6f, 0xc055, 0xc141, 0xc18d, 0xc273, 0xc359, 0xc445, 0xc491, + 0xc577, +}; +static const unsigned char uhc_2_2charset[3126] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0xe8, 0xe9, 0xea, 0xeb, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0xca, 0xcb, 0xcc, 0xcd, + 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xea, 0xeb, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xcc, 0xcd, + 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe8, 0xe9, 0xea, 0xeb, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0xe8, 0xe9, 0xea, 0xeb, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0xca, 0xcb, 0xcc, 0xcd, + 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xea, 0xeb, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xcc, 0xcd, + 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe8, 0xe9, 0xea, 0xeb, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0xe8, 0xe9, 0xea, 0xeb, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, + 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, + 0x00, 0x01, 0x02, 0x03, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0xca, 0xcb, 0xcc, 0xcd, + 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, +}; + +static const Summary16 uhc_2_uni2indx_pagec8[251] = { + /* 0xc800 */ + { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, + { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, + { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0xfee0 }, { 10, 0xcfff }, + { 24, 0xeeef }, { 37, 0xfd4f }, { 49, 0xffec }, { 62, 0xcfdf }, + /* 0xc900 */ + { 75, 0x4f8e }, { 84, 0xfefd }, { 98, 0xefff }, { 113, 0xffef }, + { 128, 0xffff }, { 144, 0xfeec }, { 156, 0xeff4 }, { 168, 0xefee }, + { 181, 0xecff }, { 194, 0xd4fe }, { 205, 0xffff }, { 221, 0xffff }, + { 237, 0xfa6c }, { 247, 0xc994 }, { 254, 0x4f6a }, { 263, 0xecfc }, + /* 0xca00 */ + { 274, 0xc4fe }, { 284, 0xfeef }, { 298, 0xfdff }, { 313, 0xffff }, + { 329, 0xcfff }, { 343, 0x4fee }, { 354, 0xfefc }, { 367, 0xdfff }, + { 382, 0xffef }, { 397, 0xfeff }, { 412, 0xffff }, { 428, 0xcfff }, + { 442, 0x4fee }, { 453, 0xfcf5 }, { 465, 0xeffe }, { 479, 0xffef }, + /* 0xcb00 */ + { 494, 0xfeff }, { 509, 0xfeee }, { 522, 0xfffc }, { 536, 0xffff }, + { 552, 0xecfd }, { 564, 0xdcfe }, { 576, 0xffef }, { 591, 0xfcff }, + { 605, 0xffff }, { 621, 0xefff }, { 636, 0xffff }, { 652, 0xfeff }, + { 667, 0xffff }, { 683, 0xffef }, { 698, 0xfd6f }, { 711, 0xffff }, + /* 0xcc00 */ + { 727, 0xcfff }, { 741, 0xcfee }, { 753, 0xac79 }, { 762, 0x84fe }, + { 771, 0xeecf }, { 783, 0xfc4f }, { 794, 0xfeae }, { 806, 0xffde }, + { 820, 0xffff }, { 836, 0xecff }, { 849, 0xc4fe }, { 859, 0xeecf }, + { 871, 0xfd4f }, { 883, 0xffee }, { 897, 0xefef }, { 911, 0xfffe }, + /* 0xcd00 */ + { 926, 0xecfd }, { 938, 0xd4fe }, { 949, 0xeeef }, { 962, 0xfdff }, + { 977, 0xffff }, { 993, 0xefff }, { 1008, 0x4fee }, { 1019, 0xfefd }, + { 1033, 0xfeff }, { 1048, 0xeecf }, { 1060, 0xfd4f }, { 1072, 0xfffe }, + { 1087, 0xefef }, { 1101, 0xfffe }, { 1116, 0xeeff }, { 1130, 0xd4fe }, + /* 0xce00 */ + { 1141, 0xeeef }, { 1154, 0xfdef }, { 1168, 0xfeec }, { 1180, 0xffd4 }, + { 1192, 0xffff }, { 1208, 0x6cff }, { 1220, 0xd4fc }, { 1230, 0xeecf }, + { 1242, 0xfd4f }, { 1254, 0xfeec }, { 1266, 0xcfc4 }, { 1275, 0xffff }, + { 1291, 0xfffd }, { 1306, 0xffff }, { 1322, 0xe6cf }, { 1333, 0xfc4f }, + /* 0xcf00 */ + { 1344, 0xfeec }, { 1356, 0xefd4 }, { 1367, 0x4fee }, { 1378, 0xfefc }, + { 1391, 0xffff }, { 1407, 0xeecf }, { 1419, 0xfd4f }, { 1431, 0xfeec }, + { 1443, 0xefde }, { 1456, 0xffff }, { 1472, 0xfefd }, { 1486, 0xfffe }, + { 1501, 0xffef }, { 1516, 0xffff }, { 1532, 0xfeec }, { 1544, 0xefd4 }, + /* 0xd000 */ + { 1555, 0xffee }, { 1569, 0xfefd }, { 1583, 0xdfff }, { 1598, 0xeecf }, + { 1610, 0xfd4f }, { 1622, 0xfeee }, { 1635, 0xcffe }, { 1648, 0xcfee }, + { 1660, 0xfffd }, { 1675, 0xffff }, { 1691, 0xeecf }, { 1703, 0xfd4f }, + { 1715, 0xfcec }, { 1726, 0xcfc4 }, { 1735, 0x4fee }, { 1746, 0xfefc }, + /* 0xd100 */ + { 1759, 0xdfff }, { 1774, 0xffff }, { 1790, 0xffff }, { 1806, 0xfaec }, + { 1817, 0xcfc4 }, { 1826, 0x4fee }, { 1837, 0xeefd }, { 1850, 0xefff }, + { 1865, 0xfeef }, { 1879, 0xffff }, { 1895, 0xfeec }, { 1907, 0xebd4 }, + { 1917, 0xfffe }, { 1932, 0xfeff }, { 1947, 0xffff }, { 1963, 0xfeef }, + /* 0xd200 */ + { 1977, 0xfd7f }, { 1991, 0xfffe }, { 2006, 0xcfff }, { 2020, 0x4fee }, + { 2031, 0xfefd }, { 2045, 0xefff }, { 2060, 0xffef }, { 2075, 0xffff }, + { 2091, 0xfeec }, { 2103, 0xefdc }, { 2115, 0xefee }, { 2128, 0x6cfd }, + { 2139, 0xf4fa }, { 2150, 0xeeef }, { 2163, 0xffcf }, { 2177, 0xfeec }, + /* 0xd300 */ + { 2189, 0x8fd4 }, { 2198, 0x4fae }, { 2208, 0xecdc }, { 2218, 0xc4fe }, + { 2228, 0xffcf }, { 2242, 0xffff }, { 2258, 0xffff }, { 2274, 0xcfff }, + { 2288, 0x4fee }, { 2299, 0xecfc }, { 2310, 0xd4fe }, { 2321, 0xeeef }, + { 2334, 0xfccf }, { 2346, 0xfefe }, { 2360, 0xcff5 }, { 2372, 0x4fee }, + /* 0xd400 */ + { 2383, 0xfefd }, { 2397, 0xdfff }, { 2412, 0xffff }, { 2428, 0xffff }, + { 2444, 0xffee }, { 2458, 0xefff }, { 2473, 0x5fee }, { 2485, 0x6cff }, + { 2497, 0xd4fa }, { 2507, 0xffef }, { 2522, 0xfdff }, { 2537, 0xffff }, + { 2553, 0xefff }, { 2568, 0x6fee }, { 2580, 0xeeff }, { 2594, 0xd6fe }, + /* 0xd500 */ + { 2606, 0xeeef }, { 2619, 0xff4f }, { 2632, 0xffff }, { 2648, 0xcfff }, + { 2662, 0x4fee }, { 2673, 0xecfd }, { 2685, 0xd4de }, { 2695, 0xeecf }, + { 2707, 0xfc4f }, { 2718, 0xfffe }, { 2733, 0xffdf }, { 2748, 0xffff }, + { 2764, 0xecff }, { 2777, 0xd4fa }, { 2787, 0xeecf }, { 2799, 0xfd4f }, + /* 0xd600 */ + { 2811, 0xfeec }, { 2823, 0xefc4 }, { 2833, 0xdfee }, { 2846, 0xecff }, + { 2859, 0xd4de }, { 2869, 0xeecd }, { 2880, 0xfd7f }, { 2894, 0xffec }, + { 2907, 0xcfd7 }, { 2919, 0x5fee }, { 2931, 0xeefd }, { 2944, 0xf5fe }, + { 2957, 0xeecf }, { 2969, 0xfd6d }, { 2981, 0xfeee }, { 2994, 0xcfde }, + /* 0xd700 */ + { 3006, 0xffee }, { 3020, 0xecfd }, { 3032, 0xd4fe }, { 3043, 0xeecf }, + { 3055, 0xfd6f }, { 3068, 0xfc2c }, { 3077, 0xedd4 }, { 3087, 0xcfee }, + { 3099, 0xecfd }, { 3111, 0xd4fe }, { 3122, 0x000f }, +}; + +static int +uhc_2_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + if (n >= 2) { + if (wc >= 0xc800 && wc < 0xd7b0) { + const Summary16 *summary = &uhc_2_uni2indx_pagec8[(wc>>4)-0xc80]; + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short) 1 << i)) { + unsigned short c; + /* Keep in `used' only the bits 0..i-1. */ + used &= ((unsigned short) 1 << i) - 1; + /* Add `summary->indx' and the number of bits set in `used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + used += summary->indx; + c = uhc_2_2charset_main[used>>6] + uhc_2_2charset[used]; + r[0] = (c >> 8); r[1] = (c & 0xff); + return 2; + } + } + return RET_ILSEQ; + } + return RET_TOOSMALL; +} diff --git a/libiconv/utf16.h b/libiconv/utf16.h index 872c155..5cb2169 100644 --- a/libiconv/utf16.h +++ b/libiconv/utf16.h @@ -2,8 +2,14 @@ * UTF-16 */ +/* Specification: RFC 2781 */ + /* Here we accept FFFE/FEFF marks as endianness indicators everywhere - in the stream, not just at the beginning. The default is big-endian. */ + in the stream, not just at the beginning. (This is contrary to what + RFC 2781 section 3.2 specifies, but it allows concatenation of byte + sequences to work flawlessly, while disagreeing with the RFC behaviour + only for strings containing U+FEFF characters, which is quite rare.) + The default is big-endian. */ /* The state is 0 if big-endian, 1 if little-endian. */ static int utf16_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) @@ -38,16 +44,30 @@ utf16_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) return RET_TOOFEW(count); } -/* But we output UTF-16 in big-endian order, without byte-order mark. */ +/* We output UTF-16 in big-endian order, with byte-order mark. + See RFC 2781 section 3.3 for a rationale: Some document formats + mandate a BOM; the file concatenation issue is not so severe as + long as the above utf16_mbtowc function is used. */ +/* The state is 0 at the beginning, 1 after the BOM has been written. */ static int utf16_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) { if (wc != 0xfffe) { + int count = 0; + if (!conv->ostate) { + if (n >= 2) { + r[0] = 0xFE; + r[1] = 0xFF; + r += 2; n -= 2; count += 2; + } else + return RET_TOOSMALL; + } if (wc < 0x10000) { if (n >= 2) { r[0] = (unsigned char) (wc >> 8); r[1] = (unsigned char) wc; - return 2; + conv->ostate = 1; + return count+2; } else return RET_TOOSMALL; } @@ -59,7 +79,8 @@ utf16_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) r[1] = (unsigned char) wc1; r[2] = (unsigned char) (wc2 >> 8); r[3] = (unsigned char) wc2; - return 4; + conv->ostate = 1; + return count+4; } else return RET_TOOSMALL; } diff --git a/libiconv/utf16be.h b/libiconv/utf16be.h new file mode 100644 index 0000000..69c5604 --- /dev/null +++ b/libiconv/utf16be.h @@ -0,0 +1,55 @@ +/* + * UTF-16BE + */ + +/* Specification: RFC 2781 */ + +static int +utf16be_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + int count = 0; + if (n >= 2) { + wchar_t wc = (s[0] << 8) + s[1]; + if (wc >= 0xd800 && wc < 0xdc00) { + if (n >= 4) { + wchar_t wc2 = (s[2] << 8) + s[3]; + if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) + return RET_ILSEQ; + *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); + return count+4; + } + } else if (wc >= 0xdc00 && wc < 0xe000) { + return RET_ILSEQ; + } else { + *pwc = wc; + return count+2; + } + } + return RET_TOOFEW(count); +} + +static int +utf16be_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + if (wc < 0x10000) { + if (n >= 2) { + r[0] = (unsigned char) (wc >> 8); + r[1] = (unsigned char) wc; + return 2; + } else + return RET_TOOSMALL; + } + else if (wc < 0x110000) { + if (n >= 4) { + wchar_t wc1 = 0xd800 + ((wc - 0x10000) >> 10); + wchar_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); + r[0] = (unsigned char) (wc1 >> 8); + r[1] = (unsigned char) wc1; + r[2] = (unsigned char) (wc2 >> 8); + r[3] = (unsigned char) wc2; + return 4; + } else + return RET_TOOSMALL; + } + return RET_ILSEQ; +} diff --git a/libiconv/utf16le.h b/libiconv/utf16le.h new file mode 100644 index 0000000..ad54f59 --- /dev/null +++ b/libiconv/utf16le.h @@ -0,0 +1,55 @@ +/* + * UTF-16LE + */ + +/* Specification: RFC 2781 */ + +static int +utf16le_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n) +{ + int count = 0; + if (n >= 2) { + wchar_t wc = s[0] + (s[1] << 8); + if (wc >= 0xd800 && wc < 0xdc00) { + if (n >= 4) { + wchar_t wc2 = s[2] + (s[3] << 8); + if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) + return RET_ILSEQ; + *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); + return count+4; + } + } else if (wc >= 0xdc00 && wc < 0xe000) { + return RET_ILSEQ; + } else { + *pwc = wc; + return count+2; + } + } + return RET_TOOFEW(count); +} + +static int +utf16le_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) +{ + if (wc < 0x10000) { + if (n >= 2) { + r[0] = (unsigned char) wc; + r[1] = (unsigned char) (wc >> 8); + return 2; + } else + return RET_TOOSMALL; + } + else if (wc < 0x110000) { + if (n >= 4) { + wchar_t wc1 = 0xd800 + ((wc - 0x10000) >> 10); + wchar_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); + r[0] = (unsigned char) wc1; + r[1] = (unsigned char) (wc1 >> 8); + r[2] = (unsigned char) wc2; + r[3] = (unsigned char) (wc2 >> 8); + return 4; + } else + return RET_TOOSMALL; + } + return RET_ILSEQ; +} diff --git a/libiconv/utf7.h b/libiconv/utf7.h index 09dc1f6..65ef3b1 100644 --- a/libiconv/utf7.h +++ b/libiconv/utf7.h @@ -9,7 +9,7 @@ * A-Z a-z 0-9 ' ( ) , - . / : ? space tab lf cr */ static const unsigned char direct_tab[128/8] = { - 0x00, 0x24, 0x00, 0x00, 0x81, 0xf3, 0xff, 0x87, + 0x00, 0x26, 0x00, 0x00, 0x81, 0xf3, 0xff, 0x87, 0xfe, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0x07, }; #define isdirect(ch) ((ch) < 128 && ((direct_tab[(ch)>>3] >> (ch & 7)) & 1)) @@ -19,7 +19,7 @@ static const unsigned char direct_tab[128/8] = { * ! " # $ % & * ; < = > @ [ ] ^ _ ` { | } */ static const unsigned char xdirect_tab[128/8] = { - 0x00, 0x24, 0x00, 0x00, 0xff, 0xf7, 0xff, 0xff, + 0x00, 0x26, 0x00, 0x00, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0x3f, }; #define isxdirect(ch) ((ch) < 128 && ((xdirect_tab[(ch)>>3] >> (ch & 7)) & 1)) @@ -199,7 +199,7 @@ utf7_wctomb (conv_t conv, unsigned char *r, wchar_t iwc, int n) return 1; } else { *r++ = '+'; - if (wc == '-') { + if (wc == '+') { if (n < 2) return RET_TOOSMALL; *r = '-'; diff --git a/m4/ChangeLog b/m4/ChangeLog index 1c69d2f..688fe92 100644 --- a/m4/ChangeLog +++ b/m4/ChangeLog @@ -1,3 +1,18 @@ +2000-06-28 François Pinard + + * Makefile.am (EXTRA_DIST): + + * flex.m4: + +2000-06-27 François Pinard + + * flex.m4: New, from elsewhere. + * utimbuf.m4: New, from elsewhere. + +2000-01-28 François Pinard + + * lcmessage.m4: New, from elsewhere. + 1999-12-14 François Pinard * Makefile.am: Adapt to the gettext scheme used in wdiff. diff --git a/m4/Makefile.am b/m4/Makefile.am index a4383df..2d71d00 100644 --- a/m4/Makefile.am +++ b/m4/Makefile.am @@ -1,3 +1,4 @@ AUTOMAKE_OPTIONS = gnits -EXTRA_DIST = atconfig.m4 gettext.m4 malloc.m4 microsoft.m4 realloc.m4 +EXTRA_DIST = atconfig.m4 flex.m4 gettext.m4 lcmessage.m4 malloc.m4 \ +microsoft.m4 realloc.m4 utimbuf.m4 diff --git a/m4/Makefile.in b/m4/Makefile.in index 82648b7..f6d79b1 100644 --- a/m4/Makefile.in +++ b/m4/Makefile.in @@ -64,48 +64,30 @@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ CC = @CC@ CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ LEX = @LEX@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ MOFILES = @MOFILES@ -MSGFMT = @MSGFMT@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ RANLIB = @RANLIB@ U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ VERSION = @VERSION@ -l = @l@ AUTOMAKE_OPTIONS = gnits -EXTRA_DIST = atconfig.m4 gettext.m4 malloc.m4 microsoft.m4 realloc.m4 +EXTRA_DIST = atconfig.m4 flex.m4 gettext.m4 lcmessage.m4 malloc.m4 microsoft.m4 realloc.m4 utimbuf.m4 + mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = diff --git a/m4/atconfig.m4 b/m4/atconfig.m4 index dbd7397..e2cc457 100644 --- a/m4/atconfig.m4 +++ b/m4/atconfig.m4 @@ -2,11 +2,12 @@ ## Prepare for testing. ## ## ----------------------## -# Single argument says where are built sources to test, relative to the -# built test directory. Maybe omitted if the same (flat distribution). +# The argument (often `../src') says where are the built sources to test, +# relative to the built test directory. Empty for a flat distribution, as +# `.' gets always added in front of the search path by the `atconfig' script. AC_DEFUN(AT_CONFIG, -[AT_TESTPATH=ifelse($1, , ., $1) +[AT_TESTPATH=$1 AC_SUBST(AT_TESTPATH) fp_PROG_ECHO ]) diff --git a/m4/flex.m4 b/m4/flex.m4 new file mode 100644 index 0000000..8430199 --- /dev/null +++ b/m4/flex.m4 @@ -0,0 +1,18 @@ +## Replacement for AC_PROG_LEX and AC_DECL_YYTEXT +## by Alexandre Oliva +## Modified by Akim Demaille so that only flex is legal + +# serial 2 + +dnl ad_AC_PROG_FLEX +dnl Look for flex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT +AC_DEFUN(ad_AC_PROG_FLEX, +[AC_CHECK_PROGS(LEX, flex, missing) +if test "$LEX" = missing; then + LEX="\$(top_srcdir)/$ac_aux_dir/missing flex" + LEX_OUTPUT_ROOT=lex.yy + AC_SUBST(LEX_OUTPUT_ROOT)dnl +else + AC_PROG_LEX + AC_DECL_YYTEXT +fi]) diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4 new file mode 100644 index 0000000..7ff8b75 --- /dev/null +++ b/m4/lcmessage.m4 @@ -0,0 +1,22 @@ +# Check whether LC_MESSAGES is available in . +# Ulrich Drepper , 1995. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +# serial 2 + +AC_PREREQ(2.13) dnl Minimum Autoconf version required. + +AC_DEFUN(AM_LC_MESSAGES, + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your locale.h file contains LC_MESSAGES.]) + fi + fi]) diff --git a/m4/malloc.m4 b/m4/malloc.m4 index bd3cad4..4978eaf 100644 --- a/m4/malloc.m4 +++ b/m4/malloc.m4 @@ -1,27 +1,16 @@ -#serial 1 +#serial 3 dnl From Jim Meyering. dnl Determine whether malloc accepts 0 as its argument. dnl If it doesn't, arrange to use the replacement function. dnl -dnl If you use this macro in a package, you should -dnl add the following two lines to acconfig.h: -dnl /* Define to rpl_malloc if the replacement function should be used. */ -dnl #undef malloc -dnl AC_DEFUN(jm_FUNC_MALLOC, [ - if test x = y; then - dnl This code is deliberately never run via ./configure. - dnl FIXME: this is a gross hack to make autoheader put an entry - dnl for this symbol in config.h.in. - AC_CHECK_FUNCS(DONE_WORKING_MALLOC_CHECK) - fi dnl xmalloc.c requires that this symbol be defined so it doesn't dnl mistakenly use a broken malloc -- as it might if this test were omitted. - ac_kludge=HAVE_DONE_WORKING_MALLOC_CHECK - AC_DEFINE_UNQUOTED($ac_kludge) + AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_MALLOC_CHECK, 1, + [Define if the malloc check has been performed. ]) AC_CACHE_CHECK([for working malloc], jm_cv_func_working_malloc, [AC_TRY_RUN([ @@ -38,7 +27,9 @@ AC_DEFUN(jm_FUNC_MALLOC, jm_cv_func_working_malloc=no) ]) if test $jm_cv_func_working_malloc = no; then - LIBOBJS="$LIBOBJS malloc.o" - AC_DEFINE_UNQUOTED(malloc, rpl_malloc) + AC_SUBST(LIBOBJS) + LIBOBJS="$LIBOBJS malloc.$ac_objext" + AC_DEFINE_UNQUOTED(malloc, rpl_malloc, + [Define to rpl_malloc if the replacement function should be used.]) fi ]) diff --git a/m4/realloc.m4 b/m4/realloc.m4 index aba1984..bfbef0c 100644 --- a/m4/realloc.m4 +++ b/m4/realloc.m4 @@ -1,27 +1,16 @@ -#serial 1 +#serial 3 dnl From Jim Meyering. dnl Determine whether realloc works when both arguments are 0. dnl If it doesn't, arrange to use the replacement function. dnl -dnl If you use this macro in a package, you should -dnl add the following two lines to acconfig.h: -dnl /* Define to rpl_realloc if the replacement function should be used. */ -dnl #undef realloc -dnl AC_DEFUN(jm_FUNC_REALLOC, [ - if test x = y; then - dnl This code is deliberately never run via ./configure. - dnl FIXME: this is a gross hack to make autoheader put an entry - dnl for this symbol in config.h.in. - AC_CHECK_FUNCS(DONE_WORKING_REALLOC_CHECK) - fi dnl xmalloc.c requires that this symbol be defined so it doesn't dnl mistakenly use a broken realloc -- as it might if this test were omitted. - ac_kludge=HAVE_DONE_WORKING_REALLOC_CHECK - AC_DEFINE_UNQUOTED($ac_kludge) + AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_REALLOC_CHECK, 1, + [Define if the realloc check has been performed. ]) AC_CACHE_CHECK([for working realloc], jm_cv_func_working_realloc, [AC_TRY_RUN([ @@ -38,7 +27,9 @@ AC_DEFUN(jm_FUNC_REALLOC, jm_cv_func_working_realloc=no) ]) if test $jm_cv_func_working_realloc = no; then - LIBOBJS="$LIBOBJS realloc.o" - AC_DEFINE_UNQUOTED(realloc, rpl_realloc) + AC_SUBST(LIBOBJS) + LIBOBJS="$LIBOBJS realloc.$ac_objext" + AC_DEFINE_UNQUOTED(realloc, rpl_realloc, + [Define to rpl_realloc if the replacement function should be used.]) fi ]) diff --git a/m4/utimbuf.m4 b/m4/utimbuf.m4 new file mode 100644 index 0000000..14d7772 --- /dev/null +++ b/m4/utimbuf.m4 @@ -0,0 +1,40 @@ +#serial 2 + +dnl From Jim Meyering + +dnl Define HAVE_STRUCT_UTIMBUF if `struct utimbuf' is declared -- +dnl usually in . +dnl Some systems have utime.h but don't declare the struct anywhere. + +AC_DEFUN(jm_STRUCT_UTIMBUF, +[ + AC_CHECK_HEADERS(utime.h) + AC_REQUIRE([AC_HEADER_TIME]) + AC_CACHE_CHECK([for struct utimbuf], fu_cv_sys_struct_utimbuf, + [AC_TRY_COMPILE( + [ +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif +#ifdef HAVE_UTIME_H +# include +#endif + ], + [static struct utimbuf x; x.actime = x.modtime;], + fu_cv_sys_struct_utimbuf=yes, + fu_cv_sys_struct_utimbuf=no) + ]) + + if test $fu_cv_sys_struct_utimbuf = yes; then + AC_DEFINE_UNQUOTED(HAVE_STRUCT_UTIMBUF, 1, +[Define if struct utimbuf is declared -- usually in . + Some systems have utime.h but don't declare the struct anywhere. ]) + fi +]) diff --git a/missing b/missing index cbe2b0e..b965c14 100755 --- a/missing +++ b/missing @@ -1,7 +1,7 @@ #! /bin/sh # Common stub for a few missing GNU programs while installing. -# Copyright (C) 1996, 1997 Free Software Foundation, Inc. -# Franc,ois Pinard , 1996. +# Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 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 @@ -23,6 +23,19 @@ if test $# -eq 0; then exit 1 fi +run=: + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. case "$1" in -h|--h|--he|--hel|--help) @@ -35,6 +48,7 @@ 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' @@ -45,11 +59,12 @@ Supported PROGRAM values: flex create \`lex.yy.c', if possible, from existing .c 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]" ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing - GNU libit 0.0" + echo "missing 0.2 - GNU automake" ;; -*) @@ -82,15 +97,17 @@ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acconfig.h' or \`configure.in'. 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.in` - if test -z "$files"; then - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^):]*\)).*/\1/p' configure.in` - test -z "$files" || files="$files.in" - else - files=`echo "$files" | sed -e 's/:/ /g'` - fi - test -z "$files" && files="config.h.in" - touch $files + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in` + 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) @@ -99,9 +116,9 @@ WARNING: \`$1' is missing on your system. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. 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$/touch \1.in/' \ - | sh + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done ;; bison|yacc) @@ -173,6 +190,39 @@ WARNING: \`$1' is missing on your system. You should only need it if touch $file ;; + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # we have already tried tar in the generic part + gnutar ${1+"$@"} && exit 0 + gtar ${1+"$@"} && exit 0 + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" ${1+"$@"} && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" ${1+"$@"} && 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 you do not seem to have it handy on your diff --git a/mkinstalldirs b/mkinstalldirs index a01481b..31f90a0 100755 --- a/mkinstalldirs +++ b/mkinstalldirs @@ -4,7 +4,7 @@ # Created: 1993-05-16 # Public domain -# $Id: mkinstalldirs,v 1.10 1996/05/03 07:37:52 friedman Exp $ +# $Id: mkinstalldirs,v 1.8 1997/06/25 17:03:22 meyering Exp $ errstatus=0 diff --git a/rebox.el b/rebox.el index bbf7d0a..5af6b57 100644 --- a/rebox.el +++ b/rebox.el @@ -1,854 +1,995 @@ ;;; Handling of comment boxes in various styles. -;;; Copyright © 1991, 92, 93, 94, 95, 96, 97, 98 Progiciels Bourbeau-Pinard inc. +;;; Copyright © 1991,92,93,94,95,96,97,98,00 Progiciels Bourbeau-Pinard inc. ;;; François Pinard , April 1991. -;;; I first observed rounded corners, as in style 223 boxes, in code from -;;; Warren Tucker , a previous `shar' maintainer. - -;;; Refilling paragraphs inside comments, stretching or shrinking the -;;; surrounding box as needed, is a pain to do "by hand". This GNU Emacs -;;; LISP code eases my life on this and I find it fair, giving all sources -;;; for a package, to also give the means for nicely modifying comments. - -;;; The function `rebox-comment' discovers the extent of the boxed comments -;;; near the cursor, possibly refills the text, then adjusts the comment -;;; box style. The function `rebox-region' does the same, except that it -;;; takes the current region as a boxed comment. Numeric prefixes are -;;; used to add or remove a box, change its style (language, quality or -;;; type), or to prevent refilling of its text. A minus sign alone as -;;; prefix asks for interactive style selection. - -;;; For most Emacs language editing modes, refilling does not make sense -;;; outside comments, so you may redefine the M-q command and link it to -;;; this file. For example, I use this in my .emacs file: - -;;; (setq c-mode-hook -;;; '(lambda () -;;; (define-key c-mode-map "\M-q" 'rebox-comment))) -;;; (autoload 'rebox-comment "rebox" nil t) -;;; (autoload 'rebox-region "rebox" nil t) - -;;; The cursor should be within a comment before any of these commands, -;;; or else it should be between two comments, in which case the command -;;; applies to the next comment. When the command is given without prefix, -;;; the current comment box style is recognized from the comment itself -;;; as far as possible, and preserved. A prefix may be used to force -;;; a particular box style. A style is made up of three attributes: a -;;; language (the hundreds digit), a quality (the tens digit) and a type -;;; (the units digit). A zero or negative flag value changes the default -;;; box style to its absolute value. Zero digits in default style, -;;; when not overriden in flag, asks for recognition of corresponding -;;; attributes from the current box. `C-u' avoids refilling the text, -;;; using the default box style. `C-u -' defines the style interactively. - -;;; Box language is associated with comment delimiters. Values are 100 -;;; for none or unknown, 200 for `/*' and `*/' as in plain C, 300 for -;;; '//' as in C++, 400 for `#' as in most scripting languages, 500 for -;;; `;' as in LISP or assembler and 600 for `%' as in TeX or PostScript. - -;;; Box quality differs according to language. For unknown languages (100) -;;; or for the C language (200), values are 10 for simple, 20 or 30 for -;;; rounded, and 40 for starred. For all others, box quality indicates -;;; the thickness in characters of the left and right sides of the box: -;;; values are 10, 20, 30 or 40 for 1, 2, 3 or 4 characters wide. C++ -;;; quality 10 is always promoted to 20. Roughly said, simple quality -;;; boxes (10) use comment delimiters to left and right of each comment -;;; line, and also for the top or bottom line when applicable. Rounded -;;; quality boxes (20 or 30) try to suggest rounded corners in boxes. -;;; Starred quality boxes (40) mostly use a left margin of asterisks or -;;; X'es, and use them also in box surroundings. Experiment a little to -;;; see what happens. - -;;; Box type values are 1 for fully opened boxes for which boxing is done -;;; only for the left and right but not for top or bottom, 2 for half -;;; single lined boxes for which boxing is done on all sides except top, -;;; 3 for fully single lined boxes for which boxing is done on all sides, -;;; 4 for half double lined boxes which is like type 2 but more bold, -;;; or 5 for fully double lined boxes which is like type 3 but more bold. - -;;; The special style 221 or 231 is worth a note, because it is fairly -;;; common: the whole C comment stays between a single opening `/*' -;;; and a single closing `*/'. The special style 111 deletes a box. -;;; The initial default style is 023 so, unless overriden, comments are -;;; put in single lined boxes, C comments are of rounded quality. - -(defvar rebox-default-style 0 "*Preferred style for box comments.") - -;;; Help strings for prompting or error messages. - -(defconst REBOX_HELP_FOR_LANGUAGE - "Box language is 100-none, 200-/*, 300-//, 400-#, 500-;, 600-%%") -(defconst REBOX_LANGUAGE_NONE 100) -(defconst REBOX_LANGUAGE_C 200) -(defconst REBOX_LANGUAGE_C++ 300) -(defconst REBOX_LANGUAGE_AWK 400) -(defconst REBOX_LANGUAGE_LISP 500) -(defconst REBOX_LANGUAGE_TEX 600) - -(defun rebox-help-string-for-language (language) - (cond ((= language 0) "default language") - ((= language REBOX_LANGUAGE_NONE) "no language") - ((= language REBOX_LANGUAGE_C) "plain C") - ((= language REBOX_LANGUAGE_C++) "C++") - ((= language REBOX_LANGUAGE_AWK) "sh/Perl/make") - ((= language REBOX_LANGUAGE_LISP) "LISP/assembler") - ((= language REBOX_LANGUAGE_TEX) "TeX/PostScript") - (t ""))) - -(defconst REBOX_HELP_FOR_QUALITY - "Box quality/width is 10-simple, 20-rounded, 30-rounded or 40-starred") -(defconst REBOX_QUALITY_SIMPLE_ONE 10) -(defconst REBOX_QUALITY_ROUNDED_TWO 20) -(defconst REBOX_QUALITY_ROUNDED_THREE 30) -(defconst REBOX_QUALITY_STARRED_FOUR 40) - -(defun rebox-help-string-for-quality (quality) - (cond ((= quality 0) "default quality") - ((= quality REBOX_QUALITY_SIMPLE_ONE) "square or 1-wide") - ((= quality REBOX_QUALITY_ROUNDED_TWO) "rounded or 2-wide") - ((= quality REBOX_QUALITY_ROUNDED_THREE) "rounded or 3-wide") - ((= quality REBOX_QUALITY_STARRED_FOUR) "starred or 4-wide") - (t ""))) - -(defconst REBOX_HELP_FOR_TYPE - "Box type is 1-open, 2-half-single, 3-single, 4-half-double or 5-double") -(defconst REBOX_TYPE_OPEN 1) -(defconst REBOX_TYPE_HALF_SINGLE 2) -(defconst REBOX_TYPE_SINGLE 3) -(defconst REBOX_TYPE_HALF_DOUBLE 4) -(defconst REBOX_TYPE_DOUBLE 5) - -(defun rebox-help-string-for-type (type) - (cond ((= type 0) "default type") - ((= type REBOX_TYPE_OPEN) "opened box") - ((= type REBOX_TYPE_HALF_SINGLE) "half normal") - ((= type REBOX_TYPE_SINGLE) "full normal") - ((= type REBOX_TYPE_HALF_DOUBLE) "half bold") - ((= type REBOX_TYPE_DOUBLE) "full bold") - (t ""))) - -(defconst REBOX_MAX_LANGUAGE 6) -(defconst REBOX_MAX_QUALITY 4) -(defconst REBOX_MAX_TYPE 5) +;;; This program is free software; you can 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +;;;; Introduction: + +;; For comments held within boxes, it is painful to fill paragraphs, while +;; stretching or shrinking the surrounding box "by hand", as needed. This +;; piece of GNU Emacs LISP code eases my life on this. I find only fair, +;; while giving all sources for a package using such boxed comments, to also +;; give the means I use for nicely modifying comments. So here they are! + +;;;; Installation: + +;; For most Emacs language editing modes, refilling does not make sense +;; outside comments, one may redefine the `M-q' command and link it to this +;; file. For example, I use this in my `.emacs' file: + +;; (add-hook 'c-mode-hook 'fp-c-mode-routine) +;; (defun fp-c-mode-routine () +;; (local-set-key "\M-q" 'rebox-comment)) +;; (autoload 'rebox-comment "rebox" nil t) +;; (autoload 'rebox-region "rebox" nil t) + +;;;; Usage: + +;; The function `rebox-comment' automatically discovers the extent of the +;; boxed comments near the cursor, possibly refills the text, then adjusts the +;; comment box style. When this command is executed, the cursor should be +;; within a comment, or else it should be between two comments, in which case +;; the command applies to the next comment. The function `rebox-region' does +;; the same, except that it takes the current region as a boxed comment. Both +;; commands obey numeric prefixes to add or remove a box, force a particular +;; box style, or to prevent refilling of text. Without such prefixes, the +;; commands may deduce the current comment box style from the comment itself +;; so the style is preserved. An unboxed comment is merely one of box styles. + +;; A style is identified by three non-zero digits. The _convention_ about +;; style numbering is such the the hundreds digit roughly represents the +;; programming language, the tens digit roughly represents a box quality (or +;; weight) and the units digit roughly a box type (or figure). Language, +;; quality and types are collectively referred to as style attributes. + +;; When rebuilding a boxed comment, attributes are selected independently of +;; each other. They may be specified by the digits of the value given as +;; Emacs commands argument prefix. If there is no such prefix, or if the +;; corresponding digit is zero, the attribute is taken from the value of the +;; default style instead. If the corresponding digit of the default style is +;; also zero, than the attribute is recognised and taken from the actual +;; comment box, as it existed before prior to the command. The value 1, which +;; is the simplest attribute, is ultimately taken if the recognition fails. + +;; The default style initial value is nil or 0. It may be preset to another +;; value through setting `rebox-default-style' in Emacs LISP code, or changed +;; to anything else though using a negative value for a prefix, in which case +;; the default style is set to the absolute value of the prefix. + +;; A `C-u' prefix avoids refilling the text, but forces using the default box +;; style. `C-u -' lets the user interact to select one attribute at a time. + +;;;; Convention: + +;; A programming language is associated with comment delimiters. Values are +;; 100 for none or unknown, 200 for `/*' and `*/' as in plain C, 300 for `//' +;; as in C++, 400 for `#' as in most scripting languages, 500 for `;' as in +;; LISP or assembler and 600 for `%' as in TeX or PostScript. + +;; Box quality differs according to language. For unknown languages (100) or +;; for the C language (200), values are 10 for simple, 20 for rounded, and 30 +;; or 40 for starred. Simple quality boxes (10) use comment delimiters to +;; left and right of each comment line, and also for the top or bottom line +;; when applicable. Rounded quality boxes (20) try to suggest rounded corners +;; in boxes. Starred quality boxes (40) mostly use a left margin of asterisks +;; or X'es, and use them also in box surroundings. For all others languages, +;; box quality indicates the thickness in characters of the left and right +;; sides of the box: values are 10, 20, 30 or 40 for 1, 2, 3 or 4 characters +;; wide. With C++, quality 10 is not useful, you should force 20 instead. + +;; Box type values are 1 for fully opened boxes for which boxing is done +;; only for the left and right but not for top or bottom, 2 for half +;; single lined boxes for which boxing is done on all sides except top, +;; 3 for fully single lined boxes for which boxing is done on all sides, +;; 4 for half double lined boxes which is like type 2 but more bold, +;; or 5 for fully double lined boxes which is like type 3 but more bold. + +;; The special style 221 is for C comments between a single opening `/*' and a +;; single closing `*/'. The special style 111 deletes a box. + +;;;; History: + +;; I first observed rounded corners, as in style 223 boxes, in code from +;; Warren Tucker, a previous maintainer of the `shar' package. Besides very +;; sepecial files, I was carefully avoiding to use such boxes for real work, +;; as I found them much too hard to maintain. My friend Paul Provost was +;; working at Taarna, a computer graphics place, which had boxes as part of +;; their coding standards. He asked that we try something to get out of his +;; misery, and this how `rebox.el' was originally written. I did not plan to +;; use it for myself, but Paul was so enthusiastic that I timidly started to +;; use boxes in my things, very little at first, but more and more as time +;; passed, yet not fully sure it was a good move. Later, many friends +;; spontaneously started to use this tool for real, some being very serious +;; workers. This finally convinced me that boxes are acceptable, after all. + +;; Template numbering dependent data. -;;; Request the style interactively, using the minibuffer. +(defvar rebox-default-style nil + "*Preferred style for box comments.") + +;; Box templates. -(defun rebox-ask-for-style () - (let (key language quality type) - (while (not language) - (message REBOX_HELP_FOR_LANGUAGE) - (setq key (read-char)) - (if (and (>= key ?0) (<= key (+ ?0 REBOX_MAX_LANGUAGE))) - (setq language (- key ?0)))) - (while (not quality) - (message REBOX_HELP_FOR_QUALITY) - (setq key (read-char)) - (if (and (>= key ?0) (<= key (+ ?0 REBOX_MAX_QUALITY))) - (setq quality (- key ?0)))) - (while (not type) - (message REBOX_HELP_FOR_TYPE) - (setq key (read-char)) - (if (and (>= key ?0) (<= key (+ ?0 REBOX_MAX_TYPE))) - (setq type (- key ?0)))) - (+ (* 100 language) (* 10 quality) type))) +(defconst rebox-templates -;;; Write some TEXT followed by an edited STYLE value into the minibuffer. + ;; Generic programming language templates. + ;; Adding 300 replaces `?' by `/', for C++ style comments. + ;; Adding 400 replaces `?' by `#', for scripting languages. + ;; Adding 500 replaces `?' by ';', for LISP and assembler. + ;; Adding 600 replaces `?' by `%', for TeX and PostScript. -(defun rebox-show-style (text style) - (message - (concat text (format " (%03d)" style) - ": " (rebox-help-string-for-language (* (/ style 100) 100)) - ", " (rebox-help-string-for-quality (* (% (/ style 10) 10) 10)) - ", " (rebox-help-string-for-type (% style 10))))) + '((11 "? box") -;;; Validate FLAG and usually return t if not interrupted by errors. -;;; But if FLAG is zero or negative, then change default box style and -;;; return nil. + (12 "? box ?" + "? --- ?") -(defun rebox-validate-flag (flag) + (13 "? --- ?" + "? box ?" + "? --- ?") - ;; Validate flag. - - (if (numberp flag) - (let ((value (if (< flag 0) (- flag) flag))) - (if (> (/ value 100) REBOX_MAX_LANGUAGE) - (error REBOX_HELP_FOR_LANGUAGE)) - (if (> (% (/ value 10) 10) REBOX_MAX_QUALITY) - (error REBOX_HELP_FOR_QUALITY)) - (if (> (% value 10) REBOX_MAX_TYPE) - (error REBOX_HELP_FOR_TYPE)))) - - ;; Change default box style if requested. - - (if (and (numberp flag) (<= flag 0)) - (progn - (setq flag (- flag)) - (if (not (zerop (/ flag 100))) - (setq rebox-default-style - (+ (* (/ flag 100) 100) - (% rebox-default-style 100)))) - (if (not (zerop (% (/ flag 10) 10))) - (setq rebox-default-style - (+ (* (/ rebox-default-style 100) 100) - (* (% (/ flag 10) 10) 10) - (% rebox-default-style 10)))) - (if (not (zerop (% flag 10))) - (setq rebox-default-style - (+ (* (/ rebox-default-style 10) 10) - (% flag 10)))) - (rebox-show-style "Default style" rebox-default-style) - nil) - t)) + (14 "? box ?" + "???????") -;;; Return the minimum value of the left margin of all lines, or -1 if -;;; all lines are empty. + (15 "???????" + "? box ?" + "???????") -(defun rebox-left-margin () - (let ((margin -1)) - (goto-char (point-min)) - (while (not (eobp)) - (skip-chars-forward " \t") - (if (not (looking-at "\n")) - (setq margin - (if (< margin 0) - (current-column) - (min margin (current-column))))) - (forward-line 1)) - margin)) + (21 "?? box") -;;; Return the maximum value of the right margin of all lines. Any -;;; sentence ending a line has a space guaranteed before the margin. + (22 "?? box ??" + "?? --- ??") -(defun rebox-right-margin () - (let ((margin 0) period) - (goto-char (point-min)) - (while (not (eobp)) - (end-of-line) - (if (bobp) - (setq period 0) - (backward-char 1) - (setq period (if (looking-at "[.?!]") 1 0)) - (forward-char 1)) - (setq margin (max margin (+ (current-column) period))) - (forward-char 1)) - margin)) + (23 "?? --- ??" + "?? box ??" + "?? --- ??") -;;; Return a regexp to match the start or end of a comment for some -;;; LANGUAGE, leaving the comment marks themselves available in \1. + (24 "?? box ??" + "?????????") -;; FIXME: Recognize style 1** boxes. + (25 "?????????" + "?? box ??" + "?????????") -(defun rebox-regexp-start (language) - (cond ((= language 0) "^[ \t]*\\(/\\*\\|//+\\|#+\\|;+\\|%+\\)") - ((= language REBOX_LANGUAGE_NONE) "^\\(\\)") - ((= language REBOX_LANGUAGE_C) "^[ \t]*\\(/\\*\\)") - ((= language REBOX_LANGUAGE_C++) "^[ \t]*\\(//+\\)") - ((= language REBOX_LANGUAGE_AWK) "^[ \t]*\\(#+\\)") - ((= language REBOX_LANGUAGE_LISP) "^[ \t]*\\(;+\\)") - ((= language REBOX_LANGUAGE_TEX) "^[ \t]*\\(%+\\)"))) + (31 "??? box") -(defun rebox-regexp-end (language) - (cond ((= language 0) "\\(\\*/\\|//+\\|#+\\|;+\\|%+\\)[ \t]*$") - ((= language REBOX_LANGUAGE_NONE) "\\(\\)$") - ((= language REBOX_LANGUAGE_C) "\\(\\*/\\)[ \t]*$") - ((= language REBOX_LANGUAGE_C++) "\\(//+\\)[ \t]*$") - ((= language REBOX_LANGUAGE_AWK) "\\(#+\\)[ \t]*$") - ((= language REBOX_LANGUAGE_LISP) "\\(;+\\)[ \t]*$") - ((= language REBOX_LANGUAGE_TEX) "\\(%+\\)[ \t]*$"))) + (32 "??? box ???" + "??? --- ???") -;;; By looking at the text starting at the cursor position, guess the -;;; language in use, and return it. + (33 "??? --- ???" + "??? box ???" + "??? --- ???") -(defun rebox-guess-language () - (let ((language REBOX_LANGUAGE_NONE) - (value (* 100 REBOX_MAX_LANGUAGE))) - (while (not (zerop value)) - (if (looking-at (rebox-regexp-start value)) - (progn - (setq language value) - (setq value 0)) - (setq value (- value 100)))) - language)) + (34 "??? box ???" + "???????????") -;;; Find the limits of the block of comments following or enclosing -;;; the cursor, or return an error if the cursor is not within such a -;;; block of comments. Extend it as far as possible in both -;;; directions, then narrow the buffer around it. + (35 "???????????" + "??? box ???" + "???????????") -(defun rebox-find-and-narrow () - (save-excursion - (let (start end temp language) + (41 "???? box") - ;; Find the start of the current or immediately following comment. + (42 "???? box ????" + "???? --- ????") - (beginning-of-line) - (skip-chars-forward " \t\n") - (beginning-of-line) - (if (not (looking-at (rebox-regexp-start 0))) - (progn - (setq temp (point)) - (if (re-search-forward "\\*/" nil t) - (progn - (re-search-backward "/\\*") - (if (> (point) temp) - (error "outside any comment block")) - (setq temp (point)) - (beginning-of-line) - (skip-chars-forward " \t") - (if (not (= (point) temp)) - (error "text before start of comment")) - (beginning-of-line)) - (error "outside any comment block")))) - - (setq start (point)) - (setq language (rebox-guess-language)) - - ;; - find the end of this comment - - (if (= language REBOX_LANGUAGE_C) - (progn - (search-forward "*/") - (if (not (looking-at "[ \t]*$")) - (error "text after end of comment")))) - (end-of-line) - (if (eobp) - (insert "\n") - (forward-char 1)) - (setq end (point)) + (43 "???? --- ????" + "???? box ????" + "???? --- ????") - ;; - try to extend the comment block backwards + (44 "???? box ????" + "?????????????") - (goto-char start) - (while (and (not (bobp)) - (if (= language REBOX_LANGUAGE_C) - (progn - (skip-chars-backward " \t\n") - (if (and (looking-at "[ \t]*\n[ \t]*/\\*") - (> (point) 2)) - (progn - (backward-char 2) - (if (looking-at "\\*/") - (progn - (re-search-backward "/\\*") - (setq temp (point)) - (beginning-of-line) - (skip-chars-forward " \t") - (if (= (point) temp) - (progn (beginning-of-line) t))))))) - (previous-line 1) - (looking-at (rebox-regexp-start language)))) - (setq start (point))) + (45 "?????????????" + "???? box ????" + "?????????????") - ;; - try to extend the comment block forward + ;; Textual (non programming) templates. - (goto-char end) - (while (looking-at (rebox-regexp-start language)) - (if (= language REBOX_LANGUAGE_C) - (progn - (re-search-forward "[ \t]*/\\*") - (re-search-forward "\\*/") - (if (looking-at "[ \t]*$") - (progn - (beginning-of-line) - (forward-line 1) - (setq end (point))))) - (forward-line 1) - (setq end (point)))) - - ;; - narrow to the whole block of comments + (111 "box") - (narrow-to-region start end)))) + (112 "| box |" + "+-----+") -;;; After refilling it if REFILL is not nil, while respecting a left -;;; MARGIN, put the narrowed buffer back into a boxed LANGUAGE comment -;;; box of a given QUALITY and TYPE. - -(defun rebox-reconstruct (refill margin language quality type) - (rebox-show-style "Style" (+ language quality type)) - - (let (right-margin nw nn ne ww ee sw ss se x xx) - - ;; - decide the elements of the box being produced - - (cond ((= language REBOX_LANGUAGE_NONE) - ;; - planify a comment for no language in particular - - (cond ((= quality REBOX_QUALITY_SIMPLE_ONE) - ;; - planify a simple box - - (cond ((= type REBOX_TYPE_OPEN) - (setq nw "") (setq sw "") - (setq ww "") (setq ee "")) - ((= type REBOX_TYPE_HALF_SINGLE) - (setq nw "") - (setq ww "| ") (setq ee " |") - (setq sw "+-") (setq ss ?-) (setq se "-+")) - ((= type REBOX_TYPE_SINGLE) - (setq nw "+-") (setq nn ?-) (setq ne "-+") - (setq ww "| ") (setq ee " |") - (setq sw "+-") (setq ss ?-) (setq se "-+")) - ((= type REBOX_TYPE_HALF_DOUBLE) - (setq nw "") - (setq ww "| ") (setq ee " |") - (setq sw "*=") (setq ss ?=) (setq se "=*")) - ((= type REBOX_TYPE_DOUBLE) - (setq nw "*=") (setq nn ?=) (setq ne "=*") - (setq ww "| ") (setq ee " |") - (setq sw "*=") (setq ss ?=) (setq se "=*")))) - - ((or (= quality REBOX_QUALITY_ROUNDED_TWO) - (= quality REBOX_QUALITY_ROUNDED_THREE)) - ;; - planify a rounded box - - (cond ((= type REBOX_TYPE_OPEN) - (setq nw "") (setq sw "") - (setq ww "| ") (setq ee " |")) - ((= type REBOX_TYPE_HALF_SINGLE) - (setq nw "") - (setq ww "| ") (setq ee " |") - (setq sw "`-") (setq ss ?-) (setq se "-'")) - ((= type REBOX_TYPE_SINGLE) - (setq nw ".-") (setq nn ?-) (setq ne "-.") - (setq ww "| ") (setq ee " |") - (setq sw "`-") (setq ss ?-) (setq se "-'")) - ((= type REBOX_TYPE_HALF_DOUBLE) - (setq nw "") - (setq ww "| " ) (setq ee " |" ) - (setq sw "\\=") (setq ss ?=) (setq se "=/" )) - ((= type REBOX_TYPE_DOUBLE) - (setq nw "/=" ) (setq nn ?=) (setq ne "=\\") - (setq ww "| " ) (setq ee " |" ) - (setq sw "\\=") (setq ss ?=) (setq se "=/" )))) - - ((= quality REBOX_QUALITY_STARRED_FOUR) - ;; - planify a starred box - - (cond ((= type REBOX_TYPE_OPEN) - (setq nw "") (setq sw "") - (setq ww "| ") (setq ee "")) - ((= type REBOX_TYPE_HALF_SINGLE) - (setq nw "") - (setq ww "* ") (setq ee " *") - (setq sw "**") (setq ss ?*) (setq se "**")) - ((= type REBOX_TYPE_SINGLE) - (setq nw "**") (setq nn ?*) (setq ne "**") - (setq ww "* ") (setq ee " *") - (setq sw "**") (setq ss ?*) (setq se "**")) - ((= type REBOX_TYPE_HALF_DOUBLE) - (setq nw "") - (setq ww "X ") (setq ee " X") - (setq sw "XX") (setq ss ?X) (setq se "XX")) - ((= type REBOX_TYPE_DOUBLE) - (setq nw "XX") (setq nn ?X) (setq ne "XX") - (setq ww "X ") (setq ee " X") - (setq sw "XX") (setq ss ?X) (setq se "XX")))))) - - ((= language REBOX_LANGUAGE_C) - ;; - planify a comment for C - - (cond ((= quality REBOX_QUALITY_SIMPLE_ONE) - ;; - planify a simple C comment - - (cond ((= type REBOX_TYPE_OPEN) - (setq nw "") (setq sw "") - (setq ww "/* ") (setq ee " */")) - ((= type REBOX_TYPE_HALF_SINGLE) - (setq nw "") - (setq ww "/* ") (setq ee " */") - (setq sw "/* ") (setq ss ?-) (setq se " */")) - ((= type REBOX_TYPE_SINGLE) - (setq nw "/* ") (setq nn ?-) (setq ne " */") - (setq ww "/* ") (setq ee " */") - (setq sw "/* ") (setq ss ?-) (setq se " */")) - ((= type REBOX_TYPE_HALF_DOUBLE) - (setq nw "") - (setq ww "/* ") (setq ee " */") - (setq sw "/* ") (setq ss ?=) (setq se " */")) - ((= type REBOX_TYPE_DOUBLE) - (setq nw "/* ") (setq nn ?=) (setq ne " */") - (setq ww "/* ") (setq ee " */") - (setq sw "/* ") (setq ss ?=) (setq se " */")))) - - ((or (= quality REBOX_QUALITY_ROUNDED_TWO) - (= quality REBOX_QUALITY_ROUNDED_THREE)) - ;; - planify a rounded C comment - - (cond ((= type REBOX_TYPE_OPEN) - ;; ``open rounded'' is a special case - (setq nw "") (setq sw "") - (setq ww " ") (setq ee "") - ;; Add `*/' now so it gets filled with the rest. - (goto-char (1- (point-max))) - (insert " */")) - ((= type REBOX_TYPE_HALF_SINGLE) - (setq nw "/*") (setq nn ? ) (setq ne " .") - (setq ww "| ") (setq ee " |") - (setq sw "`-") (setq ss ?-) (setq se "*/")) - ((= type REBOX_TYPE_SINGLE) - (setq nw "/*") (setq nn ?-) (setq ne "-.") - (setq ww "| ") (setq ee " |") - (setq sw "`-") (setq ss ?-) (setq se "*/")) - ((= type REBOX_TYPE_HALF_DOUBLE) - (setq nw "/*" ) (setq nn ? ) (setq ne " \\") - (setq ww "| " ) (setq ee " |" ) - (setq sw "\\=") (setq ss ?=) (setq se "*/" )) - ((= type REBOX_TYPE_DOUBLE) - (setq nw "/*" ) (setq nn ?=) (setq ne "=\\") - (setq ww "| " ) (setq ee " |" ) - (setq sw "\\=") (setq ss ?=) (setq se "*/" )))) - - ((= quality REBOX_QUALITY_STARRED_FOUR) - ;; - planify a starred C comment - - (cond ((= type REBOX_TYPE_OPEN) - (setq nw "/* ") (setq nn ? ) (setq ne "") - (setq ww " * ") (setq ee "") - (setq sw " */") (setq ss ? ) (setq se "")) - ((= type REBOX_TYPE_HALF_SINGLE) - (setq nw "/* ") (setq nn ? ) (setq ne " *") - (setq ww " * ") (setq ee " *") - (setq sw " **") (setq ss ?*) (setq se "**/")) - ((= type REBOX_TYPE_SINGLE) - (setq nw "/**") (setq nn ?*) (setq ne "**") - (setq ww " * ") (setq ee " *") - (setq sw " **") (setq ss ?*) (setq se "**/")) - ((= type REBOX_TYPE_HALF_DOUBLE) - (setq nw "/* " ) (setq nn ? ) (setq ne " *\\") - (setq ww "|* " ) (setq ee " *|" ) - (setq sw "\\**") (setq ss ?*) (setq se "**/" )) - ((= type REBOX_TYPE_DOUBLE) - (setq nw "/**" ) (setq nn ?*) (setq ne "**\\") - (setq ww "|* " ) (setq ee " *|" ) - (setq sw "\\**") (setq ss ?*) (setq se "**/" )))))) - - (t - ;; - planify a comment for all other things - - (if (and (= language REBOX_LANGUAGE_C++) - (= quality REBOX_QUALITY_SIMPLE_ONE)) - (setq quality REBOX_QUALITY_ROUNDED_TWO)) - (setq x (cond ((= language REBOX_LANGUAGE_C++) ?/) - ((= language REBOX_LANGUAGE_AWK) ?#) - ((= language REBOX_LANGUAGE_LISP) ?\;) - ((= language REBOX_LANGUAGE_TEX) ?%))) - (setq xx (make-string (/ quality 10) x)) - (setq ww (concat xx " ")) - (cond ((= type REBOX_TYPE_OPEN) - (setq nw "") (setq sw "") (setq ee "")) - ((= type REBOX_TYPE_HALF_SINGLE) - (setq ee (concat " " xx)) - (setq nw "") - (setq sw ww) (setq ss ?-) (setq se ee)) - ((= type REBOX_TYPE_SINGLE) - (setq ee (concat " " xx)) - (setq nw ww) (setq nn ?-) (setq ne ee) - (setq sw ww) (setq ss ?-) (setq se ee)) - ((= type REBOX_TYPE_HALF_DOUBLE) - (setq ee (concat " " xx)) - (setq xx (make-string (1+ (/ quality 10)) x)) - (setq nw "") - (setq sw xx) (setq ss x) (setq se xx)) - ((= type REBOX_TYPE_DOUBLE) - (setq ee (concat " " xx)) - (setq xx (make-string (1+ (/ quality 10)) x)) - (setq nw xx) (setq nn x) (setq ne xx) - (setq sw xx) (setq ss x) (setq se xx))))) - - ;; - possibly refill, and adjust margins to account for left inserts - - (if (not (and flag (listp flag))) - (let ((fill-prefix (make-string margin ? )) - (fill-column (- fill-column (+ (length ww) (length ee))))) - (fill-region (point-min) (point-max)))) + (113 "+-----+" + "| box |" + "+-----+") - (setq right-margin (+ (rebox-right-margin) (length ww))) + (114 "| box |" + "*=====*") - ;; - construct the box comment, from top to bottom + (115 "*=====*" + "| box |" + "*=====*") - (goto-char (point-min)) - (if (and (= language REBOX_LANGUAGE_C) - (or (= quality REBOX_QUALITY_ROUNDED_TWO) - (= quality REBOX_QUALITY_ROUNDED_THREE)) - (= type REBOX_TYPE_OPEN)) - (progn - ;; - construct an 221 or 231 style comment - - (skip-chars-forward " " (+ (point) margin)) - (insert (make-string (- margin (current-column)) ? ) - "/* ") - (end-of-line) - (forward-char 1) - (while (not (eobp)) - (skip-chars-forward " " (+ (point) margin)) - (or (= (char-after) ?\n) - (insert (make-string (- margin (current-column)) ? ) - ww)) - ;; (beginning-of-line) - (forward-line 1))) - - ;; - construct all other comment styles - - (if (not (zerop (length nw))) - ;; construct one top line - (progn - (indent-to margin) - (insert nw) - (if (or (not (eq nn ? )) (not (zerop (length ne)))) - (insert (make-string (- right-margin (current-column)) nn) - ne)) - (insert "\n"))) - - (while (not (eobp)) - ;; construct one middle line - (skip-chars-forward " " (+ (point) margin)) - (insert (make-string (- margin (current-column)) ? ) - ww) - (end-of-line) - (if (not (zerop (length ee))) - (progn - (indent-to right-margin) - (insert ee))) - (beginning-of-line) - (forward-line 1)) + (121 "| box |") - (if (not (zerop (length sw))) - ;; construct one bottom line - (progn - (indent-to margin) - (insert sw) - (if (or (not (eq ss ? )) (not (zerop (length se)))) - (insert (make-string (- right-margin (current-column)) ss) - se "\n"))))))) + (122 "| box |" + "`-----'") -;;; Add, delete or adjust a comment box in the narrowed buffer. -;;; Various FLAG values are explained at beginning of this file. + (123 ".-----." + "| box |" + "`-----'") -(defun rebox-engine (flag) - (let ((undo-list buffer-undo-list) - (marked-point (point-marker)) - (language (progn (goto-char (point-min)) (rebox-guess-language))) - (quality 0) - (type 0)) + (124 "| box |" + "\\=====/") - (untabify (point-min) (point-max)) + (125 "/=====\\" + "| box |" + "\\=====/") - ;; Remove all the comment marks, and move all the text rigidly to the - ;; left for insuring that the left margin stays at the same place. - ;; At the same time, try recognizing the box style, saving its quality - ;; in QUALITY and its type in TYPE. (LANGUAGE is already guessed.) + (141 "| box ") - (let ((indent-tabs-mode nil) - (previous-margin (rebox-left-margin)) - actual-margin) + (142 "* box *" + "*******") - ;; FIXME: Cleanup style 1** boxes. - ;; FIXME: Recognize really all cases of type and quality. + (143 "*******" + "* box *" + "*******") - ;; - remove all comment marks + (144 "X box X" + "XXXXXXX") - (if (= language REBOX_LANGUAGE_NONE) - nil - (goto-char (point-min)) - (while (re-search-forward (rebox-regexp-start language) nil t) - (goto-char (match-beginning 1)) - (delete-region (point) (match-end 1)) - (insert (make-string (- (match-end 1) (point)) ? ))) - (goto-char (point-min)) - (while (re-search-forward (rebox-regexp-end language) nil t) - (replace-match "" t t))) - - (if (= language REBOX_LANGUAGE_C) - (progn - (goto-char (point-min)) - (while (re-search-forward "\\*/ */\\*" nil t) - (replace-match " " t t)) - - (goto-char (point-min)) - (while (re-search-forward "^\\( *\\)|\\*\\(.*\\)\\*| *$" nil t) - (setq quality REBOX_QUALITY_STARRED_FOUR) - (setq type REBOX_TYPE_DOUBLE) - (replace-match "\\1 \\2" t)) - - (goto-char (point-min)) - (while (re-search-forward "^\\( *\\)\\*\\(.*\\)\\* *$" nil t) - (setq quality REBOX_QUALITY_STARRED_FOUR) - (setq type REBOX_TYPE_SINGLE) - (replace-match "\\1 \\2" t)) - - (goto-char (point-min)) - (while (re-search-forward "^\\( *\\)|\\(.*\\)| *$" nil t) - (setq quality REBOX_QUALITY_ROUNDED_TWO) - (replace-match "\\1 \\2" t)) - - (goto-char (point-min)) - (if (zerop quality) - (while (re-search-forward "^\\( +\\)\\* " nil t) - (setq quality REBOX_QUALITY_STARRED_FOUR) - (setq type REBOX_TYPE_OPEN) - (replace-match "\\1 " t))))) - - ;; - remove the first dashed or starred line + (145 "XXXXXXX" + "X box X" + "XXXXXXX") - (goto-char (point-min)) - (if (looking-at "^ *\\(--+\\|\\*\\*+\\)[.\+\\]? *\n") - (progn - (setq type REBOX_TYPE_SINGLE) - (replace-match "" t t)) - (if (looking-at "^ *\\(==\\|XX+\\|##+\\|;;+\\)[.\+\\]? *\n") - (progn - (setq type REBOX_TYPE_DOUBLE) - (replace-match "" t t)))) - - ;; - remove the last dashed or starred line - - (goto-char (point-max)) - (previous-line 1) - (if (looking-at "^ *[`\+\\]*--+ *\n") - (progn - (if (= type REBOX_TYPE_OPEN) - (setq type REBOX_TYPE_HALF_SINGLE)) - (replace-match "" t t)) - (if (looking-at "^ *[`\+\\]*\\(==+\\|##+\\|;;+\\) *\n") - (progn - (if (= type REBOX_TYPE_OPEN) - (setq type REBOX_TYPE_HALF_DOUBLE)) - (replace-match "" t t)) - (if (looking-at "^ *\\*\\*+[.\+\\]? *\n") - (progn - (setq quality REBOX_QUALITY_STARRED_FOUR) - (setq type REBOX_TYPE_HALF_SINGLE) - (replace-match "" t t)) - (if (looking-at "^ *XX+[.\+\\]? *\n") - (progn - (setq quality REBOX_QUALITY_STARRED_FOUR) - (setq type REBOX_TYPE_HALF_DOUBLE) - (replace-match "" t t)))))) - - ;; - remove all spurious whitespace + ;; C language templates. - (goto-char (point-min)) - (while (re-search-forward " +$" nil t) - (replace-match "" t t)) + (211 "/* box */") - (goto-char (point-min)) - (if (looking-at "\n+") - (replace-match "" t t)) + (212 "/* box */" + "/* --- */") - (goto-char (point-max)) - (skip-chars-backward "\n") - (if (looking-at "\n\n+") - (replace-match "\n" t t)) + (213 "/* --- */" + "/* box */" + "/* --- */") - (goto-char (point-min)) - (while (re-search-forward "\n\n\n+" nil t) - (replace-match "\n\n" t t)) + (214 "/* box */" + "/* === */") - ;; - move the text left is adequate + (215 "/* === */" + "/* box */" + "/* === */") - (setq actual-margin (rebox-left-margin)) - (if (not (= previous-margin actual-margin)) - (indent-rigidly (point-min) (point-max) - (- previous-margin actual-margin)))) + (221 "/* " + " box" + "*/") - ;; Override box style according to FLAG or chosen default style. - ;; Else, use either recognized style elements or built-in defaults. + (222 "/* ." + "| box |" + "`----*/") - (cond ((and (numberp flag) (not (zerop (/ flag 100)))) - (setq language (* (/ flag 100) 100))) - ((not (zerop (/ rebox-default-style 100))) - (setq language (* (/ rebox-default-style 100) 100)))) + (223 "/*----." + "| box |" + "`----*/") - (cond ((and (numberp flag) (not (zerop (% (/ flag 10) 10)))) - (setq quality (* (% (/ flag 10) 10) 10))) - ((not (zerop (% (/ rebox-default-style 10) 10))) - (setq quality (* (% (/ rebox-default-style 10) 10) 10))) - ((zerop quality) - (setq quality REBOX_QUALITY_ROUNDED_TWO))) + (224 "/* \\" + "| box |" + "\\====*/") - (cond ((and (numberp flag) (not (zerop (% flag 10)))) - (setq type (% flag 10))) - ((not (zerop (% rebox-default-style 10))) - (setq type (% rebox-default-style 10))) - ((zerop type) - (setq type 1))) + (225 "/*====\\" + "| box |" + "\\====*/") - ;; Possibly refill, then reconstruct the comment box. + (231 "/* " + " | box" + " */ ") - (let ((indent-tabs-mode nil)) - (rebox-reconstruct (not (and flag (listp flag))) - (rebox-left-margin) - language quality type)) + (232 "/* " + " | box | " + " *-----*/") - ;; Retabify to the left only (adapted from tabify.el). + (233 "/*-----* " + " | box | " + " *-----*/") - (if indent-tabs-mode - (progn - (goto-char (point-min)) - (while (re-search-forward "^[ \t][ \t]+" nil t) - (let ((column (current-column))) - (delete-region (match-beginning 0) (point)) - (indent-to column))))) + (234 "/* */" + "/* box */" + "/*-----*/") - ;; Restore the point position. + (235 "/*-----*/" + "/* box */" + "/*-----*/") - (goto-char (marker-position marked-point)) + (241 "/* " + " * box" + " */ ") - ;; Remove all intermediate boundaries from the undo list. + (242 "/* * " + " * box * " + " *******/") + + (243 "/******* " + " * box * " + " *******/") + + (244 "/* */" + "/* box */" + "/*******/") - (if (not (eq buffer-undo-list undo-list)) - (let ((cursor buffer-undo-list)) - (while (not (eq (cdr cursor) undo-list)) - (if (car (cdr cursor)) - (setq cursor (cdr cursor)) - (rplacd cursor (cdr (cdr cursor))))))))) - -;;; Set or reset the Taarna team's own way for a C style. You do not -;;; really want to know about this. - -(defvar c-mode-taarna-style nil "*Non-nil for Taarna team C-style.") - -(defun taarna-mode () - (interactive) - (if c-mode-taarna-style - (progn - - (setq c-mode-taarna-style nil) - (setq c-indent-level 2) - (setq c-continued-statement-offset 2) - (setq c-brace-offset 0) - (setq c-argdecl-indent 5) - (setq c-label-offset -2) - (setq c-tab-always-indent t) - (setq rebox-default-style REBOX_QUALITY_ROUNDED_TWO) - (message "C mode: GNU style")) - - (setq c-mode-taarna-style t) - (setq c-indent-level 4) - (setq c-continued-statement-offset 4) - (setq c-brace-offset -4) - (setq c-argdecl-indent 4) - (setq c-label-offset -4) - (setq c-tab-always-indent t) - (setq rebox-default-style - (+ REBOX_QUALITY_SIMPLE_ONE REBOX_TYPE_HALF_SINGLE)) - (message "C mode: Taarna style"))) + (245 "/*******/" + "/* box */" + "/*******/") + + (251 "/* " + " * box" + " */ "))) + +;; Template numbering dependent code. + +(defvar rebox-language-character-alist + '((3 . "/") (4 . "#") (5 . ";") (6 . "%")) + "Alist relating language to comment character, for generic languages.") + +;;; Regexp to match the comment start, given a LANGUAGE value as index. + +(defvar rebox-regexp-start + ["^[ \t]*\\(/\\*\\|//+\\|#+\\|;+\\|%+\\)" + "^" ; 1 + "^[ \t]*/\\*" ; 2 + "^[ \t]*//+" ; 3 + "^[ \t]*#+" ; 4 + "^[ \t]*\;+" ; 5 + "^[ \t]*%+" ; 6 + ]) + +;;; Request the style interactively, using the minibuffer. + +(defun rebox-ask-for-style () + (let (key language quality type) + (while (not language) + (message "\ +Box language is 100-none, 200-/*, 300-//, 400-#, 500-;, 600-%%") + (setq key (read-char)) + (when (and (>= key ?0) (<= key ?6)) + (setq language (- key ?0)))) + (while (not quality) + (message "\ +Box quality/width is 10-simple/1, 20-rounded/2, 30-starred/3 or 40-starred/4") + (setq key (read-char)) + (when (and (>= key ?0) (<= key ?4)) + (setq quality (- key ?0)))) + (while (not type) + (message "\ +Box type is 1-opened, 2-half-single, 3-single, 4-half-double or 5-double") + (setq key (read-char)) + (when (and (>= key ?0) (<= key ?5)) + (setq type (- key ?0)))) + (+ (* 100 language) (* 10 quality) type))) + +;; Template ingestion. + +;;; Information about registered templates. +(defvar rebox-recognition-data) +(defvar rebox-building-data) + +;;; Register all box templates. + +(defun rebox-register-all-templates () + (setq rebox-recognition-data nil + rebox-building-data nil) + (let ((templates rebox-templates)) + (while templates + (rebox-register-template (caar templates) (cdar templates)) + (setq templates (cdr templates))))) + +;;; Register a single box template. + +(defun rebox-register-template (style lines) + "Digest and register a single template. +The template is numbered STYLE, and is described by one to three LINES. + +If STYLE is below 100, it is generic for a few programming languages and +within lines, `?' is meant to represent the language comment character. +STYLE should be used only once through all `rebox-register-template' calls. + +One of the lines should contain the substring `box' to represent the comment +to be boxed, and if three lines are given, `box' should appear in the middle +one. Lines containing only spaces are implied as necessary before and after +the the `box' line, so we have three lines. + +Normally, all three template lines should be of the same length. If the first +line is shorter, it represents a start comment string to be bundled within the +first line of the comment text. If the third line is shorter, it represents +an end comment string to be bundled at the end of the comment text, and +refilled with it." + + (cond ((< style 100) + (let ((pairs rebox-language-character-alist) + language character) + (while pairs + (setq language (caar pairs) + character (cdar pairs) + pairs (cdr pairs)) + (rebox-register-template + (+ (* 100 language) style) + (mapcar (lambda (line) + (while (string-match "\?" line) + (setq line (replace-match character t t line))) + line) + lines))))) + ((assq style rebox-building-data) + (error "Style %d defined more than once")) + (t + (let (line1 line2 line3 regexp1 regexp2 regexp3 + merge-nw merge-se nw nn ne ww ee sw ss se) + (if (string-match "box" (car lines)) + (setq line1 nil + line2 (car lines) + lines (cdr lines)) + (setq line1 (car lines) + line2 (cadr lines) + lines (cddr lines)) + (unless (string-match "box" line2) + (error "Erroneous template for %d style" style))) + (setq line3 (and lines (car lines))) + (setq merge-nw (and line1 (< (length line1) (length line2))) + merge-se (and line3 (< (length line3) (length line2))) + nw (cond ((not line1) nil) + (merge-nw line1) + ((zerop (match-beginning 0)) nil) + (t (substring line1 0 (match-beginning 0)))) + nn (cond ((not line1) nil) + (merge-nw nil) + (t (let ((x (aref line1 (match-beginning 0)))) + (if (= x ? ) nil x)))) + ne (cond ((not line1) nil) + (merge-nw nil) + ((= (match-end 0) (length line1)) nil) + (t (rebox-rstrip (substring line1 (match-end 0))))) + ww (cond ((zerop (match-beginning 0)) nil) + (t (substring line2 0 (match-beginning 0)))) + ee (cond ((= (match-end 0) (length line2)) nil) + (t (rebox-rstrip (substring line2 (match-end 0))))) + sw (cond ((not line3) nil) + (merge-se nil) + ((zerop (match-beginning 0)) nil) + (t (substring line3 0 (match-beginning 0)))) + ss (cond ((not line3) nil) + (merge-se nil) + (t (let ((x (aref line3 (match-beginning 0)))) + (if (= x ? ) nil x)))) + se (cond ((not line3) nil) + (merge-se (rebox-rstrip line3)) + ((= (match-end 0) (length line3)) nil) + (t (rebox-rstrip (substring line3 (match-end 0)))))) + (setq rebox-building-data + (cons (cons style + (vector merge-nw merge-se + nw nn ne ww ee sw ss se)) + rebox-building-data)) + (setq regexp1 (cond + (merge-nw (concat "^[ \t]*" (rebox-regexp-quote nw))) + ((and nw (not nn) (not ne)) + (concat "^[ \t]*" + (rebox-regexp-quote nw) + "[ \t]*$")) + ((or nw nn ne) + (concat "^[ \t]*" + (rebox-regexp-quote nw) + "[ \t]*" + (regexp-quote (make-string 3 (or nn ? ))) + "*[ \t]*" + (rebox-regexp-quote ne) + "[ \t]*$"))) + regexp2 (and (not (string-equal (rebox-rstrip (concat ww ee)) + "")) + (concat "^[ \t]*" + (rebox-regexp-quote ww) + "...*[ \t]*" + (rebox-regexp-quote ee) + "[ \t]*$")) + regexp3 (cond + (merge-se (concat (rebox-regexp-quote se) "[ \t]*$")) + ((and sw (not ss) (not se)) + (concat "^[ \t]*" + (rebox-regexp-quote sw) + "[ \t]*$")) + ((or sw ss se) + (concat "^[ \t]*" + (rebox-regexp-quote sw) + "[ \t]*" + (regexp-quote (make-string 3 (or ss ? ))) + "*[ \t]*" + (rebox-regexp-quote se) + "[ \t]*$")))) + (when regexp1 + (let ((pair (assoc regexp1 rebox-recognition-data))) + (if pair + (aset (cdr pair) 0 (cons style (aref (cdr pair) 0))) + (setq rebox-recognition-data + (cons (cons regexp1 (vector (list style) nil nil)) + rebox-recognition-data))))) + (when regexp2 + (let ((pair (assoc regexp2 rebox-recognition-data))) + (if pair + (aset (cdr pair) 1 (cons style (aref (cdr pair) 1))) + (setq rebox-recognition-data + (cons (cons regexp2 (vector nil (list style) nil)) + rebox-recognition-data))))) + (when regexp3 + (let ((pair (assoc regexp3 rebox-recognition-data))) + (if pair + (aset (cdr pair) 2 (cons style (aref (cdr pair) 2))) + (setq rebox-recognition-data + (cons (cons regexp3 (vector nil nil (list style))) + rebox-recognition-data))))))))) + +;; User interaction. ;;; Rebox the current region. (defun rebox-region (flag) (interactive "P") - (if (eq flag '-) (setq flag (rebox-ask-for-style))) - (if (rebox-validate-flag flag) - (save-restriction - (narrow-to-region (region-beginning) (region-end)) - (rebox-engine flag)))) + (when (eq flag '-) + (setq flag (rebox-ask-for-style))) + (when (rebox-validate-flag flag) + (save-restriction + (narrow-to-region (region-beginning) (region-end)) + (rebox-engine flag)))) ;;; Rebox the surrounding comment. (defun rebox-comment (flag) (interactive "P") - (if (eq flag '-) (setq flag (rebox-ask-for-style))) - (if (rebox-validate-flag flag) - (save-restriction - (rebox-find-and-narrow) - (rebox-engine flag)))) + (when (eq flag '-) + (setq flag (rebox-ask-for-style))) + (when (rebox-validate-flag flag) + (save-restriction + (rebox-find-and-narrow) + (rebox-engine flag)))) + +;;; Validate FLAG and usually return t if not interrupted by errors. +;;; But if FLAG is zero or negative, then change default box style and +;;; return nil. + +(defun rebox-validate-flag (flag) + (cond ((not (numberp flag))) + ((> flag 0)) + (t (setq rebox-default-style (- flag)) + (message "Default style: %d" rebox-default-style) + nil))) + +;;; Add, delete or adjust a comment box in the narrowed buffer. +;;; Various FLAG values are explained at beginning of this file. + +(defun rebox-engine (flag) + (let ((undo-list buffer-undo-list) + (marked-point (point-marker)) + (previous-margin (rebox-left-margin)) + (previous-style (rebox-guess-style)) + (style 111) + refill) + (untabify (point-min) (point-max)) + ;; Decide about refilling and the box style to use. + (when previous-style + (setq style (rebox-merge-styles style previous-style))) + (when rebox-default-style + (setq style (rebox-merge-styles style rebox-default-style))) + (cond + ((not flag) (setq refill t)) + ((listp flag) (setq refill nil)) + ((numberp flag) + (setq refill t + style (rebox-merge-styles style flag))) + (t (error "Unexpected flag value %s" flag))) + (unless (assq style rebox-building-data) + (error "Style %d is not known" style)) + (message "Style: %d -> %d" (or previous-style 0) style) + ;; Remove all previous comment marks. + (when previous-style + (rebox-unbuild previous-style)) + ;; Remove all spurious whitespace. + (goto-char (point-min)) + (while (re-search-forward " +$" nil t) + (replace-match "" t t)) + (goto-char (point-min)) + (delete-char (- (skip-chars-forward "\n"))) + (goto-char (point-max)) + (when (= (preceding-char) ?\n) + (forward-char -1)) + (delete-char (- (skip-chars-backward "\n"))) + (goto-char (point-min)) + (while (re-search-forward "\n\n\n+" nil t) + (replace-match "\n\n" t t)) + ;; Move all the text rigidly to the left for insuring that the left + ;; margin stays at the same place. + (let ((indent-tabs-mode nil) + (actual-margin (rebox-left-margin))) + (unless (= previous-margin actual-margin) + (indent-rigidly (point-min) (point-max) + (- previous-margin actual-margin)))) + ;; Possibly refill, then build the comment box. + (let ((indent-tabs-mode nil)) + (rebox-build refill (rebox-left-margin) style)) + ;; Retabify to the left only (adapted from tabify.el). + (when indent-tabs-mode + (goto-char (point-min)) + (while (re-search-forward "^[ \t][ \t]+" nil t) + (let ((column (current-column))) + (delete-region (match-beginning 0) (point)) + (indent-to column)))) + ;; Restore the point position. + (goto-char (marker-position marked-point)) + ;; Remove all intermediate boundaries from the undo list. + (unless (eq buffer-undo-list undo-list) + (let ((cursor buffer-undo-list)) + (while (not (eq (cdr cursor) undo-list)) + (if (car (cdr cursor)) + (setq cursor (cdr cursor)) + (rplacd cursor (cdr (cdr cursor))))))))) + +;;; Return style attributes as per DEFAULT, in which attributes have been +;;; overridden by non-zero corresponding style attributes from STYLE. + +(defun rebox-merge-styles (default style) + (let ((default-vector (rebox-style-to-vector default)) + (style-vector (rebox-style-to-vector style))) + (unless (zerop (aref style-vector 0)) + (aset default-vector 0 (aref style-vector 0))) + (unless (zerop (aref style-vector 1)) + (aset default-vector 1 (aref style-vector 1))) + (unless (zerop (aref style-vector 2)) + (aset default-vector 2 (aref style-vector 2))) + (+ (* 100 (aref default-vector 0)) + (* 10 (aref default-vector 1)) + (aref default-vector 2)))) + +;;; Transform a style number into a vector triplet. + +(defun rebox-style-to-vector (number) + (vector (/ number 100) (% (/ number 10) 10) (% number 10))) + +;; Classification of boxes (and also, construction data). + +;;; Find the limits of the block of comments following or enclosing +;;; the cursor, or return an error if the cursor is not within such a +;;; block of comments. Extend it as far as possible in both +;;; directions, then narrow the buffer around it. + +(defun rebox-find-and-narrow () + (save-excursion + (let (start end temp language) + ;; Find the start of the current or immediately following comment. + (beginning-of-line) + (skip-chars-forward " \t\n") + (beginning-of-line) + (unless (looking-at (aref rebox-regexp-start 0)) + (setq temp (point)) + (unless (re-search-forward "\\*/" nil t) + (error "outside any comment block")) + (re-search-backward "/\\*") + (unless (<= (point) temp) + (error "outside any comment block")) + (setq temp (point)) + (beginning-of-line) + (skip-chars-forward " \t") + (unless (= (point) temp) + (error "text before start of comment")) + (beginning-of-line)) + (setq start (point) + language (rebox-guess-language)) + ;; Find the end of this comment. + (when (= language 2) + (search-forward "*/") + (unless (looking-at "[ \t]*$") + (error "text after end of comment"))) + (end-of-line) + (if (eobp) + (insert "\n") + (forward-char 1)) + (setq end (point)) + ;; Try to extend the comment block backwards. + (goto-char start) + (while (and (not (bobp)) + (cond ((= language 2) + (skip-chars-backward " \t\n") + (when (and (looking-at "[ \t]*\n[ \t]*/\\*") + (> (point) 2)) + (backward-char 2) + (when (looking-at "\\*/") + (re-search-backward "/\\*") + (setq temp (point)) + (beginning-of-line) + (skip-chars-forward " \t") + (when (= (point) temp) + (beginning-of-line) + t)))) + (t (previous-line 1) + (looking-at (aref rebox-regexp-start language))))) + (setq start (point))) + ;; Try to extend the comment block forward. + (goto-char end) + (while (looking-at (aref rebox-regexp-start language)) + (cond ((= language 2) + (re-search-forward "[ \t]*/\\*") + (re-search-forward "\\*/") + (when (looking-at "[ \t]*$") + (beginning-of-line) + (forward-line 1) + (setq end (point)))) + (t (forward-line 1) + (setq end (point))))) + ;; Narrow to the whole block of comments. + (narrow-to-region start end)))) + +;;; Guess the language in use for the text starting at the cursor position. + +(defun rebox-guess-language () + (let ((language 1) + (index (1- (length rebox-regexp-start)))) + (while (not (zerop index)) + (if (looking-at (aref rebox-regexp-start index)) + (setq language index + index 0) + (setq index (1- index)))) + language)) + +;; Guess the current box style from the text in the whole (narrowed) buffer. + +(defun rebox-guess-style () + (let (hits) + ;; Get a sorted list of plausible styles, each assorted with a weight. + ;; Weights are given so first lines are more heavy than last lines, and so + ;; that last lines are more heavy than middle lines. + (let ((data rebox-recognition-data) + (fragments nil) + regexp first middle last) + (while data + (setq regexp (caar data) + first (aref (cdar data) 0) + middle (aref (cdar data) 1) + last (aref (cdar data) 2) + data (cdr data)) + (goto-char (point-min)) + (while (re-search-forward regexp nil t) + (when (and first (= (match-beginning 0) (point-min))) + (setq fragments + (cons (mapcar (lambda (style) (cons style 3)) first) + fragments))) + (when middle + (setq fragments + (cons (mapcar (lambda (style) (cons style 1)) middle) + fragments))) + (when (and last (= (match-end 0) (1- (point-max)))) + (setq fragments + (cons (mapcar (lambda (style) (cons style 2)) last) + fragments))))) + (setq hits (sort (apply 'append fragments) + (lambda (a b) (< (car a) (car b)))))) + ;; Select the style which has the most total weight. + (let ((best-style nil) + (best-weight 0) + (style nil) + (weight 0)) + (while hits + (if (eq style (caar hits)) + (setq weight (+ (cdar hits) weight)) + (when (> weight best-weight) + (setq best-style style + best-weight weight)) + (setq style (caar hits) + weight (cdar hits))) + (setq hits (cdr hits))) + (when (>= weight best-weight) + (setq best-style style)) + best-style))) + +;;; Return a regexp matching STRING without its surrounding spaces. +;;; If STRING is nil, return the empty regexp. + +(defun rebox-regexp-quote (string) + (cond ((not string) "") + (t (while (and (> (length string) 0) + (= (aref string 0) ? )) + (setq string (substring string 1))) + (regexp-quote (rebox-rstrip string))))) + +;;; Return string with trailing spaces removed. + +(defun rebox-rstrip (string) + (while (and (> (length string) 0) + (= (aref string (1- (length string))) ? )) + (setq string (substring string 0 (1- (length string))))) + string) + +;; Reconstruction of boxes. + +;;; Remove all comment marks, using STYLE to hint at what these are. + +(defun rebox-unbuild (style) + (let* ((data (cdr (assq style rebox-building-data))) + (merge-nw (aref data 0)) + (merge-se (aref data 1)) + (nw (aref data 2)) + (nn (aref data 3)) + (ne (aref data 4)) + (ww (aref data 5)) + (ee (aref data 6)) + (sw (aref data 7)) + (ss (aref data 8)) + (se (aref data 9)) + (nw-regexp (and nw (concat "^[ \t]*" + (rebox-regexp-quote nw) + "[ \t]*"))) + (ww-regexp (and ww (concat "^[ \t]*" + (rebox-regexp-quote ww) + "[ \t]*"))) + (sw-regexp (and sw (concat "^[ \t]*" + (rebox-regexp-quote sw) + "[ \t]*")))) + ;; Clean up first line. + (goto-char (point-min)) + (skip-chars-forward "\n") + (end-of-line) + (delete-char (- (skip-chars-backward " \t"))) + (when ne + (let ((start (- (point) (length ne)))) + (when (and (>= start (point-min)) + (string-equal ne (buffer-substring start (point)))) + (delete-backward-char (length ne))))) + (beginning-of-line) + (if (and nw-regexp (looking-at nw-regexp)) + (replace-match (make-string (- (match-end 0) (match-beginning 0)) + ? )) + (skip-chars-forward " \t")) + (when nn + (let ((count (skip-chars-forward (char-to-string nn)))) + (delete-char (- count)) + (insert (make-string count ? )))) + ;; Clean up last line. + (goto-char (point-max)) + (delete-char (- (skip-chars-backward " \t\n"))) + (when se + (let ((start (- (point) (length se)))) + (when (and (>= start (point-min)) + (string-equal se (buffer-substring start (point)))) + (delete-backward-char (length se))))) + (insert "\n") + (forward-line -1) + (if (and sw-regexp (looking-at sw-regexp)) + (replace-match (make-string (- (match-end 0) (match-beginning 0)) + ? )) + (skip-chars-forward " \t")) + (when ss + (let ((count (skip-chars-forward (char-to-string ss)))) + (delete-char (- count)) + (insert (make-string count ? )))) + ;; Clean up all lines. + (goto-char (point-min)) + (while (not (eobp)) + (end-of-line) + (delete-char (- (skip-chars-backward " \t"))) + (when ee + (let ((start (- (point) (length ee)))) + (when (and (>= start (point-min)) + (string-equal ee (buffer-substring start (point)))) + (delete-backward-char (length ee))))) + (beginning-of-line) + (if (and ww-regexp (looking-at ww-regexp)) + (replace-match (make-string (- (match-end 0) (match-beginning 0)) + ? )) + (skip-chars-forward " \t")) + (forward-line 1)))) + +;;; After refilling it if REFILL is not nil, while respecting a left MARGIN, +;;; put the narrowed buffer back into a boxed comment according to box STYLE. + +(defun rebox-build (refill margin style) + (let* ((data (cdr (assq style rebox-building-data))) + (merge-nw (aref data 0)) + (merge-se (aref data 1)) + (nw (aref data 2)) + (nn (aref data 3)) + (ne (aref data 4)) + (ww (aref data 5)) + (ee (aref data 6)) + (sw (aref data 7)) + (ss (aref data 8)) + (se (aref data 9)) + right-margin) + ;; Merge a short end delimiter now, so it gets refilled with text. + (when merge-se + (goto-char (1- (point-max))) + (cond ((memq (preceding-char) '(? ?\t ?\n))) + ((memq (preceding-char) '(?. ?! ??)) + (insert " ")) + (t (insert " "))) + (insert se) + (setq se nil)) + ;; Possibly refill, and adjust margins to account for left inserts. + (when refill + (let ((fill-prefix (make-string margin ? )) + (fill-column (- fill-column (+ (length ww) (length ee))))) + (fill-region (point-min) (point-max)))) + (setq right-margin (+ (rebox-right-margin) (length ww))) + ;; Construct the top line. + (goto-char (point-min)) + (cond (merge-nw + (skip-chars-forward " " (+ (point) margin)) + (insert (make-string (- margin (current-column)) ? ) + nw) + (forward-line 1)) + ((or nw nn ne) + (indent-to margin) + (when nw + (insert nw)) + (if (not (or nn ne)) + (delete-char (- (skip-chars-backward " "))) + (insert (make-string (- right-margin (current-column)) + (or nn ? ))) + (when ne + (insert ne))) + (insert "\n"))) + ;; Construct all middle lines. + (while (not (eobp)) + (skip-chars-forward " " (+ (point) margin)) + (when (or ww ee (/= (following-char) ?\n)) + (insert (make-string (- margin (current-column)) ? )) + (when ww + (insert ww)) + (when ee + (end-of-line) + (indent-to right-margin) + (insert ee) + (delete-char (- (skip-chars-backward " "))))) + (forward-line 1)) + ;; Construct the bottom line. + (when (or sw ss se) + (indent-to margin) + (when sw + (insert sw)) + (if (not (or ss se)) + (delete-char (- (skip-chars-backward " "))) + (insert (make-string (- right-margin (current-column)) + (or ss ? ))) + (when se + (insert se))) + (insert "\n")))) + +;;; Return the minimum value of the left margin of all lines, or -1 if +;;; all lines are empty. + +(defun rebox-left-margin () + (let ((margin -1)) + (goto-char (point-min)) + (while (and (not (zerop margin)) (not (eobp))) + (skip-chars-forward " \t") + (let ((column (current-column))) + (and (not (= (following-char) ?\n)) + (or (< margin 0) (< column margin)) + (setq margin column))) + (forward-line 1)) + margin)) + +;;; Return the maximum value of the right margin of all lines. Any +;;; sentence ending a line has a space guaranteed before the margin. + +(defun rebox-right-margin () + (let ((margin 0) period) + (goto-char (point-min)) + (while (not (eobp)) + (end-of-line) + (if (bobp) + (setq period 0) + (backward-char 1) + (setq period (if (memq (following-char) '(?. ?? ?!)) 1 0)) + (forward-char 1)) + (setq margin (max margin (+ (current-column) period))) + (forward-char 1)) + margin)) + +;;; Initialize the internal structures. + +(rebox-register-all-templates) diff --git a/recode.spec b/recode.spec new file mode 100644 index 0000000..9948da2 --- /dev/null +++ b/recode.spec @@ -0,0 +1,46 @@ +# RPM spec file for Free recode. +# Copyright (C) 2000 Progiciels Bourbeau-Pinard inc. +# Franc,ois Pinard , 2000. + +Name: recode +Version: 3.5d +Release: 1 +Summary: Converter between charsets and surfaces +Group: Utilities/Text + +Vendor: Progiciels Bourbeau-Pinard inc. +Copyright: GPL, LGPL +Packager: Franc,ois Pinard + +Source: http://www.iro.umontreal.ca/contrib/recode/recode-3.5d.tar.gz +URL: http://www.iro.umontreal.ca/contrib/recode/HTML + +Buildroot: /bpi/titan/home/pinard/.rpm + +%description +The recode library converts files between character sets and usages. +It recognises or produces more than 300 different character sets +and transliterates files between almost any pair. When exact +transliteration are not possible, it gets rid of offending characters +or fall back on approximations. The recode program is a handy +front-end to the library. + +%prep +%setup +%patch + +%build + +%install + +%files +%doc /usr/doc/packages/recode/README +%doc /usr/doc +/usr/bin/recode +/usr/include/recode.h +/usr/include/recodext.h +/usr/info/recode.info*.gz +/usr/lib/librecode.a +/usr/lib/librecode.la +/usr/man/man1/recode.1.gz +/usr/share/locale/*/LC_MESSAGES/recode.mo diff --git a/src/ChangeLog b/src/ChangeLog index 5b85f6b..aba3a66 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,145 @@ +2000-06-28 François Pinard + + * task.c: Insert union wait portability from GNU make. + Reported by Bruno Haible. + + * testdump.c: New name for debug.c. + (module_testdump): Renamed from test_debug. + * Makefile.am (C_STEPS): Adjusted. + +2000-06-27 François Pinard + + * main.c: Check for HAVE_STRUCT_UTIMBUF, for OpenSTEP to work. + Reported by Jim Meyering and Tom Hageman. + +2000-06-26 François Pinard + + * Makefile.am (stamp-steps): Remove p in s///p. + + Avoid (sometimes questionable) compiler warnings. + * recodext.h (put_byte): Cast argument to char. + (RETURN_IF_NOGO): Use the brace trick instead of the else trick. + (RECODE_NO_SYMBOL_TYPE): New constant. + * applemac.c (module_applemac): Always return a value. + * combine.c (find_shifted_state, prepare_shifted_state): Declare + second argument as unsigned instead of unsigned short. Strange... + * debug.c (produce_count): Make a block, to avoid shadowing character. + * dump.c (dump, umdump): Add superfluous parentheses. + (undump): Add superfluous braces. + * html.c (transform_ucs2_html): Add superfluous parentheses. + * ibmpc.c (module_ibmpc): Always return a value. + * mergelex.py (section1): Define YY_NO_UNPUT. + * mixed.c (start_accumulation, recode_accumulated): No inline. + * names.c (code_to_ucs2): Cast value to int within ? operator. + (find_alias): Preset type. + * recode.c (recode_format_table): Handle RECODE_NO_LANGUAGE in switch. + * request.c (edit_sequence): Rename step to step2, avoid shadowing. + (add_to_sequence): Simplify code by using result of REALLOC in test. + (scan_charset): Rename alias to alias2, avoid shadowing. + * task.c (recode_if_nogo): Rename error to new_error, avoid shadowing. + * ucs.c (get_ucs2): Add superfluous parentheses. + * utf16.c (transform_utf16_ucs4): Add superfluous braces. + Reported by Bruno Haible. + +2000-05-08 François Pinard + + * base64.c (transform_base64_data): Skip \r. + Reported by Eli Zaretskii. + +2000-04-26 François Pinard + + * debug.c (produce_full_dump): Do not produce header when no data. + +2000-04-23 Bruno Haible + + * libiconv.c: Include "iconv.h". + * iconv.c: Include "iconv.h" instead of "libiconv.h". + + * recode.c (recode_perror): Fetch errno before anything else. + + * task.c: Provide W* macro replacements whenever needed. + (perform_pipe_sequence): Use instead of hardwired bit + masks. + + * rfc1345.c (transform_rfc1345_ucs2): Avoid double dereference. + + * combine.c (combine_byte_byte, combine_ucs2_byte, combine_byte_ucs2, + combine_ucs2_ucs2): Silence gcc warning. + * debug.c (produce_count): Remove unused variable 'cursor'. + * html.c (init_ucs2_html): Remove unused variables 'outer', 'done'. + (init_html_ucs2): Likewise. + (init_ucs2_html_v11, init_ucs2_html_v20, init_ucs2_html_v27, + init_ucs2_html_v32, init_ucs2_html_v40, init_html_v11_ucs2, + init_html_v20_ucs2, init_html_v27_ucs2, init_html_v32_ucs2, + init_html_v40_ucs2): Return a value. + * main.c (main): Silence gcc warning. + * names.c (make_argmatch_arrays): Remove unused variable 'hash'. + (list_full_charset): Remove unused variable 'ucs2'. + (find_and_report_subsets): Remove unused variable 'counter'. + * request.c (scan_identifier): Remove unused variable 'outer'. + (add_unsurfacers_to_sequence): Return true. + (scan_charset): Silence gcc warning. + * task.c (perform_memory_sequence, perform_pass_sequence): Silence + gcc warning. Include , needed for pipe(), fork(), + dup2(), close() declarations. Include , needed for + wait() declaration and W* macros. + (recode_perform_task): Silence gcc warning. + * utf16.c (transform_ucs4_utf16): Remove unused variables 'character', + 'chunk'. + * utf7.c (transform_utf16_utf7): Remove unused variable 'character'. + * vn.c (module_vietnamese): Return true. + + * outer.c (module_libiconv): New declaration. + +2000-03-14 Bruno Haible + + * iconv.c: Updated to libiconv 0.3, 1.0, 1.1, then 1.2. + +2000-03-03 François Pinard + + * Makefile.am (C_FALLBACKS): Replace lat1texi.c by texinfo.c. + * texinfo.c: New module. + * lat1texi.c: Deleted. + +2000-03-01 Karl Eichwalder + + * lat1texi.c: Add @exclamdown{}, @questiondown{}, @AA{}, @O{}, + @ss{}, @aa{}, @`i, @'i, and @o{}. + +2000-02-06 François Pinard + + * recodext.h: Some structures progressively shifted their meaning + with recode evolving, time for some global nomenclature changes: + symbol is now alias, charset is now symbol, charset_type is data_type. + (struct recode_symbol): Rename charset_data to data, replace + charset_flag with type. + * All adjusted. + +2000-02-05 François Pinard + + * recodext.h, freeze.c, request.c, outer.c: Implement tree_charset. + +2000-01-28 François Pinard + + * quotearg.c, quotearg.h: New files, from elsewhere. + * Makefile.am: Adjusted. + * common.h, names.c, main.c: Adjusted for new argmatch call. + +2000-01-26 François Pinard + + * main.c (main): Write version in two blocks rather than three. + Reported by Jim Meyering. + +2000-01-12 Akim Demaille + + * lat1texi.c: Updated to newer Texinfo commands. That is, + change @ptexc to @, and @ptexi to @dotless{i}. + +1999-12-30 François Pinard + + * main.c (main): Rephrase some error messages so they are less + telegraphic, add a few messages to better explain some errors. + 1999-12-29 François Pinard * mixed.c (struct mixed): Delete original_task. @@ -5,7 +147,7 @@ (recode_accumulated): Merges previous plumb_buffer_to_output, a call to recode_perform_task, and previous plumb_input_to_output. Usages adjusted accordingly. - + 1999-12-28 François Pinard * iconv.c: New file, from Bruno Haible's libiconv 0.2. @@ -22,7 +164,7 @@ * task.c (recode_if_nogo): New function. * recodext.h: Declare it. (SET_TASK_ERROR, RETURN_IF_NOGO): Use it. - + 1999-12-22 François Pinard * vn.c (viscii_viqr_data, viscii_vni_data): Final DONE was missing. diff --git a/src/Makefile.am b/src/Makefile.am index 18795b0..7507407 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,5 +1,5 @@ # Makefile for `recode' sources. -# Copyright © 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc. +# Copyright © 1991,92,93,94,95,96,97,98,99, 00 Free Software Foundation, Inc. # François Pinard , 1988. # This program is free software; you can redistribute it and/or modify @@ -24,18 +24,18 @@ man_MANS = recode.1 include_HEADERS = recode.h recodext.h noinst_HEADERS = argmatch.h charname.h common.h decsteps.h \ -fr-charname.h hash.h inisteps.h libiconv.h rfc1345.h $(H_FALLBACKS) \ -$(H_SURFACES) +fr-charname.h hash.h inisteps.h libiconv.h quotearg.h rfc1345.h \ +$(H_FALLBACKS) $(H_SURFACES) EXTRA_DIST = stamp-steps $(L_STEPS) mergelex.py $(MANS) C_STEPS = african.c afrtran.c applemac.c atarist.c bangbang.c cdcnos.c \ -debug.c ebcdic.c ibmpc.c iconqnx.c lat1asci.c mule.c strip-data.c \ +ebcdic.c ibmpc.c iconqnx.c lat1asci.c mule.c strip-data.c testdump.c \ ucs.c utf16.c utf7.c utf8.c varia.c vn.c $(C_FALLBACKS) $(C_SURFACES) OLD_C_STEPS = next.c L_STEPS = ascilat1.l $(L_FALLBACKS) $(L_SURFACES) H_FALLBACKS = -C_FALLBACKS = flat.c html.c lat1ltex.c lat1texi.c lat1txte.c rfc1345.c +C_FALLBACKS = flat.c html.c lat1ltex.c lat1txte.c rfc1345.c texinfo.c L_FALLBACKS = ltexlat1.l txtelat1.l H_SURFACES = base64.h @@ -46,8 +46,8 @@ recode_SOURCES = main.c freeze.c mixed.c recode_LDADD = librecode.la ../lib/libreco.a librecode_la_SOURCES = argmatch.c charname.c combine.c fr-charname.c \ -hash.c iconv.c libiconv.c merged.c names.c outer.c recode.c request.c \ -strip-pool.c task.c $(C_STEPS) +hash.c iconv.c libiconv.c merged.c names.c outer.c quotearg.c recode.c \ +request.c strip-pool.c task.c $(C_STEPS) librecode_la_LDFLAGS = -version-info 0:0:0 INCLUDES = -I.. -I$(srcdir) -I$(top_srcdir)/lib -I$(top_srcdir)/libiconv @@ -68,7 +68,7 @@ stamp-steps: $(C_STEPS) merged.c @echo "Updating decsteps.h and inisteps.h" @(cd $(srcdir) && grep -h '^module_' $(C_STEPS) merged.c ) \ | sed 's/ .*//' > liste.tmp - @sed 's/\(.*\)/bool \1 PARAMS ((struct recode_outer *));/p' \ + @sed 's/\(.*\)/bool \1 PARAMS ((struct recode_outer *));/' \ liste.tmp > decsteps.tmp @sed 's/\(.*\)/ if (!\1 (outer)) return false;/' \ liste.tmp > inisteps.tmp diff --git a/src/Makefile.in b/src/Makefile.in index b8004a0..6c68dd4 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -11,7 +11,7 @@ # PARTICULAR PURPOSE. # Makefile for `recode' sources. -# Copyright © 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc. +# Copyright © 1991,92,93,94,95,96,97,98,99, 00 Free Software Foundation, Inc. # François Pinard , 1988. # This program is free software; you can redistribute it and/or modify @@ -83,43 +83,24 @@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ CC = @CC@ CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ MOFILES = @MOFILES@ -MSGFMT = @MSGFMT@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ RANLIB = @RANLIB@ U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ VERSION = @VERSION@ -l = @l@ AUTOMAKE_OPTIONS = gnits ansi2knr bin_PROGRAMS = recode @@ -127,17 +108,17 @@ lib_LTLIBRARIES = librecode.la man_MANS = recode.1 include_HEADERS = recode.h recodext.h -noinst_HEADERS = argmatch.h charname.h common.h decsteps.h fr-charname.h hash.h inisteps.h libiconv.h rfc1345.h $(H_FALLBACKS) $(H_SURFACES) +noinst_HEADERS = argmatch.h charname.h common.h decsteps.h fr-charname.h hash.h inisteps.h libiconv.h quotearg.h rfc1345.h $(H_FALLBACKS) $(H_SURFACES) EXTRA_DIST = stamp-steps $(L_STEPS) mergelex.py $(MANS) -C_STEPS = african.c afrtran.c applemac.c atarist.c bangbang.c cdcnos.c debug.c ebcdic.c ibmpc.c iconqnx.c lat1asci.c mule.c strip-data.c ucs.c utf16.c utf7.c utf8.c varia.c vn.c $(C_FALLBACKS) $(C_SURFACES) +C_STEPS = african.c afrtran.c applemac.c atarist.c bangbang.c cdcnos.c ebcdic.c ibmpc.c iconqnx.c lat1asci.c mule.c strip-data.c testdump.c ucs.c utf16.c utf7.c utf8.c varia.c vn.c $(C_FALLBACKS) $(C_SURFACES) OLD_C_STEPS = next.c L_STEPS = ascilat1.l $(L_FALLBACKS) $(L_SURFACES) H_FALLBACKS = -C_FALLBACKS = flat.c html.c lat1ltex.c lat1texi.c lat1txte.c rfc1345.c +C_FALLBACKS = flat.c html.c lat1ltex.c lat1txte.c rfc1345.c texinfo.c L_FALLBACKS = ltexlat1.l txtelat1.l H_SURFACES = base64.h @@ -147,7 +128,7 @@ L_SURFACES = recode_SOURCES = main.c freeze.c mixed.c recode_LDADD = librecode.la ../lib/libreco.a -librecode_la_SOURCES = argmatch.c charname.c combine.c fr-charname.c hash.c iconv.c libiconv.c merged.c names.c outer.c recode.c request.c strip-pool.c task.c $(C_STEPS) +librecode_la_SOURCES = argmatch.c charname.c combine.c fr-charname.c hash.c iconv.c libiconv.c merged.c names.c outer.c quotearg.c recode.c request.c strip-pool.c task.c $(C_STEPS) librecode_la_LDFLAGS = -version-info 0:0:0 @@ -177,13 +158,13 @@ ANSI2KNR = @ANSI2KNR@ librecode_la_LIBADD = librecode_la_OBJECTS = argmatch$U.lo charname$U.lo combine$U.lo \ fr-charname$U.lo hash$U.lo iconv$U.lo libiconv$U.lo merged$U.lo \ -names$U.lo outer$U.lo recode$U.lo request$U.lo strip-pool$U.lo \ -task$U.lo african$U.lo afrtran$U.lo applemac$U.lo atarist$U.lo \ -bangbang$U.lo cdcnos$U.lo debug$U.lo ebcdic$U.lo ibmpc$U.lo \ -iconqnx$U.lo lat1asci$U.lo mule$U.lo strip-data$U.lo ucs$U.lo \ -utf16$U.lo utf7$U.lo utf8$U.lo varia$U.lo vn$U.lo flat$U.lo html$U.lo \ -lat1ltex$U.lo lat1texi$U.lo lat1txte$U.lo rfc1345$U.lo base64$U.lo \ -dump$U.lo endline$U.lo permut$U.lo quoted$U.lo +names$U.lo outer$U.lo quotearg$U.lo recode$U.lo request$U.lo \ +strip-pool$U.lo task$U.lo african$U.lo afrtran$U.lo applemac$U.lo \ +atarist$U.lo bangbang$U.lo cdcnos$U.lo ebcdic$U.lo ibmpc$U.lo \ +iconqnx$U.lo lat1asci$U.lo mule$U.lo strip-data$U.lo testdump$U.lo \ +ucs$U.lo utf16$U.lo utf7$U.lo utf8$U.lo varia$U.lo vn$U.lo flat$U.lo \ +html$U.lo lat1ltex$U.lo lat1txte$U.lo rfc1345$U.lo texinfo$U.lo \ +base64$U.lo dump$U.lo endline$U.lo permut$U.lo quoted$U.lo PROGRAMS = $(bin_PROGRAMS) recode_OBJECTS = main$U.o freeze$U.o mixed$U.o @@ -357,8 +338,6 @@ charname_.c: charname.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/charname.c; then echo $(srcdir)/charname.c; else echo charname.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > charname_.c combine_.c: combine.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/combine.c; then echo $(srcdir)/combine.c; else echo combine.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > combine_.c -debug_.c: debug.c $(ANSI2KNR) - $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/debug.c; then echo $(srcdir)/debug.c; else echo debug.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > debug_.c dump_.c: dump.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dump.c; then echo $(srcdir)/dump.c; else echo dump.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > dump_.c ebcdic_.c: ebcdic.c $(ANSI2KNR) @@ -385,8 +364,6 @@ lat1asci_.c: lat1asci.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lat1asci.c; then echo $(srcdir)/lat1asci.c; else echo lat1asci.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > lat1asci_.c lat1ltex_.c: lat1ltex.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lat1ltex.c; then echo $(srcdir)/lat1ltex.c; else echo lat1ltex.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > lat1ltex_.c -lat1texi_.c: lat1texi.c $(ANSI2KNR) - $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lat1texi.c; then echo $(srcdir)/lat1texi.c; else echo lat1texi.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > lat1texi_.c lat1txte_.c: lat1txte.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lat1txte.c; then echo $(srcdir)/lat1txte.c; else echo lat1txte.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > lat1txte_.c libiconv_.c: libiconv.c $(ANSI2KNR) @@ -405,6 +382,8 @@ outer_.c: outer.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/outer.c; then echo $(srcdir)/outer.c; else echo outer.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > outer_.c permut_.c: permut.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/permut.c; then echo $(srcdir)/permut.c; else echo permut.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > permut_.c +quotearg_.c: quotearg.c $(ANSI2KNR) + $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quotearg.c; then echo $(srcdir)/quotearg.c; else echo quotearg.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > quotearg_.c quoted_.c: quoted.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quoted.c; then echo $(srcdir)/quoted.c; else echo quoted.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > quoted_.c recode_.c: recode.c $(ANSI2KNR) @@ -419,6 +398,10 @@ strip-pool_.c: strip-pool.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strip-pool.c; then echo $(srcdir)/strip-pool.c; else echo strip-pool.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strip-pool_.c task_.c: task.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/task.c; then echo $(srcdir)/task.c; else echo task.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > task_.c +testdump_.c: testdump.c $(ANSI2KNR) + $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/testdump.c; then echo $(srcdir)/testdump.c; else echo testdump.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > testdump_.c +texinfo_.c: texinfo.c $(ANSI2KNR) + $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/texinfo.c; then echo $(srcdir)/texinfo.c; else echo texinfo.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > texinfo_.c ucs_.c: ucs.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ucs.c; then echo $(srcdir)/ucs.c; else echo ucs.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > ucs_.c utf16_.c: utf16.c $(ANSI2KNR) @@ -434,18 +417,19 @@ vn_.c: vn.c $(ANSI2KNR) african_.o african_.lo afrtran_.o afrtran_.lo applemac_.o applemac_.lo \ argmatch_.o argmatch_.lo atarist_.o atarist_.lo bangbang_.o \ bangbang_.lo base64_.o base64_.lo cdcnos_.o cdcnos_.lo charname_.o \ -charname_.lo combine_.o combine_.lo debug_.o debug_.lo dump_.o dump_.lo \ -ebcdic_.o ebcdic_.lo endline_.o endline_.lo flat_.o flat_.lo \ -fr-charname_.o fr-charname_.lo freeze_.o freeze_.lo hash_.o hash_.lo \ -html_.o html_.lo ibmpc_.o ibmpc_.lo iconqnx_.o iconqnx_.lo iconv_.o \ -iconv_.lo lat1asci_.o lat1asci_.lo lat1ltex_.o lat1ltex_.lo lat1texi_.o \ -lat1texi_.lo lat1txte_.o lat1txte_.lo libiconv_.o libiconv_.lo main_.o \ -main_.lo merged_.o merged_.lo mixed_.o mixed_.lo mule_.o mule_.lo \ -names_.o names_.lo outer_.o outer_.lo permut_.o permut_.lo quoted_.o \ -quoted_.lo recode_.o recode_.lo request_.o request_.lo rfc1345_.o \ -rfc1345_.lo strip-data_.o strip-data_.lo strip-pool_.o strip-pool_.lo \ -task_.o task_.lo ucs_.o ucs_.lo utf16_.o utf16_.lo utf7_.o utf7_.lo \ -utf8_.o utf8_.lo varia_.o varia_.lo vn_.o vn_.lo : $(ANSI2KNR) +charname_.lo combine_.o combine_.lo dump_.o dump_.lo ebcdic_.o \ +ebcdic_.lo endline_.o endline_.lo flat_.o flat_.lo fr-charname_.o \ +fr-charname_.lo freeze_.o freeze_.lo hash_.o hash_.lo html_.o html_.lo \ +ibmpc_.o ibmpc_.lo iconqnx_.o iconqnx_.lo iconv_.o iconv_.lo \ +lat1asci_.o lat1asci_.lo lat1ltex_.o lat1ltex_.lo lat1txte_.o \ +lat1txte_.lo libiconv_.o libiconv_.lo main_.o main_.lo merged_.o \ +merged_.lo mixed_.o mixed_.lo mule_.o mule_.lo names_.o names_.lo \ +outer_.o outer_.lo permut_.o permut_.lo quotearg_.o quotearg_.lo \ +quoted_.o quoted_.lo recode_.o recode_.lo request_.o request_.lo \ +rfc1345_.o rfc1345_.lo strip-data_.o strip-data_.lo strip-pool_.o \ +strip-pool_.lo task_.o task_.lo testdump_.o testdump_.lo texinfo_.o \ +texinfo_.lo ucs_.o ucs_.lo utf16_.o utf16_.lo utf7_.o utf7_.lo utf8_.o \ +utf8_.lo varia_.o varia_.lo vn_.o vn_.lo : $(ANSI2KNR) install-man1: $(mkinstalldirs) $(DESTDIR)$(man1dir) @@ -546,50 +530,54 @@ distdir: $(DISTFILES) fi; \ done african.lo african.o : african.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h afrtran.lo afrtran.o : afrtran.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h applemac.lo applemac.o : applemac.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h -argmatch.lo argmatch.o : argmatch.c ../config.h argmatch.h + argmatch.h ../lib/error.h recodext.h recode.h +argmatch.lo argmatch.o : argmatch.c argmatch.h ../config.h \ + ../lib/error.h quotearg.h atarist.lo atarist.o : atarist.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h bangbang.lo bangbang.o : bangbang.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h base64.lo base64.o : base64.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h base64.h + argmatch.h ../lib/error.h recodext.h recode.h base64.h cdcnos.lo cdcnos.o : cdcnos.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h charname.lo charname.o : charname.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h charname.h + argmatch.h ../lib/error.h recodext.h recode.h charname.h combine.lo combine.o : combine.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h hash.h + argmatch.h ../lib/error.h recodext.h recode.h hash.h debug.lo debug.o : debug.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h hash.h -dump.lo dump.o : dump.c common.h ../config.h ../lib/xalloc.h \ + argmatch.h ../lib/error.h recodext.h recode.h hash.h +dump.lo dump.o : dump.c common.h ../config.h ../lib/xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h ebcdic.lo ebcdic.o : ebcdic.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h endline.lo endline.o : endline.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h -flat.lo flat.o : flat.c common.h ../config.h ../lib/xalloc.h \ + argmatch.h ../lib/error.h recodext.h recode.h +flat.lo flat.o : flat.c common.h ../config.h ../lib/xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h fr-charname.lo fr-charname.o : fr-charname.c common.h ../config.h \ - ../lib/xalloc.h ../lib/error.h recodext.h recode.h \ + ../lib/xalloc.h argmatch.h ../lib/error.h recodext.h recode.h \ fr-charname.h -freeze.o: freeze.c common.h ../config.h ../lib/xalloc.h ../lib/error.h \ - recodext.h recode.h +freeze.o: freeze.c common.h ../config.h ../lib/xalloc.h argmatch.h \ + ../lib/error.h recodext.h recode.h hash.lo hash.o : hash.c ../config.h hash.h -html.lo html.o : html.c common.h ../config.h ../lib/xalloc.h \ +html.lo html.o : html.c common.h ../config.h ../lib/xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h hash.h ibmpc.lo ibmpc.o : ibmpc.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h iconqnx.lo iconqnx.o : iconqnx.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h iconv.lo iconv.o : iconv.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h libiconv.h \ + argmatch.h ../lib/error.h recodext.h recode.h \ + ../libiconv/iconv.h ../libiconv/converters.h \ ../libiconv/ascii.h ../libiconv/utf8.h ../libiconv/ucs2.h \ - ../libiconv/ucs4.h ../libiconv/utf16.h ../libiconv/utf7.h \ + ../libiconv/ucs2be.h ../libiconv/ucs2le.h ../libiconv/ucs4.h \ + ../libiconv/ucs4be.h ../libiconv/ucs4le.h ../libiconv/utf16.h \ + ../libiconv/utf16be.h ../libiconv/utf16le.h ../libiconv/utf7.h \ ../libiconv/ucs2internal.h ../libiconv/ucs2swapped.h \ ../libiconv/ucs4internal.h ../libiconv/ucs4swapped.h \ ../libiconv/java.h ../libiconv/iso8859_1.h \ @@ -599,11 +587,12 @@ iconv.lo iconv.o : iconv.c common.h ../config.h ../lib/xalloc.h \ ../libiconv/iso8859_8.h ../libiconv/iso8859_9.h \ ../libiconv/iso8859_10.h ../libiconv/iso8859_13.h \ ../libiconv/iso8859_14.h ../libiconv/iso8859_15.h \ - ../libiconv/koi8_r.h ../libiconv/koi8_u.h ../libiconv/koi8_ru.h \ - ../libiconv/cp1250.h ../libiconv/cp1251.h ../libiconv/cp1252.h \ - ../libiconv/cp1253.h ../libiconv/cp1254.h ../libiconv/cp1255.h \ - ../libiconv/cp1256.h ../libiconv/cp1257.h ../libiconv/cp1258.h \ - ../libiconv/cp850.h ../libiconv/cp866.h ../libiconv/mac_roman.h \ + ../libiconv/iso8859_16.h ../libiconv/koi8_r.h \ + ../libiconv/koi8_u.h ../libiconv/koi8_ru.h ../libiconv/cp1250.h \ + ../libiconv/cp1251.h ../libiconv/cp1252.h ../libiconv/cp1253.h \ + ../libiconv/cp1254.h ../libiconv/cp1255.h ../libiconv/cp1256.h \ + ../libiconv/cp1257.h ../libiconv/cp1258.h ../libiconv/cp850.h \ + ../libiconv/cp866.h ../libiconv/mac_roman.h \ ../libiconv/mac_centraleurope.h ../libiconv/mac_iceland.h \ ../libiconv/mac_croatian.h ../libiconv/mac_romania.h \ ../libiconv/mac_cyrillic.h ../libiconv/mac_ukraine.h \ @@ -614,74 +603,87 @@ iconv.lo iconv.o : iconv.c common.h ../config.h ../lib/xalloc.h \ ../libiconv/georgian_academy.h ../libiconv/georgian_ps.h \ ../libiconv/mulelao.h ../libiconv/cp1133.h ../libiconv/tis620.h \ ../libiconv/cp874.h ../libiconv/viscii.h ../libiconv/tcvn.h \ - ../libiconv/jisx0201.h ../libiconv/jisx0208.h \ - ../libiconv/jisx0212.h ../libiconv/gb2312.h ../libiconv/gbk.h \ - ../libiconv/gbkext1.h ../libiconv/gbkext2.h \ + ../libiconv/iso646_jp.h ../libiconv/jisx0201.h \ + ../libiconv/jisx0208.h ../libiconv/jisx0212.h \ + ../libiconv/iso646_cn.h ../libiconv/gb2312.h \ + ../libiconv/isoir165.h ../libiconv/isoir165ext.h \ + ../libiconv/gbk.h ../libiconv/gbkext1.h ../libiconv/gbkext2.h \ ../libiconv/gbkext_inv.h ../libiconv/cp936ext.h \ ../libiconv/cns11643.h ../libiconv/cns11643_1.h \ ../libiconv/cns11643_2.h ../libiconv/cns11643_3.h \ ../libiconv/cns11643_inv.h ../libiconv/big5.h \ ../libiconv/ksc5601.h ../libiconv/johab_hangul.h \ - ../libiconv/johab_decomp.h ../libiconv/euc_jp.h \ - ../libiconv/sjis.h ../libiconv/cp932.h ../libiconv/cp932ext.h \ - ../libiconv/iso2022_jp.h ../libiconv/iso2022_jp1.h \ - ../libiconv/iso2022_jp2.h ../libiconv/euc_cn.h \ - ../libiconv/ces_gbk.h ../libiconv/iso2022_cn.h \ - ../libiconv/iso2022_cnext.h ../libiconv/hz.h \ - ../libiconv/euc_tw.h ../libiconv/ces_big5.h ../libiconv/cp950.h \ - ../libiconv/cp950ext.h ../libiconv/euc_kr.h ../libiconv/johab.h \ - ../libiconv/iso2022_kr.h ../libiconv/encodings.def \ + ../libiconv/euc_jp.h ../libiconv/sjis.h ../libiconv/cp932.h \ + ../libiconv/cp932ext.h ../libiconv/iso2022_jp.h \ + ../libiconv/iso2022_jp1.h ../libiconv/iso2022_jp2.h \ + ../libiconv/euc_cn.h ../libiconv/ces_gbk.h \ + ../libiconv/iso2022_cn.h ../libiconv/iso2022_cnext.h \ + ../libiconv/hz.h ../libiconv/euc_tw.h ../libiconv/ces_big5.h \ + ../libiconv/cp950.h ../libiconv/cp950ext.h ../libiconv/euc_kr.h \ + ../libiconv/cp949.h ../libiconv/uhc_1.h ../libiconv/uhc_2.h \ + ../libiconv/johab.h ../libiconv/iso2022_kr.h \ + ../libiconv/cjk_variants.h ../libiconv/translit.h \ + ../libiconv/encodings.def ../libiconv/flags.h \ ../libiconv/aliases.h lat1asci.lo lat1asci.o : lat1asci.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h lat1ltex.lo lat1ltex.o : lat1ltex.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h lat1texi.lo lat1texi.o : lat1texi.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h lat1txte.lo lat1txte.o : lat1txte.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h libiconv.lo libiconv.o : libiconv.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h libiconv.h -main.o: main.c common.h ../config.h ../lib/xalloc.h ../lib/error.h \ - recodext.h recode.h ../lib/getopt.h + argmatch.h ../lib/error.h recodext.h recode.h \ + ../libiconv/iconv.h libiconv.h +main.o: main.c common.h ../config.h ../lib/xalloc.h argmatch.h \ + ../lib/error.h recodext.h recode.h ../lib/getopt.h merged.lo merged.o : merged.c common.h ../config.h ../lib/xalloc.h \ + argmatch.h ../lib/error.h recodext.h recode.h +mixed.o: mixed.c common.h ../config.h ../lib/xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h -mixed.o: mixed.c common.h ../config.h ../lib/xalloc.h ../lib/error.h \ - recodext.h recode.h -mule.lo mule.o : mule.c common.h ../config.h ../lib/xalloc.h \ +mule.lo mule.o : mule.c common.h ../config.h ../lib/xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h names.lo names.o : names.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h hash.h + argmatch.h ../lib/error.h recodext.h recode.h hash.h outer.lo outer.o : outer.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h decsteps.h inisteps.h + argmatch.h ../lib/error.h recodext.h recode.h decsteps.h \ + inisteps.h permut.lo permut.o : permut.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h +quotearg.lo quotearg.o : quotearg.c ../config.h quotearg.h \ + ../lib/xalloc.h quoted.lo quoted.o : quoted.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h recode.lo recode.o : recode.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h ../lib/getopt.h hash.h + argmatch.h ../lib/error.h recodext.h recode.h ../lib/getopt.h \ + hash.h request.lo request.o : request.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h + argmatch.h ../lib/error.h recodext.h recode.h rfc1345.lo rfc1345.o : rfc1345.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h rfc1345.h + argmatch.h ../lib/error.h recodext.h recode.h rfc1345.h strip-data.lo strip-data.o : strip-data.c common.h ../config.h \ - ../lib/xalloc.h ../lib/error.h recodext.h recode.h + ../lib/xalloc.h argmatch.h ../lib/error.h recodext.h recode.h strip-pool.lo strip-pool.o : strip-pool.c common.h ../config.h \ - ../lib/xalloc.h ../lib/error.h recodext.h recode.h -task.lo task.o : task.c common.h ../config.h ../lib/xalloc.h \ + ../lib/xalloc.h argmatch.h ../lib/error.h recodext.h recode.h +task.lo task.o : task.c common.h ../config.h ../lib/xalloc.h argmatch.h \ + ../lib/error.h recodext.h recode.h ../lib/getopt.h +testdump.lo testdump.o : testdump.c common.h ../config.h ../lib/xalloc.h \ + argmatch.h ../lib/error.h recodext.h recode.h hash.h +texinfo.lo texinfo.o : texinfo.c common.h ../config.h ../lib/xalloc.h \ + argmatch.h ../lib/error.h recodext.h recode.h +ucs.lo ucs.o : ucs.c common.h ../config.h ../lib/xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h -ucs.lo ucs.o : ucs.c common.h ../config.h ../lib/xalloc.h ../lib/error.h \ - recodext.h recode.h utf16.lo utf16.o : utf16.c common.h ../config.h ../lib/xalloc.h \ - ../lib/error.h recodext.h recode.h -utf7.lo utf7.o : utf7.c common.h ../config.h ../lib/xalloc.h \ + argmatch.h ../lib/error.h recodext.h recode.h +utf7.lo utf7.o : utf7.c common.h ../config.h ../lib/xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h base64.h -utf8.lo utf8.o : utf8.c common.h ../config.h ../lib/xalloc.h \ +utf8.lo utf8.o : utf8.c common.h ../config.h ../lib/xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h varia.lo varia.o : varia.c common.h ../config.h ../lib/xalloc.h \ + argmatch.h ../lib/error.h recodext.h recode.h +vn.lo vn.o : vn.c common.h ../config.h ../lib/xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h -vn.lo vn.o : vn.c common.h ../config.h ../lib/xalloc.h ../lib/error.h \ - recodext.h recode.h info-am: info: info-am @@ -778,7 +780,7 @@ stamp-steps: $(C_STEPS) merged.c @echo "Updating decsteps.h and inisteps.h" @(cd $(srcdir) && grep -h '^module_' $(C_STEPS) merged.c ) \ | sed 's/ .*//' > liste.tmp - @sed 's/\(.*\)/bool \1 PARAMS ((struct recode_outer *));/p' \ + @sed 's/\(.*\)/bool \1 PARAMS ((struct recode_outer *));/' \ liste.tmp > decsteps.tmp @sed 's/\(.*\)/ if (!\1 (outer)) return false;/' \ liste.tmp > inisteps.tmp diff --git a/src/ansi2knr.c b/src/ansi2knr.c index f364aca..dec83ee 100644 --- a/src/ansi2knr.c +++ b/src/ansi2knr.c @@ -1,6 +1,6 @@ -/* Copyright (C) 1989, 1997 Aladdin Enterprises. All rights reserved. */ +/* Copyright (C) 1989, 1997, 1998, 1999 Aladdin Enterprises. All rights reserved. */ -/* ansi2knr.c */ +/*$Id: ansi2knr.c,v 1.14 1999/04/13 14:44:33 meyering Exp $*/ /* Convert ANSI C function definitions to K&R ("traditional C") syntax */ /* @@ -40,50 +40,71 @@ program under the GPL. * identifier at the left margin, followed by a left parenthesis, * with a right parenthesis as the last character on the line, * and with a left brace as the first token on the following line - * (ignoring possible intervening comments). - * It will recognize a multi-line header provided that no intervening - * line ends with a left or right brace or a semicolon. + * (ignoring possible intervening comments), except that a line + * consisting of only + * identifier1(identifier2) + * will not be considered a function definition unless identifier2 is + * the word "void", and a line consisting of + * identifier1(identifier2, <>) + * will not be considered a function definition. + * ansi2knr will recognize a multi-line header provided + * that no intervening line ends with a left or right brace or a semicolon. * These algorithms ignore whitespace and comments, except that * the function name must be the first thing on the line. * The following constructs will confuse it: * - Any other construct that starts at the left margin and * follows the above syntax (such as a macro or function call). - * - Some macros that tinker with the syntax of the function header. + * - Some macros that tinker with the syntax of function headers. */ /* * The original and principal author of ansi2knr is L. Peter Deutsch * . Other authors are noted in the change history * that follows (in reverse chronological order): - lpd 97-12-08 made input_file optional; only closes input and/or + lpd 1999-04-12 added minor fixes from Pavel Roskin + for clean compilation with + gcc -W -Wall + lpd 1999-03-22 added hack to recognize lines consisting of + identifier1(identifier2, xxx) as *not* being procedures + lpd 1999-02-03 made indentation of preprocessor commands consistent + lpd 1999-01-28 fixed two bugs: a '/' in an argument list caused an + endless loop; quoted strings within an argument list + confused the parser + lpd 1999-01-24 added a check for write errors on the output, + suggested by Jim Meyering + lpd 1998-11-09 added further hack to recognize identifier(void) + as being a procedure + lpd 1998-10-23 added hack to recognize lines consisting of + identifier1(identifier2) as *not* being procedures + lpd 1997-12-08 made input_file optional; only closes input and/or output file if not stdin or stdout respectively; prints usage message on stderr rather than stdout; adds --filename switch (changes suggested by ) - lpd 96-01-21 added code to cope with not HAVE_CONFIG_H and with + lpd 1996-01-21 added code to cope with not HAVE_CONFIG_H and with compilers that don't understand void, as suggested by Tom Lane - lpd 96-01-15 changed to require that the first non-comment token + lpd 1996-01-15 changed to require that the first non-comment token on the line following a function header be a left brace, to reduce sensitivity to macros, as suggested by Tom Lane - lpd 95-06-22 removed #ifndefs whose sole purpose was to define + lpd 1995-06-22 removed #ifndefs whose sole purpose was to define undefined preprocessor symbols as 0; changed all #ifdefs for configuration symbols to #ifs - lpd 95-04-05 changed copyright notice to make it clear that + lpd 1995-04-05 changed copyright notice to make it clear that including ansi2knr in a program does not bring the entire program under the GPL - lpd 94-12-18 added conditionals for systems where ctype macros + lpd 1994-12-18 added conditionals for systems where ctype macros don't handle 8-bit characters properly, suggested by Francois Pinard ; removed --varargs switch (this is now the default) - lpd 94-10-10 removed CONFIG_BROKETS conditional - lpd 94-07-16 added some conditionals to help GNU `configure', + lpd 1994-10-10 removed CONFIG_BROKETS conditional + lpd 1994-07-16 added some conditionals to help GNU `configure', suggested by Francois Pinard ; properly erase prototype args in function parameters, contributed by Jim Avera ; correct error in writeblanks (it shouldn't erase EOLs) - lpd 89-xx-xx original version + lpd 1989-xx-xx original version */ /* Most of the conditionals here are to make ansi2knr work with */ @@ -146,19 +167,24 @@ program under the GPL. #endif +/* Define NULL (for *very* old compilers). */ +#ifndef NULL +# define NULL (0) +#endif + /* * The ctype macros don't always handle 8-bit characters correctly. * Compensate for this here. */ #ifdef isascii -# undef HAVE_ISASCII /* just in case */ -# define HAVE_ISASCII 1 +# undef HAVE_ISASCII /* just in case */ +# define HAVE_ISASCII 1 #else #endif #if STDC_HEADERS || !HAVE_ISASCII -# define is_ascii(c) 1 +# define is_ascii(c) 1 #else -# define is_ascii(c) isascii(c) +# define is_ascii(c) isascii(c) #endif #define is_space(c) (is_ascii(c) && isspace(c)) @@ -171,6 +197,7 @@ program under the GPL. /* Forward references */ char *skipspace(); +char *scanstring(); int writeblanks(); int test1(); int convert1(); @@ -183,6 +210,8 @@ main(argc, argv) { FILE *in = stdin; FILE *out = stdout; char *filename = 0; + char *program_name = argv[0]; + char *output_name = 0; #define bufsize 5000 /* arbitrary size */ char *buf; char *line; @@ -198,6 +227,7 @@ main(argc, argv) * check for this switch for backward compatibility. */ int convert_varargs = 1; + int output_error; while ( argc > 1 && argv[1][0] == '-' ) { if ( !strcmp(argv[1], "--varargs") ) { @@ -212,7 +242,8 @@ main(argc, argv) argv += 2; continue; } - fprintf(stderr, "Unrecognized switch: %s\n", argv[1]); + fprintf(stderr, "%s: Unrecognized switch: %s\n", program_name, + argv[1]); fprintf(stderr, usage); exit(1); } @@ -222,16 +253,19 @@ main(argc, argv) fprintf(stderr, usage); exit(0); case 3: - out = fopen(argv[2], "w"); + output_name = argv[2]; + out = fopen(output_name, "w"); if ( out == NULL ) { - fprintf(stderr, "Cannot open output file %s\n", argv[2]); + fprintf(stderr, "%s: Cannot open output file %s\n", + program_name, output_name); exit(1); } /* falls through */ case 2: in = fopen(argv[1], "r"); if ( in == NULL ) { - fprintf(stderr, "Cannot open input file %s\n", argv[1]); + fprintf(stderr, "%s: Cannot open input file %s\n", + program_name, argv[1]); exit(1); } if ( filename == 0 ) @@ -243,6 +277,11 @@ main(argc, argv) if ( filename ) fprintf(out, "#line 1 \"%s\"\n", filename); buf = malloc(bufsize); + if ( buf == NULL ) + { + fprintf(stderr, "Unable to allocate read buffer!\n"); + exit(1); + } line = buf; while ( fgets(line, (unsigned)(buf + bufsize - line), in) != NULL ) { @@ -293,14 +332,24 @@ wl: fputs(buf, out); if ( line != buf ) fputs(buf, out); free(buf); - if ( out != stdout ) - fclose(out); + if ( output_name ) { + output_error = ferror(out); + output_error |= fclose(out); + } else { /* out == stdout */ + fflush(out); + output_error = ferror(out); + } + if ( output_error ) { + fprintf(stderr, "%s: error writing to %s\n", program_name, + (output_name ? output_name : "stdout")); + exit(1); + } if ( in != stdin ) fclose(in); return 0; } -/* Skip over space and comments, in either direction. */ +/* Skip over whitespace and comments, in either direction. */ char * skipspace(p, dir) register char *p; @@ -321,6 +370,17 @@ skipspace(p, dir) return p; } +/* Scan over a quoted string, in either direction. */ +char * +scanstring(p, dir) + register char *p; + register int dir; +{ + for (p += dir; ; p += dir) + if (*p == '"' && p[-dir] != '\\') + return p + dir; +} + /* * Write blanks over part of a string. * Don't overwrite end-of-line characters. @@ -389,7 +449,7 @@ test1(buf) }; char **key = words; char *kp; - int len = endfn - buf; + unsigned len = endfn - buf; while ( (kp = *key) != 0 ) { if ( strlen(kp) == len && !strncmp(kp, buf, len) ) @@ -397,6 +457,36 @@ test1(buf) key++; } } + { + char *id = p; + int len; + /* + * Check for identifier1(identifier2) and not + * identifier1(void), or identifier1(identifier2, xxxx). + */ + + while ( isidchar(*p) ) + p++; + len = p - id; + p = skipspace(p, 1); + if (*p == ',' || + (*p == ')' && (len != 4 || strncmp(id, "void", 4))) + ) + return 0; /* not a function */ + } + /* + * If the last significant character was a ), we need to count + * parentheses, because it might be part of a formal parameter + * that is a procedure. + */ + if (contin > 0) { + int level = 0; + + for (p = skipspace(buf, 1); *p; p = skipspace(p + 1, 1)) + level += (*p == '(' ? 1 : *p == ')' ? -1 : 0); + if (level > 0) + contin = -1; + } return contin; } @@ -426,7 +516,7 @@ convert1(buf, out, header, convert_varargs) ; top: p = endfn; breaks = (char **)malloc(sizeof(char *) * num_breaks * 2); - if ( breaks == 0 ) + if ( breaks == NULL ) { /* Couldn't allocate break table, give up */ fprintf(stderr, "Unable to allocate break table!\n"); fputs(buf, out); @@ -438,7 +528,7 @@ top: p = endfn; do { int level = 0; char *lp = NULL; - char *rp; + char *rp = NULL; char *end = NULL; if ( bp >= btop ) @@ -465,14 +555,18 @@ top: p = endfn; else rp = p; break; case '/': - p = skipspace(p, 1) - 1; + if (p[1] == '*') + p = skipspace(p, 1) - 1; break; + case '"': + p = scanstring(p, 1) - 1; + break; default: ; } } /* Erase any embedded prototype parameters. */ - if ( lp ) + if ( lp && rp ) writeblanks(lp + 1, rp); p--; /* back up over terminator */ /* Find the name being declared. */ @@ -488,9 +582,19 @@ top: p = endfn; while ( level ) switch ( *--p ) { - case ']': case ')': level++; break; - case '[': case '(': level--; break; - case '/': p = skipspace(p, -1) + 1; break; + case ']': case ')': + level++; + break; + case '[': case '(': + level--; + break; + case '/': + if (p > buf && p[-1] == '*') + p = skipspace(p, -1) + 1; + break; + case '"': + p = scanstring(p, -1) + 1; + break; default: ; } } diff --git a/src/applemac.c b/src/applemac.c index 58d559e..4c1ec83 100644 --- a/src/applemac.c +++ b/src/applemac.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1993. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -157,7 +157,7 @@ init_applemac_latin1 (RECODE_STEP step, bool module_applemac (RECODE_OUTER outer) { - RECODE_SYMBOL symbol; + RECODE_ALIAS alias; if (!declare_single (outer, "Latin-1", "Apple-Mac", outer->quality_byte_to_variable, @@ -168,13 +168,14 @@ module_applemac (RECODE_OUTER outer) init_applemac_latin1, NULL)) return false; - if (symbol = declare_alias (outer, "Apple-Mac", "Apple-Mac"), !symbol) + if (alias = declare_alias (outer, "Apple-Mac", "Apple-Mac"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->cr_surface)) + if (!declare_implied_surface (outer, alias, outer->cr_surface)) return false; - #if 0 /* FIXME! */ - declare_alias (outer, "Apple-Mac", "macintosh"); + if (!declare_alias (outer, "Apple-Mac", "macintosh")) + return false; #endif + return true; } diff --git a/src/argmatch.c b/src/argmatch.c index f180f1a..9642706 100644 --- a/src/argmatch.c +++ b/src/argmatch.c @@ -1,5 +1,5 @@ /* argmatch.c -- find a match for a string in an array - Copyright (C) 1990, 1997 Free Software Foundation, Inc. + Copyright (C) 1990, 1998, 1999 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -12,36 +12,86 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* Written by David MacKenzie */ +/* Written by David MacKenzie + Modified by Akim Demaille */ -#if HAVE_CONFIG_H -# include -#endif - -#include - -#include +#include "argmatch.h" #include -#if HAVE_STRING_H +#ifdef STDC_HEADERS # include +#endif + +#if HAVE_LOCALE_H +# include +#endif + +#if ENABLE_NLS +# include +# define _(Text) gettext (Text) #else -# include +# define _(Text) Text +#endif + +#include "error.h" +#include "quotearg.h" + +/* When reporting an invalid argument, show nonprinting characters + by using the quoting style ARGMATCH_QUOTING_STYLE. Do not use + literal_quoting_style. */ +#ifndef ARGMATCH_QUOTING_STYLE +# define ARGMATCH_QUOTING_STYLE locale_quoting_style +#endif + +/* The following test is to work around the gross typo in + systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE + is defined to 0, not 1. */ +#if !EXIT_FAILURE +# undef EXIT_FAILURE +# define EXIT_FAILURE 1 +#endif + +/* Non failing version of argmatch call this function after failing. */ +#ifndef ARGMATCH_DIE +# define ARGMATCH_DIE exit (EXIT_FAILURE) #endif +#ifdef ARGMATCH_DIE_DECL +ARGMATCH_DIE_DECL; +#endif + +static void +__argmatch_die (void) +{ + ARGMATCH_DIE; +} + +/* Used by XARGMATCH and XARGCASEMATCH. See description in argmatch.h. + Default to __argmatch_die, but allow caller to change this at run-time. */ +argmatch_exit_fn argmatch_die = __argmatch_die; + + /* If ARG is an unambiguous match for an element of the - null-terminated array OPTLIST, return the index in OPTLIST + null-terminated array ARGLIST, return the index in ARGLIST of the matched element, else -1 if it does not match any element - or -2 if it is ambiguous (is a prefix of more than one element). */ + or -2 if it is ambiguous (is a prefix of more than one element). + If SENSITIVE, comparison is case sensitive. -int -argmatch (const char *arg, const char *const *optlist) + If VALLIST is none null, use it to resolve ambiguities limited to + synonyms, i.e., for + "yes", "yop" -> 0 + "no", "nope" -> 1 + "y" is a valid argument, for `0', and "n" for `1'. */ + +static int +__argmatch_internal (const char *arg, const char *const *arglist, + const char *vallist, size_t valsize, + int case_sensitive) { - int i; /* Temporary index in OPTLIST. */ + int i; /* Temporary index in ARGLIST. */ size_t arglen; /* Length of ARG. */ int matchind = -1; /* Index of first nonexact match. */ int ambiguous = 0; /* If nonzero, multiple nonexact match(es). */ @@ -49,19 +99,30 @@ argmatch (const char *arg, const char *const *optlist) arglen = strlen (arg); /* Test all elements for either exact match or abbreviated matches. */ - for (i = 0; optlist[i]; i++) + for (i = 0; arglist[i]; i++) { - if (!strncmp (optlist[i], arg, arglen)) + if (case_sensitive + ? !strncmp (arglist[i], arg, arglen) + : !strncasecmp (arglist[i], arg, arglen)) { - if (strlen (optlist[i]) == arglen) + if (strlen (arglist[i]) == arglen) /* Exact match found. */ return i; else if (matchind == -1) /* First nonexact match found. */ matchind = i; else - /* Second nonexact match found. */ - ambiguous = 1; + { + /* Second nonexact match found. */ + if (vallist == NULL + || memcmp (vallist + valsize * matchind, + vallist + valsize * i, valsize)) + { + /* There is a real ambiguity, or we could not + disambiguate. */ + ambiguous = 1; + } + } } } if (ambiguous) @@ -70,16 +131,176 @@ argmatch (const char *arg, const char *const *optlist) return matchind; } +/* argmatch - case sensitive version */ +int +argmatch (const char *arg, const char *const *arglist, + const char *vallist, size_t valsize) +{ + return __argmatch_internal (arg, arglist, vallist, valsize, 1); +} + +/* argcasematch - case insensitive version */ +int +argcasematch (const char *arg, const char *const *arglist, + const char *vallist, size_t valsize) +{ + return __argmatch_internal (arg, arglist, vallist, valsize, 0); +} + /* Error reporting for argmatch. - KIND is a description of the type of entity that was being matched. + CONTEXT is a description of the type of entity that was being matched. VALUE is the invalid value that was given. PROBLEM is the return value from argmatch. */ void -invalid_arg (const char *kind, const char *value, int problem) +argmatch_invalid (const char *context, const char *value, int problem) { - const char *fmt = (problem == -1 - ? "%s: invalid %s `%s'\n" - : "%s: ambiguous %s `%s'\n"); - fprintf (stderr, fmt, program_name, kind, value); + char const *format = (problem == -1 + ? _("invalid argument %s for `%s'") + : _("ambiguous argument %s for `%s'")); + + error (0, 0, format, quotearg_style (ARGMATCH_QUOTING_STYLE, value), context); +} + +/* List the valid arguments for argmatch. + ARGLIST is the same as in argmatch. + VALLIST is a pointer to an array of values. + VALSIZE is the size of the elements of VALLIST */ +void +argmatch_valid (const char *const *arglist, + const char *vallist, size_t valsize) +{ + int i; + const char *last_val = NULL; + + /* We try to put synonyms on the same line. The assumption is that + synonyms follow each other */ + fprintf (stderr, _("Valid arguments are:")); + for (i = 0; arglist[i]; i++) + if ((i == 0) + || memcmp (last_val, vallist + valsize * i, valsize)) + { + fprintf (stderr, "\n - `%s'", arglist[i]); + last_val = vallist + valsize * i; + } + else + { + fprintf (stderr, ", `%s'", arglist[i]); + } + putc ('\n', stderr); } + +/* Never failing versions of the previous functions. + + CONTEXT is the context for which argmatch is called (e.g., + "--version-control", or "$VERSION_CONTROL" etc.). Upon failure, + calls the (supposed never to return) function EXIT_FN. */ + +int +__xargmatch_internal (const char *context, + const char *arg, const char *const *arglist, + const char *vallist, size_t valsize, + int case_sensitive, + argmatch_exit_fn exit_fn) +{ + int res = __argmatch_internal (arg, arglist, + vallist, valsize, + case_sensitive); + if (res >= 0) + /* Success. */ + return res; + + /* We failed. Explain why. */ + argmatch_invalid (context, arg, res); + argmatch_valid (arglist, vallist, valsize); + (*exit_fn) (); + + return -1; /* To please the compilers. */ +} + +/* Look for VALUE in VALLIST, an array of objects of size VALSIZE and + return the first corresponding argument in ARGLIST */ +const char * +argmatch_to_argument (const char *value, + const char *const *arglist, + const char *vallist, size_t valsize) +{ + int i; + + for (i = 0; arglist[i]; i++) + if (!memcmp (value, vallist + valsize * i, valsize)) + return arglist[i]; + return NULL; +} + +#ifdef TEST +/* + * Based on "getversion.c" by David MacKenzie + */ +char *program_name; +extern const char *getenv (); + +/* When to make backup files. */ +enum backup_type +{ + /* Never make backups. */ + none, + + /* Make simple backups of every file. */ + simple, + + /* Make numbered backups of files that already have numbered backups, + and simple backups of the others. */ + numbered_existing, + + /* Make numbered backups of every file. */ + numbered +}; + +/* Two tables describing arguments (keys) and their corresponding + values */ +static const char *const backup_args[] = +{ + "no", "none", "off", + "simple", "never", + "existing", "nil", + "numbered", "t", + 0 +}; + +static const enum backup_type backup_vals[] = +{ + none, none, none, + simple, simple, + numbered_existing, numbered_existing, + numbered, numbered +}; + +int +main (int argc, const char *const *argv) +{ + const char *cp; + enum backup_type backup_type = none; + + program_name = (char *) argv[0]; + + if (argc > 2) + { + fprintf (stderr, "Usage: %s [VERSION_CONTROL]\n", program_name); + exit (1); + } + + if ((cp = getenv ("VERSION_CONTROL"))) + backup_type = XARGCASEMATCH ("$VERSION_CONTROL", cp, + backup_args, backup_vals); + + if (argc == 2) + backup_type = XARGCASEMATCH (program_name, argv[1], + backup_args, backup_vals); + + printf ("The version control is `%s'\n", + ARGMATCH_TO_ARGUMENT (backup_type, backup_args, backup_vals)); + + return 0; +} +#endif diff --git a/src/argmatch.h b/src/argmatch.h index 43ea5db..d3f25cc 100644 --- a/src/argmatch.h +++ b/src/argmatch.h @@ -1,12 +1,129 @@ -/* argmatch.h -- declarations for matching arguments against option lists */ +/* argmatch.h -- definitions and prototypes for argmatch.c + Copyright (C) 1990, 1998, 1999 Free Software Foundation, Inc. -#if defined __STDC__ || __GNUC__ -# define __ARGMATCH_P(args) args -#else -# define __ARGMATCH_P(args) () -#endif + This program is free software; you can 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. -int argmatch __ARGMATCH_P ((const char *, const char * const *)); -void invalid_arg __ARGMATCH_P ((const char *, const char *, int)); + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -extern char *program_name; + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Written by David MacKenzie + Modified by Akim Demaille */ + +#ifndef ARGMATCH_H_ +# define ARGMATCH_H_ 1 + +# if HAVE_CONFIG_H +# include +# endif + +# include + +# ifndef PARAMS +# if PROTOTYPES || (defined (__STDC__) && __STDC__) +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif /* GCC. */ +# endif /* Not PARAMS. */ + +/* Assert there are as many real arguments as there are values + (argument list ends with a NULL guard). There is no execution + cost, since it will be statically evalauted to `assert (0)' or + `assert (1)'. Unfortunately there is no -Wassert-0. */ + +# undef ARRAY_CARDINALITY +# define ARRAY_CARDINALITY(Array) (sizeof ((Array)) / sizeof (*(Array))) + +# define ARGMATCH_ASSERT(Arglist, Vallist) \ + assert (ARRAY_CARDINALITY ((Arglist)) == ARRAY_CARDINALITY ((Vallist)) + 1) + +/* Return the index of the element of ARGLIST (NULL terminated) that + matches with ARG. If VALLIST is not NULL, then use it to resolve + false ambiguities (i.e., different matches of ARG but corresponding + to the same values in VALLIST). */ + +int argmatch + PARAMS ((const char *arg, const char *const *arglist, + const char *vallist, size_t valsize)); +int argcasematch + PARAMS ((const char *arg, const char *const *arglist, + const char *vallist, size_t valsize)); + +# define ARGMATCH(Arg, Arglist, Vallist) \ + argmatch ((Arg), (Arglist), (const char *) (Vallist), sizeof (*(Vallist))) + +# define ARGCASEMATCH(Arg, Arglist, Vallist) \ + argcasematch ((Arg), (Arglist), (const char *) (Vallist), sizeof (*(Vallist))) + +/* xargmatch calls this function when it fails. This function should not + return. By default, this is a function that calls ARGMATCH_DIE which + in turn defaults to `exit (EXIT_FAILURE)'. */ +typedef void (*argmatch_exit_fn) PARAMS ((void)); +extern argmatch_exit_fn argmatch_die; + +/* Report on stderr why argmatch failed. Report correct values. */ + +void argmatch_invalid + PARAMS ((const char *context, const char *value, int problem)); + +/* Left for compatibility with the old name invalid_arg */ + +# define invalid_arg(Context, Value, Problem) \ + argmatch_invalid ((Context), (Value), (Problem)) + + + +/* Report on stderr the list of possible arguments. */ + +void argmatch_valid + PARAMS ((const char *const *arglist, + const char *vallist, size_t valsize)); + +# define ARGMATCH_VALID(Arglist, Vallist) \ + argmatch_valid (Arglist, (const char *) Vallist, sizeof (*(Vallist))) + + + +/* Same as argmatch, but upon failure, reports a explanation on the + failure, and exits using the function EXIT_FN. */ + +int __xargmatch_internal + PARAMS ((const char *context, + const char *arg, const char *const *arglist, + const char *vallist, size_t valsize, + int case_sensitive, argmatch_exit_fn exit_fn)); + +/* Programmer friendly interface to __xargmatch_internal. */ + +# define XARGMATCH(Context, Arg, Arglist, Vallist) \ + (Vallist [__xargmatch_internal ((Context), (Arg), (Arglist), \ + (const char *) (Vallist), \ + sizeof (*(Vallist)), \ + 1, argmatch_die)]) + +# define XARGCASEMATCH(Context, Arg, Arglist, Vallist) \ + (Vallist [__xargmatch_internal ((Context), (Arg), (Arglist), \ + (const char *) (Vallist), \ + sizeof (*(Vallist)), \ + 0, argmatch_die)]) + +/* Convert a value into a corresponding argument. */ + +const char *argmatch_to_argument + PARAMS ((char const *value, const char *const *arglist, + const char *vallist, size_t valsize)); + +# define ARGMATCH_TO_ARGUMENT(Value, Arglist, Vallist) \ + argmatch_to_argument ((char const *) &(Value), (Arglist), \ + (const char *) (Vallist), sizeof (*(Vallist))) + +#endif /* ARGMATCH_H_ */ diff --git a/src/ascilat1.l b/src/ascilat1.l index 1779144..46263ce 100644 --- a/src/ascilat1.l +++ b/src/ascilat1.l @@ -1,14 +1,14 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or + This library 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 of the License, or (at your option) any later version. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. diff --git a/src/atarist.c b/src/atarist.c index 86f27b3..abefcbf 100644 --- a/src/atarist.c +++ b/src/atarist.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1993, 94, 96, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1993, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1993. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/bangbang.c b/src/bangbang.c index d9b0afd..cf96423 100644 --- a/src/bangbang.c +++ b/src/bangbang.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/base64.c b/src/base64.c index dbe02b9..b9ab029 100644 --- a/src/base64.c +++ b/src/base64.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1996, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -163,6 +163,13 @@ transform_base64_data (RECODE_SUBTASK subtask) continue; } + if (character == '\r') + { + RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); + counter = 0; + continue; + } + /* Process first byte of a quadruplet. */ counter++; diff --git a/src/base64.h b/src/base64.h index 3229d73..6f548e7 100644 --- a/src/base64.h +++ b/src/base64.h @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1996, 97, 99 Free Software Foundation, Inc. + Copyright © 1996, 97, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/cdcnos.c b/src/cdcnos.c index 2848be5..b04ca36 100644 --- a/src/cdcnos.c +++ b/src/cdcnos.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/charname.c b/src/charname.c index 51dc83e..1633114 100644 --- a/src/charname.c +++ b/src/charname.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1993, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1993, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1993. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/charname.h b/src/charname.h index 6428660..eb53b72 100644 --- a/src/charname.h +++ b/src/charname.h @@ -1,20 +1,20 @@ /* DO NOT MODIFY THIS FILE! It was generated by `recode/doc/tables.py'. */ /* Conversion of files between different charsets and surfaces. - Copyright © 1999 Free Software Foundation, Inc. + Copyright © 1999, 2000 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/combine.c b/src/combine.c index 192e9af..a09591c 100644 --- a/src/combine.c +++ b/src/combine.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 92, 93, 94, 96, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 92, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1990. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -280,7 +280,7 @@ state_compare (const void *void_first, const void *void_second) } static struct state * -prepare_shifted_state (struct state *state, unsigned short character, +prepare_shifted_state (struct state *state, unsigned character, RECODE_CONST_STEP step) { if (state) @@ -330,7 +330,7 @@ prepare_shifted_state (struct state *state, unsigned short character, } static struct state * -find_shifted_state (struct state *state, unsigned short character, +find_shifted_state (struct state *state, unsigned character, RECODE_CONST_STEP step) { if (state) @@ -491,10 +491,12 @@ combine_byte_byte (RECODE_SUBTASK subtask) } if (state) - if (state->result == NOT_A_CHARACTER) - backtrack_byte (state, subtask); - else - put_byte (state->result, subtask); + { + if (state->result == NOT_A_CHARACTER) + backtrack_byte (state, subtask); + else + put_byte (state->result, subtask); + } } SUBTASK_RETURN (subtask); @@ -536,10 +538,12 @@ combine_ucs2_byte (RECODE_SUBTASK subtask) } if (state) - if (state->result == NOT_A_CHARACTER) - backtrack_byte (state, subtask); - else - put_byte (state->result, subtask); + { + if (state->result == NOT_A_CHARACTER) + backtrack_byte (state, subtask); + else + put_byte (state->result, subtask); + } } SUBTASK_RETURN (subtask); @@ -585,10 +589,12 @@ combine_byte_ucs2 (RECODE_SUBTASK subtask) } if (state) - if (state->result == NOT_A_CHARACTER) - backtrack_ucs2 (state, subtask); - else - put_ucs2 (state->result, subtask); + { + if (state->result == NOT_A_CHARACTER) + backtrack_ucs2 (state, subtask); + else + put_ucs2 (state->result, subtask); + } } SUBTASK_RETURN (subtask); @@ -634,10 +640,12 @@ combine_ucs2_ucs2 (RECODE_SUBTASK subtask) } if (state) - if (state->result == NOT_A_CHARACTER) - backtrack_ucs2 (state, subtask); - else - put_ucs2 (state->result, subtask); + { + if (state->result == NOT_A_CHARACTER) + backtrack_ucs2 (state, subtask); + else + put_ucs2 (state->result, subtask); + } } SUBTASK_RETURN (subtask); diff --git a/src/common.h b/src/common.h index da13b9d..a4f56dc 100644 --- a/src/common.h +++ b/src/common.h @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 96, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -30,6 +30,7 @@ # define DOSWIN_OR_OS2 1 #endif +#include #include #if STDC_HEADERS @@ -105,7 +106,7 @@ typedef enum {false = 0, true = 1} bool; # endif #endif -int argmatch PARAMS ((const char *, const char *const *)); +#include #include #ifndef errno diff --git a/src/decsteps.h b/src/decsteps.h index 6450375..5d9bb64 100644 --- a/src/decsteps.h +++ b/src/decsteps.h @@ -1,66 +1,33 @@ bool module_african PARAMS ((struct recode_outer *)); -bool module_african PARAMS ((struct recode_outer *)); -bool module_afrtran PARAMS ((struct recode_outer *)); bool module_afrtran PARAMS ((struct recode_outer *)); bool module_applemac PARAMS ((struct recode_outer *)); -bool module_applemac PARAMS ((struct recode_outer *)); -bool module_atarist PARAMS ((struct recode_outer *)); bool module_atarist PARAMS ((struct recode_outer *)); bool module_bangbang PARAMS ((struct recode_outer *)); -bool module_bangbang PARAMS ((struct recode_outer *)); -bool module_cdcnos PARAMS ((struct recode_outer *)); bool module_cdcnos PARAMS ((struct recode_outer *)); -bool module_debug PARAMS ((struct recode_outer *)); -bool module_debug PARAMS ((struct recode_outer *)); bool module_ebcdic PARAMS ((struct recode_outer *)); -bool module_ebcdic PARAMS ((struct recode_outer *)); -bool module_ibmpc PARAMS ((struct recode_outer *)); bool module_ibmpc PARAMS ((struct recode_outer *)); bool module_iconqnx PARAMS ((struct recode_outer *)); -bool module_iconqnx PARAMS ((struct recode_outer *)); -bool module_latin1_ascii PARAMS ((struct recode_outer *)); bool module_latin1_ascii PARAMS ((struct recode_outer *)); bool module_mule PARAMS ((struct recode_outer *)); -bool module_mule PARAMS ((struct recode_outer *)); -bool module_strips PARAMS ((struct recode_outer *)); bool module_strips PARAMS ((struct recode_outer *)); +bool module_testdump PARAMS ((struct recode_outer *)); bool module_ucs PARAMS ((struct recode_outer *)); -bool module_ucs PARAMS ((struct recode_outer *)); -bool module_utf16 PARAMS ((struct recode_outer *)); bool module_utf16 PARAMS ((struct recode_outer *)); bool module_utf7 PARAMS ((struct recode_outer *)); -bool module_utf7 PARAMS ((struct recode_outer *)); -bool module_utf8 PARAMS ((struct recode_outer *)); bool module_utf8 PARAMS ((struct recode_outer *)); bool module_varia PARAMS ((struct recode_outer *)); -bool module_varia PARAMS ((struct recode_outer *)); -bool module_vietnamese PARAMS ((struct recode_outer *)); bool module_vietnamese PARAMS ((struct recode_outer *)); bool module_flat PARAMS ((struct recode_outer *)); -bool module_flat PARAMS ((struct recode_outer *)); -bool module_html PARAMS ((struct recode_outer *)); bool module_html PARAMS ((struct recode_outer *)); bool module_latin1_latex PARAMS ((struct recode_outer *)); -bool module_latin1_latex PARAMS ((struct recode_outer *)); -bool module_latin1_texinfo PARAMS ((struct recode_outer *)); -bool module_latin1_texinfo PARAMS ((struct recode_outer *)); -bool module_latin1_texte PARAMS ((struct recode_outer *)); bool module_latin1_texte PARAMS ((struct recode_outer *)); bool module_rfc1345 PARAMS ((struct recode_outer *)); -bool module_rfc1345 PARAMS ((struct recode_outer *)); -bool module_base64 PARAMS ((struct recode_outer *)); +bool module_texinfo PARAMS ((struct recode_outer *)); bool module_base64 PARAMS ((struct recode_outer *)); bool module_dump PARAMS ((struct recode_outer *)); -bool module_dump PARAMS ((struct recode_outer *)); -bool module_endline PARAMS ((struct recode_outer *)); bool module_endline PARAMS ((struct recode_outer *)); bool module_permutations PARAMS ((struct recode_outer *)); -bool module_permutations PARAMS ((struct recode_outer *)); -bool module_quoted_printable PARAMS ((struct recode_outer *)); bool module_quoted_printable PARAMS ((struct recode_outer *)); bool module_ascii_latin1 PARAMS ((struct recode_outer *)); -bool module_ascii_latin1 PARAMS ((struct recode_outer *)); -bool module_latex_latin1 PARAMS ((struct recode_outer *)); bool module_latex_latin1 PARAMS ((struct recode_outer *)); bool module_texte_latin1 PARAMS ((struct recode_outer *)); -bool module_texte_latin1 PARAMS ((struct recode_outer *)); diff --git a/src/dump.c b/src/dump.c index fdba891..f89cf58 100644 --- a/src/dump.c +++ b/src/dump.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1997, 98, 99 Free Software Foundation, Inc. + Copyright © 1997, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1997. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -71,7 +71,7 @@ dump (RECODE_SUBTASK subtask, character = get_byte (subtask); if (character == EOF) break; - value = value << 8 | MASK (8) & character; + value = (value << 8) | (MASK (8) & character); } /* Write delimiters. */ @@ -200,7 +200,7 @@ undump (RECODE_SUBTASK subtask, case OCTAL: while (character >= '0' && character <= '7') { - value = value << 3 | character - '0'; + value = (value << 3) | (character - '0'); width++; character = get_byte (subtask); } @@ -219,19 +219,19 @@ undump (RECODE_SUBTASK subtask, while (true) if (character >= '0' && character <= '9') { - value = value << 4 | character - '0'; + value = (value << 4) | (character - '0'); width++; character = get_byte (subtask); } else if (character >= 'A' && character <= 'F') { - value = value << 4 | character - 'A' + 10; + value = (value << 4) | (character - 'A' + 10); width++; character = get_byte (subtask); } else if (character >= 'a' && character <= 'f') { - value = value << 4 | character - 'a' + 10; + value = (value << 4) | (character - 'a' + 10); width++; character = get_byte (subtask); } @@ -281,7 +281,7 @@ undump (RECODE_SUBTASK subtask, unsigned shift; for (shift = size * 8; shift != 0; shift -= 8) - put_byte (MASK (8) & value >> shift - 8, subtask); + put_byte (MASK (8) & value >> (shift - 8), subtask); } } @@ -289,10 +289,12 @@ undump (RECODE_SUBTASK subtask, comma_on_last = character == ','; if (!comma_on_last) - if (character == '\n') - character = get_byte (subtask); - else - RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); + { + if (character == '\n') + character = get_byte (subtask); + else + RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); + } else { character = get_byte (subtask); diff --git a/src/ebcdic.c b/src/ebcdic.c index f0e31e0..41c3475 100644 --- a/src/ebcdic.c +++ b/src/ebcdic.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/endline.c b/src/endline.c index ee671f1..0bffd2c 100644 --- a/src/endline.c +++ b/src/endline.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/flat.c b/src/flat.c index 9ac0404..e29cdfa 100644 --- a/src/flat.c +++ b/src/flat.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/fr-charname.c b/src/fr-charname.c index 00d169d..93c2d64 100644 --- a/src/fr-charname.c +++ b/src/fr-charname.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1993, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1993, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1993. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/fr-charname.h b/src/fr-charname.h index 96bde7b..8223ad1 100644 --- a/src/fr-charname.h +++ b/src/fr-charname.h @@ -1,2037 +1,4912 @@ /* DO NOT MODIFY THIS FILE! It was generated by `recode/doc/tables.py'. */ /* Conversion of files between different charsets and surfaces. - Copyright © 1999 Free Software Foundation, Inc. + Copyright © 1999, 2000 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#define NUMBER_OF_SINGLES 248 +#define NUMBER_OF_SINGLES 236 #define MAX_CHARNAME_LENGTH 90 -#define NUMBER_OF_CHARNAMES 6369 +#define NUMBER_OF_CHARNAMES 10616 -static const char *const word[2007] = +static const char *const word[4882] = { "lettre", /* \001 */ - "arabe", /* \002 */ - "minuscule", /* \003 */ - "latine", /* \004 */ - "majuscule", /* \005 */ - "ligature", /* \006 */ - "en", /* \007 */ - "hangûl", /* \010 */ - "et", /* \011 */ - "de", /* \012 */ - "vers", /* \013 */ - "grecque", /* \014 */ - "symbole", /* \015 */ - "final", /* \016 */ - "chiffre", /* \017 */ - "isolé", /* \020 */ - "carré", /* \021 */ - "la", /* \022 */ - "diacritique", /* \023 */ - "cyrillique", /* \024 */ - "chef", /* \025 */ - "accent", /* \026 */ - "point", /* \027 */ - "katakana", /* \030 */ - "disposé", /* \031 */ - "souscrit", /* \032 */ - "mîm", /* \033 */ - "cerclé", /* \034 */ - "le", /* \035 */ - "initial", /* \036 */ - "droite", /* \037 */ - "à", /* \040 */ - "ya'", /* \041 */ - "gauche", /* \042 */ - "flèche", /* \043 */ - "voyelle", /* \044 */ - "filet", /* \045 */ - "a", /* \046 */ - "demi-chasse", /* \047 */ - "o", /* \050 */ - "double", /* \051 */ - "entre", /* \052 */ - "parenthèses", /* \053 */ - "alif", /* \054 */ - "iota", /* \055 */ - "chasse", /* \056 */ - "dévanâgari", /* \057 */ - "e", /* \060 */ - "bas", /* \061 */ - "pleine", /* \062 */ - "idéographique", /* \063 */ - "ha'", /* \064 */ - "haut", /* \065 */ - "djîm", /* \066 */ - "tch'ôsong", /* \067 */ - "fin", /* \070 */ - "bengali", /* \071 */ - "i", /* \072 */ - "thaï", /* \073 */ - "caractère", /* \074 */ - "hiragana", /* \075 */ - "arménienne", /* \076 */ - "idéogramme", /* \077 */ - "crochet", /* \100 */ - "dasia", /* \101 */ - "aigu", /* \102 */ - "djôngsong", /* \103 */ - "kannara", /* \104 */ - "médial", /* \105 */ - "télougou", /* \106 */ - "u", /* \107 */ - "hébraïque", /* \110 */ - "oriya", /* \111 */ - "goudjarati", /* \112 */ - "malayalam", /* \113 */ - "ou", /* \114 */ - "psili", /* \115 */ - "géorgienne", /* \116 */ - "circonflexe", /* \117 */ - "pendjabi", /* \120 */ - "gras", /* \121 */ - "apl", /* \122 */ - "fonction", /* \123 */ - "maksoura", /* \124 */ - "télégraphique", /* \125 */ - "hamza", /* \126 */ - "djoungsong", /* \127 */ - "avec", /* \130 */ - "trois", /* \131 */ - "un", /* \132 */ - "blanc", /* \133 */ - "signe", /* \134 */ - "oxia", /* \135 */ - "varia", /* \136 */ - "kha'", /* \137 */ - "tamoul", /* \140 */ - "tréma", /* \141 */ - "égal", /* \142 */ - "tilde", /* \143 */ - "petit", /* \144 */ - "vertical", /* \145 */ - "cerclée", /* \146 */ - "oméga", /* \147 */ - "r", /* \150 */ - "grave", /* \151 */ - "alpha", /* \152 */ - "marque", /* \153 */ - "deux", /* \154 */ - "lam", /* \155 */ - "noir", /* \156 */ - "modificative", /* \157 */ - "brève", /* \160 */ - "macron", /* \161 */ - "plus", /* \162 */ - "nombre", /* \163 */ - "noûn", /* \164 */ - "périspoméni", /* \165 */ - "êta", /* \166 */ - "l", /* \167 */ - "laotienne", /* \170 */ - "hé'", /* \171 */ - "caron", /* \172 */ - "droit", /* \173 */ - "té'", /* \174 */ - "barré", /* \175 */ - "vocalique", /* \176 */ - "bopomofo", /* \177 */ - "quatre", /* \200 */ - "sîn", /* \201 */ - "ancienne", /* \202 */ - "cinq", /* \203 */ - "huit", /* \204 */ - "kaf", /* \205 */ - "chîn", /* \206 */ - "s", /* \207 */ - "barre", /* \210 */ - "horizontal", /* \211 */ - "ligne", /* \212 */ - "n", /* \213 */ - "upsilon", /* \214 */ - "romain", /* \215 */ - "ni", /* \216 */ - "noire", /* \217 */ - "points", /* \220 */ - "sept", /* \221 */ - "coin", /* \222 */ - "négatif", /* \223 */ - "verticale", /* \224 */ - "d", /* \225 */ - "du", /* \226 */ - "g", /* \227 */ - "h", /* \230 */ - "rond", /* \231 */ - "sans", /* \232 */ - "six", /* \233 */ - "jour", /* \234 */ - "neuf", /* \235 */ - "t", /* \236 */ - "vignette", /* \237 */ - "y", /* \240 */ - "c", /* \241 */ - "forme", /* \242 */ - "z", /* \243 */ - "ka", /* \244 */ - "pointant", /* \245 */ - "cédille", /* \246 */ - "epsilon", /* \247 */ - "ai", /* \250 */ - "ba'", /* \251 */ - "cercle", /* \252 */ - "cornu", /* \253 */ - "crosse", /* \254 */ - "heure", /* \255 */ - "m", /* \256 */ - "ra'", /* \257 */ - "culbuté", /* \260 */ - "fa'", /* \261 */ - "grand", /* \262 */ - "sad", /* \263 */ - "trait", /* \264 */ - "triangle", /* \265 */ - "dad", /* \266 */ - "moitié", /* \267 */ - "simple", /* \270 */ - "souscrite", /* \271 */ - "ton", /* \272 */ - "w", /* \273 */ - "aou", /* \274 */ - "b", /* \275 */ - "daguech", /* \276 */ - "grec", /* \277 */ - "inférieur", /* \300 */ - "k", /* \301 */ - "pointe", /* \302 */ - "étoile", /* \303 */ - "bloc", /* \304 */ - "présentation", /* \305 */ - "que", /* \306 */ - "taquet", /* \307 */ - "x", /* \310 */ - "zéro", /* \311 */ - "'ayn", /* \312 */ - "aa", /* \313 */ - "arabe-hindi", /* \314 */ - "blanche", /* \315 */ - "empattement", /* \316 */ - "ii", /* \317 */ - "jambage", /* \320 */ - "omicron", /* \321 */ - "ouou", /* \322 */ - "qaf", /* \323 */ - "v", /* \324 */ - "laotien", /* \325 */ - "supérieur", /* \326 */ - "ta'", /* \327 */ - "tonos", /* \330 */ - "virgule", /* \331 */ - "ya", /* \332 */ - "ha", /* \333 */ - "non", /* \334 */ - "pour", /* \335 */ - "réfléchi", /* \336 */ - "thé'", /* \337 */ - "croix", /* \340 */ - "dialytika", /* \341 */ - "hameçon", /* \342 */ - "hébreu", /* \343 */ - "j", /* \344 */ - "ra", /* \345 */ - "d'annotation", /* \346 */ - "exposant", /* \347 */ - "ghayn", /* \350 */ - "p", /* \351 */ - "renversée", /* \352 */ - "tché", /* \353 */ - "dix", /* \354 */ - "f", /* \355 */ - "fraction", /* \356 */ - "indice", /* \357 */ - "ma", /* \360 */ - "oblique", /* \361 */ - "pas", /* \362 */ - "quadrat", /* \363 */ - "sa", /* \364 */ - "branches", /* \365 */ - "copte", /* \366 */ - "grasse", /* \367 */ - "gros", /* \370 */ - "mu", /* \371\001 */ - "na", /* \371\002 */ - "ogonek", /* \371\003 */ - "parenthèse", /* \371\004 */ - "ronde", /* \371\005 */ - "sara", /* \371\006 */ - "séparateur", /* \371\007 */ - "équivalent", /* \371\010 */ - "astérisque", /* \371\011 */ - "contour", /* \371\012 */ - "da", /* \371\013 */ - "guillemet", /* \371\014 */ - "pa", /* \371\015 */ - "renversé", /* \371\016 */ - "ta", /* \371\017 */ - "tcha", /* \371\020 */ - "yo", /* \371\021 */ - "*", /* \371\022 */ - "brisé", /* \371\023 */ - "commande", /* \371\024 */ - "d'échecs", /* \371\025 */ - "espace", /* \371\026 */ - "harpon", /* \371\027 */ - "jeu", /* \371\030 */ - "mai", /* \371\031 */ - "opérateur", /* \371\032 */ - "petite", /* \371\033 */ - "rr", /* \371\034 */ - "waw", /* \371\035 */ - "kirghize", /* \371\036 */ - "moins", /* \371\037 */ - "médian", /* \371\040 */ - "oe", /* \371\041 */ - "par", /* \371\042 */ - "roc", /* \371\043 */ - "sens", /* \371\044 */ - "shadda", /* \371\045 */ - "so", /* \371\046 */ - "souligné", /* \371\047 */ - "triple", /* \371\050 */ - "you", /* \371\051 */ - "arc", /* \371\052 */ - "ba", /* \371\053 */ - "cha", /* \371\054 */ - "digramme", /* \371\055 */ - "ee", /* \371\056 */ - "ga", /* \371\057 */ - "ghé", /* \371\060 */ - "ho", /* \371\061 */ - "kha", /* \371\062 */ - "normal", /* \371\063 */ - "oo", /* \371\064 */ - "prime", /* \371\065 */ - "q", /* \371\066 */ - "rétroflexe", /* \371\067 */ - "son", /* \371\070 */ - "tho", /* \371\071 */ - "tiret", /* \371\072 */ - "étendu", /* \371\073 */ - "chin", /* \371\074 */ - "comme", /* \371\075 */ - "coup", /* \371\076 */ - "dans", /* \371\077 */ - "dja", /* \371\100 */ - "empennage", /* \371\101 */ - "glotte", /* \371\102 */ - "hangzhou", /* \371\103 */ - "he", /* \371\104 */ - "huitièmes", /* \371\105 */ - "intégrale", /* \371\106 */ - "large", /* \371\107 */ - "longueur", /* \371\110 */ - "losange", /* \371\111 */ - "mais", /* \371\112 */ - "ne", /* \371\113 */ - "nga", /* \371\114 */ - "nna", /* \371\115 */ - "pe", /* \371\116 */ - "tchiûtch", /* \371\117 */ - "tta", /* \371\120 */ - "virama", /* \371\121 */ - "wa", /* \371\122 */ - "wo", /* \371\123 */ - "zay", /* \371\124 */ - "ña", /* \371\125 */ - "abkhasien", /* \371\126 */ - "bha", /* \371\127 */ - "bref", /* \371\130 */ - "candra", /* \371\131 */ - "d'exclamation", /* \371\132 */ - "d'un", /* \371\133 */ - "dal", /* \371\134 */ - "dda", /* \371\135 */ - "ddha", /* \371\136 */ - "dent", /* \371\137 */ - "dha", /* \371\140 */ - "douze", /* \371\141 */ - "début", /* \371\142 */ - "ej", /* \371\143 */ - "enne", /* \371\144 */ - "gaf", /* \371\145 */ - "gha", /* \371\146 */ - "grosse", /* \371\147 */ - "hiûh", /* \371\150 */ - "index", /* \371\151 */ - "iûng", /* \371\152 */ - "jé", /* \371\153 */ - "k'iûk'", /* \371\154 */ - "kiyok", /* \371\155 */ - "ll", /* \371\156 */ - "lla", /* \371\157 */ - "mille", /* \371\160 */ - "miûm", /* \371\161 */ - "monétaire", /* \371\162 */ - "niûn", /* \371\163 */ - "no", /* \371\164 */ - "ombrée", /* \371\165 */ - "p'iûp'", /* \371\166 */ - "pha", /* \371\167 */ - "piûp", /* \371\170 */ - "rhô", /* \371\171 */ - "riûl", /* \371\172 */ - "rra", /* \371\173 */ - "siôs", /* \371\174 */ - "sous-groupe", /* \371\175 */ - "ssa", /* \371\176 */ - "supérieure", /* \371\177 */ - "t'iût'", /* \371\200 */ - "tch'iûtch'", /* \371\201 */ - "tchha", /* \371\202 */ - "tha", /* \371\203 */ - "tikût", /* \371\204 */ - "trigramme", /* \371\205 */ - "ttha", /* \371\206 */ - "va", /* \371\207 */ - "visarga", /* \371\210 */ - "yousse", /* \371\211 */ - "za'", /* \371\212 */ - "écaille", /* \371\213 */ - "ajouré", /* \371\214 */ - "anousvara", /* \371\215 */ - "apostrophe", /* \371\216 */ - "au", /* \371\217 */ - "barrée", /* \371\220 */ - "bouclé", /* \371\221 */ - "cadratin", /* \371\222 */ - "cent", /* \371\223 */ - "coeur", /* \371\224 */ - "d'interrogation", /* \371\225 */ - "d'union", /* \371\226 */ - "djha", /* \371\227 */ - "famille", /* \371\230 */ - "fantaisie", /* \371\231 */ - "gôl", /* \371\232 */ - "image", /* \371\233 */ - "inférieure", /* \371\234 */ - "ié", /* \371\235 */ - "ke", /* \371\236 */ - "kho", /* \371\237 */ - "ko", /* \371\240 */ - "mo", /* \371\241 */ - "nord-est", /* \371\242 */ - "ombre", /* \371\243 */ - "onze", /* \371\244 */ - "par-dessus", /* \371\245 */ - "pointé", /* \371\246 */ - "schwa", /* \371\247 */ - "seize", /* \371\250 */ - "souscrits", /* \371\251 */ - "sud-est", /* \371\252 */ - "sur", /* \371\253 */ - "to", /* \371\254 */ - "transmission", /* \371\255 */ - "tu", /* \371\256 */ - "yu", /* \371\257 */ - "é", /* \371\260 */ - "accolade", /* \371\261 */ - "alef", /* \371\262 */ - "angle", /* \371\263 */ - "candrabindou", /* \371\264 */ - "carrée", /* \371\265 */ - "contient", /* \371\266 */ - "couvrante", /* \371\267 */ - "delta", /* \371\270 */ - "demi-rond", /* \371\271 */ - "dz", /* \371\272 */ - "farsi", /* \371\273 */ - "gamma", /* \371\274 */ - "inversée", /* \371\275 */ - "iotacisme", /* \371\276 */ - "katakana-hiragana", /* \371\277 */ - "lenticulaire", /* \371\300 */ - "logique", /* \371\301 */ - "madda", /* \371\302 */ - "mien", /* \371\303 */ - "ng", /* \371\304 */ - "nu", /* \371\305 */ - "numérateur", /* \371\306 */ - "ouvert", /* \371\307 */ - "pi", /* \371\310 */ - "ponctuation", /* \371\311 */ - "positif", /* \371\312 */ - "produit", /* \371\313 */ - "quadrant", /* \371\314 */ - "re", /* \371\315 */ - "rectangle", /* \371\316 */ - "répétition", /* \371\317 */ - "se", /* \371\320 */ - "soung", /* \371\321 */ - "sous-ensemble", /* \371\322 */ - "suit", /* \371\323 */ - "sur-ensemble", /* \371\324 */ - "tam", /* \371\325 */ - "triangulaire", /* \371\326 */ - "té", /* \371\327 */ - "vrachy", /* \371\330 */ - "wi", /* \371\331 */ - "yod", /* \371\332 */ - "zé", /* \371\333 */ - "ajourée", /* \371\334 */ - "approximativement", /* \371\335 */ - "arménien", /* \371\336 */ - "bea'", /* \371\337 */ - "beha'", /* \371\340 */ - "bourre", /* \371\341 */ - "bulletin", /* \371\342 */ - "clic", /* \371\343 */ - "culbutée", /* \371\344 */ - "d'appareil", /* \371\345 */ - "d'itération", /* \371\346 */ - "damma", /* \371\347 */ - "deux-points", /* \371\350 */ - "dix-huit", /* \371\351 */ - "dix-neuf", /* \371\352 */ - "dix-sept", /* \371\353 */ - "do", /* \371\354 */ - "doatchachmi", /* \371\355 */ - "dya'", /* \371\356 */ - "encadré", /* \371\357 */ - "esse", /* \371\360 */ - "est", /* \371\361 */ - "fatha", /* \371\362 */ - "fathatan", /* \371\363 */ - "gothique", /* \371\364 */ - "gua'", /* \371\365 */ - "hachuré", /* \371\366 */ - "huitième", /* \371\367 */ - "jusqu'à", /* \371\370 */ - "kana", /* \371\371 */ - "kasra", /* \371\372 */ - "keha'", /* \371\373 */ - "lo", /* \371\374 */ - "ngoa'", /* \371\375 */ - "nord-ouest", /* \371\376 */ - "noukta", /* \371\377 */ - "nya'", /* \372\001 */ - "ondulé", /* \372\002 */ - "original", /* \372\003 */ - "ouïgour", /* \372\004 */ - "pa'", /* \372\005 */ - "peha'", /* \372\006 */ - "pho", /* \372\007 */ - "point-virgule", /* \372\010 */ - "précède", /* \372\011 */ - "quatorze", /* \372\012 */ - "quinze", /* \372\013 */ - "rnoûn", /* \372\014 */ - "ro", /* \372\015 */ - "soleil", /* \372\016 */ - "tcheha'", /* \372\017 */ - "tchim'", /* \372\020 */ - "teha'", /* \372\021 */ - "terre", /* \372\022 */ - "ti", /* \372\023 */ - "treize", /* \372\024 */ - "tta'", /* \372\025 */ - "tteha'", /* \372\026 */ - "va'", /* \372\027 */ - "vav", /* \372\030 */ - "vingt", /* \372\031 */ - "voisé", /* \372\032 */ - "vote", /* \372\033 */ - "we", /* \372\034 */ - "élevé", /* \372\035 */ - "ae", /* \372\036 */ - "anglais", /* \372\037 */ - "angulaire", /* \372\040 */ - "arrêt", /* \372\041 */ - "barbe", /* \372\042 */ - "barri", /* \372\043 */ - "bet", /* \372\044 */ - "bo", /* \372\045 */ - "ciseaux", /* \372\046 */ - "code", /* \372\047 */ - "couvrant", /* \372\050 */ - "cube", /* \372\051 */ - "dalet", /* \372\052 */ - "demi-cercle", /* \372\053 */ - "dhal", /* \372\054 */ - "dispositif", /* \372\055 */ - "djé", /* \372\056 */ - "dzé", /* \372\057 */ - "eng", /* \372\060 */ - "englobant", /* \372\061 */ - "fa", /* \372\062 */ - "flèches", /* \372\063 */ - "fo", /* \372\064 */ - "guillemet-apostrophe", /* \372\065 */ - "guillemet-virgule", /* \372\066 */ - "hi", /* \372\067 */ - "hu", /* \372\070 */ - "ijitsa", /* \372\071 */ - "jetsch", /* \372\072 */ - "ki", /* \372\073 */ - "km", /* \372\074 */ - "ku", /* \372\075 */ - "l'avant", /* \372\076 */ - "lambda", /* \372\077 */ - "lamed", /* \372\100 */ - "larmé", /* \372\101 */ - "latin", /* \372\102 */ - "longue", /* \372\103 */ - "lune", /* \372\104 */ - "marbouta", /* \372\105 */ - "me", /* \372\106 */ - "mem", /* \372\107 */ - "mi", /* \372\110 */ - "mire", /* \372\111 */ - "multiplication", /* \372\112 */ - "neige", /* \372\113 */ - "noeud", /* \372\114 */ - "noou", /* \372\115 */ - "négation", /* \372\116 */ - "ohm", /* \372\117 */ - "ondulée", /* \372\120 */ - "paire", /* \372\121 */ - "patah", /* \372\122 */ - "phi", /* \372\123 */ - "pique", /* \372\124 */ - "piûp-siôs", /* \372\125 */ - "po", /* \372\126 */ - "pointes", /* \372\127 */ - "pointeur", /* \372\130 */ - "pointillée", /* \372\131 */ - "pointillés", /* \372\132 */ - "potence", /* \372\133 */ - "prolongé", /* \372\134 */ - "psi", /* \372\135 */ - "puce", /* \372\136 */ - "pé", /* \372\137 */ - "quadruple", /* \372\140 */ - "quart", /* \372\141 */ - "queue", /* \372\142 */ - "rafe", /* \372\143 */ - "ri", /* \372\144 */ - "riûl-hiûh", /* \372\145 */ - "ru", /* \372\146 */ - "réception", /* \372\147 */ - "semi-direct", /* \372\150 */ - "serbe", /* \372\151 */ - "si", /* \372\152 */ - "sigma", /* \372\153 */ - "sixième", /* \372\154 */ - "soudé", /* \372\155 */ - "sous", /* \372\156 */ - "ssangkiyok", /* \372\157 */ - "ssangsiôs", /* \372\160 */ - "su", /* \372\161 */ - "sud-ouest", /* \372\162 */ - "tabulation", /* \372\163 */ - "tcho", /* \372\164 */ - "te", /* \372\165 */ - "texte", /* \372\166 */ - "tsé", /* \372\167 */ - "téléphone", /* \372\170 */ - "unique", /* \372\171 */ - "ve", /* \372\172 */ - "visage", /* \372\173 */ - "yi", /* \372\174 */ - "yiddish", /* \372\175 */ - "yérou", /* \372\176 */ - "za", /* \372\177 */ - "zone", /* \372\200 */ - "èche", /* \372\201 */ - "ère", /* \372\202 */ - "//", /* \372\203 */ - "am", /* \372\204 */ - "an", /* \372\205 */ - "arrobe", /* \372\206 */ - "avagraha", /* \372\207 */ - "boucle", /* \372\210 */ - "bêta", /* \372\211 */ - "centime", /* \372\212 */ - "centre", /* \372\213 */ - "chaîne", /* \372\214 */ - "chhe", /* \372\215 */ - "ciel", /* \372\216 */ - "cinquième", /* \372\217 */ - "cinquièmes", /* \372\220 */ - "cm", /* \372\221 */ - "co", /* \372\222 */ - "constante", /* \372\223 */ - "couché", /* \372\224 */ - "courte", /* \372\225 */ - "crayon", /* \372\226 */ - "croisillon", /* \372\227 */ - "d'accentuation", /* \372\230 */ - "d'amorce", /* \372\231 */ - "dahal", /* \372\232 */ - "dammatan", /* \372\233 */ - "ddahal", /* \372\234 */ - "ddal", /* \372\235 */ - "degré", /* \372\236 */ - "demi-cadratin", /* \372\237 */ - "diagonal", /* \372\240 */ - "différent", /* \372\241 */ - "division", /* \372\242 */ - "dollar", /* \372\243 */ - "droite-à-gauche", /* \372\244 */ - "dul", /* \372\245 */ - "dur", /* \372\246 */ - "eau", /* \372\247 */ - "ek", /* \372\250 */ - "eu", /* \372\251 */ - "fermé", /* \372\252 */ - "feu", /* \372\253 */ - "flocon", /* \372\254 */ - "gauche-à-droite", /* \372\255 */ - "ghunna", /* \372\256 */ - "hampe", /* \372\257 */ - "hampé", /* \372\260 */ - "hataf", /* \372\261 */ - "haut-bas", /* \372\262 */ - "horizontale", /* \372\263 */ - "in", /* \372\264 */ - "indicateur", /* \372\265 */ - "inscrit", /* \372\266 */ - "interligne", /* \372\267 */ - "intersection", /* \372\270 */ - "introducteur", /* \372\271 */ - "ja'", /* \372\272 */ - "kan", /* \372\273 */ - "kappa", /* \372\274 */ - "kapyo-ounmiûm", /* \372\275 */ - "kapyo-ounp'iûp'", /* \372\276 */ - "kapyo-ounpiûp", /* \372\277 */ - "kasratan", /* \372\300 */ - "khi", /* \372\301 */ - "kiyok-siôs", /* \372\302 */ - "koppa", /* \372\303 */ - "larmée", /* \372\304 */ - "llla", /* \372\305 */ - "long", /* \372\306 */ - "mapiq", /* \372\307 */ - "miûm-piûp", /* \372\310 */ - "mm", /* \372\311 */ - "multi-ensemble", /* \372\312 */ - "multiplié", /* \372\313 */ - "méga", /* \372\314 */ - "niûn-hiûh", /* \372\315 */ - "niûn-tchiûtch", /* \372\316 */ - "niûn-tikût", /* \372\317 */ - "nun", /* \372\320 */ - "ombré", /* \372\321 */ - "palatal", /* \372\322 */ - "pansiôs", /* \372\323 */ - "paragraphe", /* \372\324 */ - "parallèle", /* \372\325 */ - "percée", /* \372\326 */ - "perluète", /* \372\327 */ - "postale", /* \372\330 */ - "presque", /* \372\331 */ - "privé", /* \372\332 */ - "qamats", /* \372\333 */ - "quarts", /* \372\334 */ - "racine", /* \372\335 */ - "rad", /* \372\336 */ - "rech", /* \372\337 */ - "remplacement", /* \372\340 */ - "rha", /* \372\341 */ - "riûl-kiyok", /* \372\342 */ - "riûl-miûm", /* \372\343 */ - "riûl-p'iûp'", /* \372\344 */ - "riûl-piûp", /* \372\345 */ - "riûl-siôs", /* \372\346 */ - "riûl-t'iût'", /* \372\347 */ - "roupie", /* \372\350 */ - "rra'", /* \372\351 */ - "semi-voisé", /* \372\352 */ - "sin", /* \372\353 */ - "siôs-kiyok", /* \372\354 */ - "siôs-piûp", /* \372\355 */ - "siôs-tikût", /* \372\356 */ - "société", /* \372\357 */ - "soukoun", /* \372\360 */ - "ssangiûng", /* \372\361 */ - "ssangpiûp", /* \372\362 */ - "ssangtchiûtch", /* \372\363 */ - "ssangtikût", /* \372\364 */ - "strictement", /* \372\365 */ - "tabulateur", /* \372\366 */ - "tav", /* \372\367 */ - "than", /* \372\370 */ - "thêta", /* \372\371 */ - "tiers", /* \372\372 */ - "titlo", /* \372\373 */ - "tourniquet", /* \372\374 */ - "tsade", /* \372\375 */ - "union", /* \372\376 */ - "veou", /* \372\377 */ - "verticalement", /* \373\001 */ - "vo", /* \373\002 */ - "wasla", /* \373\003 */ - "wè", /* \373\004 */ - "wé", /* \373\005 */ - "yesiûng", /* \373\006 */ - "yiun", /* \373\007 */ - "yorinhiûh", /* \373\010 */ - "yya", /* \373\011 */ - "yè", /* \373\012 */ - "yé", /* \373\013 */ - "yô", /* \373\014 */ - "è", /* \373\015 */ - "échappement", /* \373\016 */ - "élément", /* \373\017 */ - "ô", /* \373\020 */ - "û", /* \373\021 */ - "ûi", /* \373\022 */ - "<=", /* \373\023 */ - "accusé", /* \373\024 */ - "activateur", /* \373\025 */ - "aib", /* \373\026 */ - "alayhe", /* \373\027 */ - "alliance", /* \373\030 */ - "ang", /* \373\031 */ - "annulation", /* \373\032 */ - "appartient", /* \373\033 */ - "arrière", /* \373\034 */ - "arèa", /* \373\035 */ - "ascendant", /* \373\036 */ - "astérisque-hélice", /* \373\037 */ - "asymptotiquement", /* \373\040 */ - "avoir", /* \373\041 */ - "aïn", /* \373\042 */ - "ban", /* \373\043 */ - "bashkir", /* \373\044 */ - "be", /* \373\045 */ - "beaucoup", /* \373\046 */ - "bec", /* \373\047 */ - "bi", /* \373\050 */ - "bien", /* \373\051 */ - "biélorusse", /* \373\052 */ - "biélorusse-ukrainien", /* \373\053 */ - "bois", /* \373\054 */ - "bu", /* \373\055 */ - "bé", /* \373\056 */ - "carreau", /* \373\057 */ - "cavalier", /* \373\060 */ - "cciar", /* \373\061 */ - "central", /* \373\062 */ - "centré", /* \373\063 */ - "cents", /* \373\064 */ - "chan", /* \373\065 */ - "changement", /* \373\066 */ - "chariot", /* \373\067 */ - "chhan", /* \373\070 */ - "chtcha", /* \373\071 */ - "cin", /* \373\072 */ - "cinquante", /* \373\073 */ - "colon", /* \373\074 */ - "considéralement", /* \373\075 */ - "consonne", /* \373\076 */ - "copyright", /* \373\077 */ - "coranique", /* \373\100 */ - "coronis", /* \373\101 */ - "courbée", /* \373\102 */ - "cqar", /* \373\103 */ - "croches", /* \373\104 */ - "d'accolade", /* \373\105 */ - "d'accusé", /* \373\106 */ - "d'annulation", /* \373\107 */ - "d'arrêt", /* \373\110 */ - "d'en-tête", /* \373\111 */ - "d'insertion", /* \373\112 */ - "d'intégrale", /* \373\113 */ - "d'une", /* \373\114 */ - "d'échange", /* \373\115 */ - "dame", /* \373\116 */ - "danda", /* \373\117 */ - "danger", /* \373\120 */ - "dché", /* \373\121 */ - "dei", /* \373\122 */ - "demande", /* \373\123 */ - "demi-anneau", /* \373\124 */ - "demi-disque", /* \373\125 */ - "demi-voyelle", /* \373\126 */ - "dessus", /* \373\127 */ - "deuxième", /* \373\130 */ - "di", /* \373\131 */ - "diagonaux", /* \373\132 */ - "différence", /* \373\133 */ - "disque", /* \373\134 */ - "diviseur", /* \373\135 */ - "djhe", /* \373\136 */ - "don", /* \373\137 */ - "dsa", /* \373\140 */ - "dza", /* \373\141 */ - "dzêta", /* \373\142 */ - "dé", /* \373\143 */ - "dénominateur", /* \373\144 */ - "ed", /* \373\145 */ - "effe", /* \373\146 */ - "ei", /* \373\147 */ - "elle", /* \373\150 */ - "emme", /* \373\151 */ - "enchâssement", /* \373\152 */ - "encochée", /* \373\153 */ - "entreprise", /* \373\154 */ - "erre", /* \373\155 */ - "facteur", /* \373\156 */ - "far", /* \373\157 */ - "fe", /* \373\160 */ - "fei", /* \373\161 */ - "femelle", /* \373\162 */ - "fi", /* \373\163 */ - "fichier", /* \373\164 */ - "financier", /* \373\165 */ - "fine", /* \373\166 */ - "fita", /* \373\167 */ - "floral", /* \373\170 */ - "formage", /* \373\171 */ - "formatage", /* \373\172 */ - "formes", /* \373\173 */ - "forçage", /* \373\174 */ - "fou", /* \373\175 */ - "fourche", /* \373\176 */ - "fourchette", /* \373\177 */ - "fractionnaire", /* \373\200 */ - "félicitations", /* \373\201 */ - "gauche-droite", /* \373\202 */ - "ge", /* \373\203 */ - "ghan", /* \373\204 */ - "ghat", /* \373\205 */ - "ghha", /* \373\206 */ - "ghhan", /* \373\207 */ - "gi", /* \373\210 */ - "gian", /* \373\211 */ - "giangia", /* \373\212 */ - "gim", /* \373\213 */ - "gjé", /* \373\214 */ - "go", /* \373\215 */ - "groupe", /* \373\216 */ - "gu", /* \373\217 */ - "guimel", /* \373\220 */ - "géométriquement", /* \373\221 */ - "hhae", /* \373\222 */ - "hhar", /* \373\223 */ - "hhoe", /* \373\224 */ - "hie", /* \373\225 */ - "holam", /* \373\226 */ - "hori", /* \373\227 */ - "hors", /* \373\230 */ - "hue", /* \373\231 */ - "ia", /* \373\232 */ - "ici", /* \373\233 */ - "identique", /* \373\234 */ - "ij", /* \373\235 */ - "il", /* \373\236 */ - "inhibiteur", /* \373\237 */ - "insécable", /* \373\240 */ - "io", /* \373\241 */ - "iou", /* \373\242 */ - "isshar", /* \373\243 */ - "iûng-kiyok", /* \373\244 */ - "je", /* \373\245 */ - "jeth", /* \373\246 */ - "kapyo-ounssangpiûp", /* \373\247 */ - "kazakhe", /* \373\250 */ - "kg", /* \373\251 */ - "khakassien", /* \373\252 */ - "khei", /* \373\253 */ - "khha", /* \373\254 */ - "kien", /* \373\255 */ - "kjé", /* \373\256 */ - "ksi", /* \373\257 */ - "l'arrière", /* \373\260 */ - "lame", /* \373\261 */ - "larmées", /* \373\262 */ - "las", /* \373\263 */ - "liant", /* \373\264 */ - "ling", /* \373\265 */ - "liun", /* \373\266 */ - "livre", /* \373\267 */ - "lj", /* \373\270 */ - "main", /* \373\271 */ - "man", /* \373\272 */ - "marchandises", /* \373\273 */ - "mb", /* \373\274 */ - "message", /* \373\275 */ - "mesuré", /* \373\276 */ - "milliers", /* \373\277 */ - "mince", /* \373\300 */ - "miûm-pansiôs", /* \373\301 */ - "miûm-siôs", /* \373\302 */ - "molette", /* \373\303 */ - "mouche", /* \373\304 */ - "moue", /* \373\305 */ - "mouillure", /* \373\306 */ - "moyenne", /* \373\307 */ - "mv", /* \373\310 */ - "mw", /* \373\311 */ - "mâle", /* \373\312 */ - "métal", /* \373\313 */ - "nar", /* \373\314 */ - "ngo", /* \373\315 */ - "niûn-kiyok", /* \373\316 */ - "niûn-pansiôs", /* \373\317 */ - "niûn-siôs", /* \373\320 */ - "nj", /* \373\321 */ - "nnna", /* \373\322 */ - "nom", /* \373\323 */ - "norme", /* \373\324 */ - "note", /* \373\325 */ - "nul", /* \373\326 */ - "numéral", /* \373\327 */ - "numérique", /* \373\330 */ - "numéro", /* \373\331 */ - "obliquement", /* \373\332 */ - "obèle", /* \373\333 */ - "oh", /* \373\334 */ - "om", /* \373\335 */ - "on", /* \373\336 */ - "ondé", /* \373\337 */ - "ordinal", /* \373\340 */ - "ornée", /* \373\341 */ - "otte", /* \373\342 */ - "ouk", /* \373\343 */ - "oï", /* \373\344 */ - "p'iûp'-piûp", /* \373\345 */ - "page", /* \373\346 */ - "papillon", /* \373\347 */ - "parallélogramme", /* \373\350 */ - "partiel", /* \373\351 */ - "penchée", /* \373\352 */ - "percé", /* \373\353 */ - "pied", /* \373\354 */ - "pion", /* \373\355 */ - "piur", /* \373\356 */ - "piûp-kiyok", /* \373\357 */ - "piûp-p'iûp'", /* \373\360 */ - "piûp-siôs-kiyok", /* \373\361 */ - "piûp-siôs-tikût", /* \373\362 */ - "piûp-t'iût'", /* \373\363 */ - "piûp-tchiûtch", /* \373\364 */ - "piûp-tikût", /* \373\365 */ - "plafond", /* \373\366 */ - "plancher", /* \373\367 */ - "planck", /* \373\370 */ - "plein", /* \373\371 */ - "plume", /* \373\372 */ - "pneumata", /* \373\373 */ - "pommetée", /* \373\374 */ - "pont", /* \373\375 */ - "premier", /* \373\376 */ - "projetée", /* \373\377 */ - "proportion", /* \374\001 */ - "protégée", /* \374\002 */ - "précédant", /* \374\003 */ - "pu", /* \374\004 */ - "qof", /* \374\005 */ - "quadrillé", /* \374\006 */ - "quartier", /* \374\007 */ - "quatrième", /* \374\010 */ - "quintefeuille", /* \374\011 */ - "rae", /* \374\012 */ - "ramées", /* \374\013 */ - "rayonnante", /* \374\014 */ - "rayons", /* \374\015 */ - "recourbé", /* \374\016 */ - "rectiligne", /* \374\017 */ - "relation", /* \374\020 */ - "repos", /* \374\021 */ - "ressource", /* \374\022 */ - "retour", /* \374\023 */ - "riûl-kiyok-siôs", /* \374\024 */ - "riûl-niûn", /* \374\025 */ - "riûl-pansiôs", /* \374\026 */ - "riûl-piûp-siôs", /* \374\027 */ - "riûl-tikût", /* \374\030 */ - "riûl-yorinhiûh", /* \374\031 */ - "roi", /* \374\032 */ - "réfléchie", /* \374\033 */ - "salla", /* \374\034 */ - "san", /* \374\035 */ - "saturne", /* \374\036 */ - "scei", /* \374\037 */ - "scima", /* \374\040 */ - "scin", /* \374\041 */ - "segol", /* \374\042 */ - "semi-circulaire", /* \374\043 */ - "sgian", /* \374\044 */ - "shha", /* \374\045 */ - "siôs-niûn", /* \374\046 */ - "siôs-riûl", /* \374\047 */ - "siôs-tchiûtch", /* \374\050 */ - "sonnerie", /* \374\051 */ - "souriant", /* \374\052 */ - "spécial", /* \374\053 */ - "ssanghiûh", /* \374\054 */ - "ssangniûn", /* \374\055 */ - "ssangriûl", /* \374\056 */ - "substitution", /* \374\057 */ - "suivant", /* \374\060 */ - "support", /* \374\061 */ - "suppression", /* \374\062 */ - "suspension", /* \374\063 */ - "symétrique", /* \374\064 */ - "synchronisation", /* \374\065 */ - "szen", /* \374\066 */ - "sélecteur", /* \374\067 */ - "sélectionnée", /* \374\070 */ - "tar", /* \374\071 */ - "tatouïl", /* \374\072 */ - "tau", /* \374\073 */ - "tce", /* \374\074 */ - "tet", /* \374\075 */ - "thorn", /* \374\076 */ - "thue", /* \374\077 */ - "tikût-kiyok", /* \374\100 */ - "tirant", /* \374\101 */ - "tire-bouchon", /* \374\102 */ - "tiun", /* \374\103 */ - "tour", /* \374\104 */ - "travail", /* \374\105 */ - "trompe-l'oeil", /* \374\106 */ - "trèfle", /* \374\107 */ - "très", /* \374\110 */ - "ukrainien", /* \374\111 */ - "usage", /* \374\112 */ - "utilisé", /* \374\113 */ - "vecteur", /* \374\114 */ - "vin", /* \374\115 */ - "vingt-deux", /* \374\116 */ - "vingt-et-un", /* \374\117 */ - "vingt-quatre", /* \374\120 */ - "vingt-trois", /* \374\121 */ - "visible", /* \374\122 */ - "voisée", /* \374\123 */ - "vrai", /* \374\124 */ - "vu", /* \374\125 */ - "vé", /* \374\126 */ - "vérification", /* \374\127 */ - "wasallam", /* \374\130 */ - "won", /* \374\131 */ - "xi", /* \374\132 */ - "yate", /* \374\133 */ - "yen", /* \374\134 */ - "yesiûng-pansiôs", /* \374\135 */ - "yesiûng-siôs", /* \374\136 */ - "you-i", /* \374\137 */ - "you-yo", /* \374\140 */ - "you-yé", /* \374\141 */ - "yô-i", /* \374\142 */ - "yô-ya", /* \374\143 */ - "yô-yè", /* \374\144 */ - "zaïn", /* \374\145 */ - "ze", /* \374\146 */ - "zi", /* \374\147 */ - "zil", /* \374\150 */ - "zo", /* \374\151 */ - "zu", /* \374\152 */ - "zzan", /* \374\153 */ - "zzil", /* \374\154 */ - "éclairée", /* \374\155 */ - "étincellement", /* \374\156 */ - "étude", /* \374\157 */ - "ño", /* \374\160 */ - "(ack)", /* \374\161 */ - "(apc)", /* \374\162 */ - "(bel)", /* \374\163 */ - "(bph)", /* \374\164 */ - "(bs)", /* \374\165 */ - "(can)", /* \374\166 */ - "(cch)", /* \374\167 */ - "(cr)", /* \374\170 */ - "(csi)", /* \374\171 */ - "(dc1)", /* \374\172 */ - "(dc2)", /* \374\173 */ - "(dc3)", /* \374\174 */ - "(dc4)", /* \374\175 */ - "(dcs)", /* \374\176 */ - "(del)", /* \374\177 */ - "(dle)", /* \374\200 */ - "(ega)", /* \374\201 */ - "(em)", /* \374\202 */ - "(enq)", /* \374\203 */ - "(eot)", /* \374\204 */ - "(esa)", /* \374\205 */ - "(esc)", /* \374\206 */ - "(etb)", /* \374\207 */ - "(etx)", /* \374\210 */ - "(ff)", /* \374\211 */ - "(fs)", /* \374\212 */ - "(gs)", /* \374\213 */ - "(hop)", /* \374\214 */ - "(ht)", /* \374\215 */ - "(htj)", /* \374\216 */ - "(hts)", /* \374\217 */ - "(ind)", /* \374\220 */ - "(lf)", /* \374\221 */ - "(mw)", /* \374\222 */ - "(nak)", /* \374\223 */ - "(nbh)", /* \374\224 */ - "(nel)", /* \374\225 */ - "(nul)", /* \374\226 */ - "(osc)", /* \374\227 */ - "(pad)", /* \374\230 */ - "(pld)", /* \374\231 */ - "(plu)", /* \374\232 */ - "(pm)", /* \374\233 */ - "(pu1)", /* \374\234 */ - "(pu2)", /* \374\235 */ - "(ri)", /* \374\236 */ - "(rs)", /* \374\237 */ - "(sci)", /* \374\240 */ - "(sga)", /* \374\241 */ - "(sgci)", /* \374\242 */ - "(si)", /* \374\243 */ - "(so)", /* \374\244 */ - "(soh)", /* \374\245 */ - "(sos)", /* \374\246 */ - "(ss2)", /* \374\247 */ - "(ss3)", /* \374\250 */ - "(ssa)", /* \374\251 */ - "(st)", /* \374\252 */ - "(sts)", /* \374\253 */ - "(stx)", /* \374\254 */ - "(sub)", /* \374\255 */ - "(syn)", /* \374\256 */ - "(us)", /* \374\257 */ - "(vt)", /* \374\260 */ - "(vts)", /* \374\261 */ - "a-ou", /* \374\262 */ - "a-ô", /* \374\263 */ - "aaru", /* \374\264 */ - "abat-jour", /* \374\265 */ - "abîme", /* \374\266 */ - "accentué", /* \374\267 */ - "acceptable", /* \374\270 */ - "acceptées", /* \374\271 */ - "addak", /* \374\272 */ - "adi", /* \374\273 */ - "africain", /* \374\274 */ - "akat", /* \374\275 */ - "akbar", /* \374\276 */ - "aleph", /* \374\277 */ - "alignés", /* \374\300 */ - "allah", /* \374\301 */ - "aloha", /* \374\302 */ - "alternative", /* \374\303 */ - "alvéolaire", /* \374\304 */ - "alésage", /* \374\305 */ - "ampères", /* \374\306 */ - "angkhankhou", /* \374\307 */ - "angström", /* \374\310 */ - "anneau", /* \374\311 */ - "ano", /* \374\312 */ - "anousvâra", /* \374\313 */ - "anpea", /* \374\314 */ - "anti-liant", /* \374\315 */ - "anudatta", /* \374\316 */ - "août", /* \374\317 */ - "apaato", /* \374\320 */ - "appel", /* \374\321 */ - "arrondi", /* \374\322 */ - "arrondie", /* \374\323 */ - "arrondis", /* \374\324 */ - "article", /* \374\325 */ - "aruhua", /* \374\326 */ - "arèa-i", /* \374\327 */ - "arèa-o", /* \374\330 */ - "arèa-ou", /* \374\331 */ - "arèè", /* \374\332 */ - "as", /* \374\333 */ - "assertion", /* \374\334 */ - "astérique", /* \374\335 */ - "astérisme", /* \374\336 */ - "atteindre", /* \374\337 */ - "attente", /* \374\340 */ - "attention", /* \374\341 */ - "aucun", /* \374\342 */ - "aux", /* \374\343 */ - "avion", /* \374\344 */ - "avril", /* \374\345 */ - "ay", /* \374\346 */ - "ayah", /* \374\347 */ - "baareru", /* \374\350 */ - "baht", /* \374\351 */ - "baimai", /* \374\352 */ - "balance", /* \374\353 */ - "bancaire", /* \374\354 */ - "bar", /* \374\355 */ - "barbiche", /* \374\356 */ - "barricade", /* \374\357 */ - "base", /* \374\360 */ - "beeta", /* \374\361 */ - "beigne", /* \374\362 */ - "benzène", /* \374\363 */ - "bilabial", /* \374\364 */ - "bindi", /* \374\365 */ - "biologique", /* \374\366 */ - "biru", /* \374\367 */ - "bisectrice", /* \374\370 */ - "blancs", /* \374\371 */ - "bonhomme", /* \374\372 */ - "bons", /* \374\373 */ - "boruto", /* \374\374 */ - "bouton", /* \374\375 */ - "boîte", /* \374\376 */ - "bq", /* \374\377 */ - "brisée", /* \375\001 */ - "bussyeru", /* \375\002 */ - "bécarre", /* \375\003 */ - "bélier", /* \375\004 */ - "bémol", /* \375\005 */ - "cada", /* \375\006 */ - "cadrat", /* \375\007 */ - "caducée", /* \375\010 */ - "cal", /* \375\011 */ - "cancer", /* \375\012 */ - "capricorne", /* \375\013 */ - "care-of", /* \375\014 */ - "carotte", /* \375\015 */ - "catawa", /* \375\016 */ - "cc", /* \375\017 */ - "cd", /* \375\020 */ - "ce", /* \375\021 */ - "ceinture", /* \375\022 */ - "celsius", /* \375\023 */ - "ch", /* \375\024 */ - "chadda", /* \375\025 */ - "chaise", /* \375\026 */ - "chapeau", /* \375\027 */ - "chaudes", /* \375\030 */ - "cheva", /* \375\031 */ - "chevron", /* \375\032 */ - "chevrons", /* \375\033 */ - "chifre", /* \375\034 */ - "chèque", /* \375\035 */ - "circulaire", /* \375\036 */ - "citron", /* \375\037 */ - "clavier", /* \375\040 */ - "coché", /* \375\041 */ - "coins", /* \375\042 */ - "commerce", /* \375\043 */ - "complément", /* \375\044 */ - "compte", /* \375\045 */ - "compte-client", /* \375\046 */ - "comète", /* \375\047 */ - "concave", /* \375\050 */ - "conique", /* \375\051 */ - "conjonction", /* \375\052 */ - "conjuguée", /* \375\053 */ - "conservateur", /* \375\054 */ - "conséquent", /* \375\055 */ - "contenant", /* \375\056 */ - "contre-cotice", /* \375\057 */ - "copie", /* \375\060 */ - "coproduit", /* \375\061 */ - "corbeau", /* \375\062 */ - "correct", /* \375\063 */ - "correspond", /* \375\064 */ - "coréenne", /* \375\065 */ - "cotice", /* \375\066 */ - "coupe", /* \375\067 */ - "coupure", /* \375\070 */ - "courbé", /* \375\071 */ - "couronne", /* \375\072 */ - "course", /* \375\073 */ - "croche", /* \375\074 */ - "croissant", /* \375\075 */ - "croisée", /* \375\076 */ - "cruzeiro", /* \375\077 */ - "cubique", /* \375\100 */ - "cursif", /* \375\101 */ - "cylindricité", /* \375\102 */ - "d'abbréviation", /* \375\103 */ - "d'abréviation", /* \375\104 */ - "d'article", /* \375\105 */ - "d'emplacement", /* \375\106 */ - "d'enregistrement", /* \375\107 */ - "d'ensemble", /* \375\110 */ - "d'euler", /* \375\111 */ - "d'exploitation", /* \375\112 */ - "d'intérêt", /* \375\113 */ - "d'inversion", /* \375\114 */ - "d'unité", /* \375\115 */ - "d'échappement", /* \375\116 */ - "d'écrire", /* \375\117 */ - "daasu", /* \375\120 */ - "dagech", /* \375\121 */ - "david", /* \375\122 */ - "db", /* \375\123 */ - "dddha", /* \375\124 */ - "dej", /* \375\125 */ - "dek", /* \375\126 */ - "del", /* \375\127 */ - "demi", /* \375\130 */ - "demi-cadrat", /* \375\131 */ - "demi-espace", /* \375\132 */ - "dental", /* \375\133 */ - "dernier", /* \375\134 */ - "descendant", /* \375\135 */ - "descendu", /* \375\136 */ - "desi", /* \375\137 */ - "dessous", /* \375\140 */ - "dharma", /* \375\141 */ - "diagonale", /* \375\142 */ - "diamètre", /* \375\143 */ - "digamma", /* \375\144 */ - "dingot", /* \375\145 */ - "directionnel", /* \375\146 */ - "divisé", /* \375\147 */ - "dièse", /* \375\150 */ - "djalladjalalouhou", /* \375\151 */ - "dl", /* \375\152 */ - "domino", /* \375\153 */ - "dong", /* \375\154 */ - "doru", /* \375\155 */ - "doubles", /* \375\156 */ - "doute", /* \375\157 */ - "décembre", /* \375\160 */ - "décimal", /* \375\161 */ - "définition", /* \375\162 */ - "démontrer", /* \375\163 */ - "dépilement", /* \375\164 */ - "déposée", /* \375\165 */ - "dérivée", /* \375\166 */ - "dérouleur", /* \375\167 */ - "eekaa", /* \375\170 */ - "effacement", /* \375\171 */ - "effachement", /* \375\172 */ - "egal", /* \375\173 */ - "eh", /* \375\174 */ - "el", /* \375\175 */ - "enfer", /* \375\176 */ - "enregistreur", /* \375\177 */ - "ensemble", /* \375\200 */ - "entièrement", /* \375\201 */ - "entrant", /* \375\202 */ - "enveloppe", /* \375\203 */ - "er", /* \375\204 */ - "esh", /* \375\205 */ - "estime", /* \375\206 */ - "estimé", /* \375\207 */ - "esukuudo", /* \375\210 */ - "euro", /* \375\211 */ - "excellent", /* \375\212 */ - "exclarrogatif", /* \375\213 */ - "exclusif", /* \375\214 */ - "excès", /* \375\215 */ - "existe", /* \375\216 */ - "exécution", /* \375\217 */ - "fahrenheit", /* \375\220 */ - "fallait", /* \375\221 */ - "fan", /* \375\222 */ - "faucille", /* \375\223 */ - "fermeture", /* \375\224 */ - "festival", /* \375\225 */ - "ff", /* \375\226 */ - "ffi", /* \375\227 */ - "ffl", /* \375\230 */ - "fixe", /* \375\231 */ - "fl", /* \375\232 */ - "fm", /* \375\233 */ - "folioles", /* \375\234 */ - "foncée", /* \375\235 */ - "fongman", /* \375\236 */ - "fraisage", /* \375\237 */ - "franc", /* \375\240 */ - "français", /* \375\241 */ - "fuseau", /* \375\242 */ - "féminin", /* \375\243 */ - "février", /* \375\244 */ - "ganma", /* \375\245 */ - "garon", /* \375\246 */ - "gb", /* \375\247 */ - "gerchâïm", /* \375\250 */ - "gerech", /* \375\251 */ - "ghz", /* \375\252 */ - "giga", /* \375\253 */ - "gimel", /* \375\254 */ - "ginii", /* \375\255 */ - "girudaa", /* \375\256 */ - "gn", /* \375\257 */ - "gpa", /* \375\260 */ - "graphique", /* \375\261 */ - "grimaçant", /* \375\262 */ - "guillemets", /* \375\263 */ - "guramu", /* \375\264 */ - "guramuton", /* \375\265 */ - "gy", /* \375\266 */ - "gémeaux", /* \375\267 */ - "géométrique", /* \375\270 */ - "géorgien", /* \375\271 */ - "gêta", /* \375\272 */ - "haitu", /* \375\273 */ - "han", /* \375\274 */ - "haute", /* \375\275 */ - "heisei", /* \375\276 */ - "hekutaaru", /* \375\277 */ - "hermitienne", /* \375\300 */ - "herutu", /* \375\301 */ - "het", /* \375\302 */ - "hip", /* \375\303 */ - "hiriq", /* \375\304 */ - "hizb", /* \375\305 */ - "hiûh-miûm", /* \375\306 */ - "hiûh-niûn", /* \375\307 */ - "hiûh-piûp", /* \375\310 */ - "hiûh-riûl", /* \375\311 */ - "homothétique", /* \375\312 */ - "hon", /* \375\313 */ - "hoon", /* \375\314 */ - "hooru", /* \375\315 */ - "horizontalement", /* \375\316 */ - "horizontaux", /* \375\317 */ - "hors-tout", /* \375\320 */ - "hp", /* \375\321 */ - "hpa", /* \375\322 */ - "huarado", /* \375\323 */ - "huiito", /* \375\324 */ - "huran", /* \375\325 */ - "hv", /* \375\326 */ - "hz", /* \375\327 */ - "i-a", /* \375\330 */ - "i-arèa", /* \375\331 */ - "i-ou", /* \375\332 */ - "i-ya", /* \375\333 */ - "i-ô", /* \375\334 */ - "i-û", /* \375\335 */ - "identification", /* \375\336 */ - "ie", /* \375\337 */ - "imprimer", /* \375\340 */ - "incrément", /* \375\341 */ - "industrielle", /* \375\342 */ - "infini", /* \375\343 */ - "info", /* \375\344 */ - "iningu", /* \375\345 */ - "intercale", /* \375\346 */ - "interrompue", /* \375\347 */ - "inti", /* \375\350 */ - "inutilisé", /* \375\351 */ - "inversé", /* \375\352 */ - "iri", /* \375\353 */ - "iu", /* \375\354 */ - "iûng-k'iûk'", /* \375\355 */ - "iûng-miûm", /* \375\356 */ - "iûng-p'iûp'", /* \375\357 */ - "iûng-pansiôs", /* \375\360 */ - "iûng-piûp", /* \375\361 */ - "iûng-siôs", /* \375\362 */ - "iûng-ssangkiyok", /* \375\363 */ - "iûng-t'iût'", /* \375\364 */ - "iûng-tch'iûtch'", /* \375\365 */ - "iûng-tchiûtch", /* \375\366 */ - "iûng-tikût", /* \375\367 */ - "janvier", /* \375\370 */ - "japonaise", /* \375\371 */ - "judéo-espagnol", /* \375\372 */ - "juillet", /* \375\373 */ - "juin", /* \375\374 */ - "jupiter", /* \375\375 */ - "justification", /* \375\376 */ - "jérusalem", /* \375\377 */ - "kai", /* \376\001 */ - "kairi", /* \376\002 */ - "kapyo-ounriûl", /* \376\003 */ - "karatto", /* \376\004 */ - "karorii", /* \376\005 */ - "kb", /* \376\006 */ - "kcal", /* \376\007 */ - "keesu", /* \376\010 */ - "kelvin", /* \376\011 */ - "khai", /* \376\012 */ - "khomout", /* \376\013 */ - "khon", /* \376\014 */ - "khouat", /* \376\015 */ - "khwai", /* \376\016 */ - "khz", /* \376\017 */ - "kiro", /* \376\020 */ - "kiroguramu", /* \376\021 */ - "kiromeetoru", /* \376\022 */ - "kirowatto", /* \376\023 */ - "kiyok-riûl", /* \376\024 */ - "kiyok-siôs-kiyok", /* \376\025 */ - "kk", /* \376\026 */ - "kl", /* \376\027 */ - "kon", /* \376\030 */ - "koopo", /* \376\031 */ - "koruna", /* \376\032 */ - "koubouts", /* \376\033 */ - "kpa", /* \376\034 */ - "kra", /* \376\035 */ - "kt", /* \376\036 */ - "kuroone", /* \376\037 */ - "kuruzeiro", /* \376\040 */ - "kv", /* \376\041 */ - "kw", /* \376\042 */ - "kyurii", /* \376\043 */ - "l'espace", /* \376\044 */ - "l'homme", /* \376\045 */ - "lac", /* \376\046 */ - "lakkhangyao", /* \376\047 */ - "laotiens", /* \376\050 */ - "latéral", /* \376\051 */ - "ldjé", /* \376\052 */ - "lej", /* \376\053 */ - "liaison", /* \376\054 */ - "libéral", /* \376\055 */ - "limite", /* \376\056 */ - "lion", /* \376\057 */ - "lire", /* \376\060 */ - "ljé", /* \376\061 */ - "lm", /* \376\062 */ - "ln", /* \376\063 */ - "log", /* \376\064 */ - "lorraine", /* \376\065 */ - "lou", /* \376\066 */ - "lout", /* \376\067 */ - "lunaire", /* \376\070 */ - "lx", /* \376\071 */ - "légère", /* \376\072 */ - "mahha", /* \376\073 */ - "maimalai", /* \376\074 */ - "maimuan", /* \376\075 */ - "maison", /* \376\076 */ - "maitaikhou", /* \376\077 */ - "maiyamok", /* \376\100 */ - "makku", /* \376\101 */ - "malte", /* \376\102 */ - "mansyon", /* \376\103 */ - "maqaf", /* \376\104 */ - "marqué", /* \376\105 */ - "mars", /* \376\106 */ - "marteau", /* \376\107 */ - "masculin", /* \376\110 */ - "matrice", /* \376\111 */ - "mayakru", /* \376\112 */ - "mayakuro", /* \376\113 */ - "meetoru", /* \376\114 */ - "meizi", /* \376\115 */ - "mercure", /* \376\116 */ - "mesure", /* \376\117 */ - "meteg", /* \376\120 */ - "mg", /* \376\121 */ - "mhz", /* \376\122 */ - "micro", /* \376\123 */ - "mikuron", /* \376\124 */ - "mil", /* \376\125 */ - "millième", /* \376\126 */ - "minnie", /* \376\127 */ - "miri", /* \376\130 */ - "miribaaru", /* \376\131 */ - "mise", /* \376\132 */ - "miûm-hiûh", /* \376\133 */ - "miûm-kiyok", /* \376\134 */ - "miûm-riûl", /* \376\135 */ - "miûm-ssangsiôs", /* \376\136 */ - "miûm-tch'iûtch'", /* \376\137 */ - "ml", /* \376\140 */ - "mode", /* \376\141 */ - "modélise", /* \376\142 */ - "mohammad", /* \376\143 */ - "moineau", /* \376\144 */ - "moins-ou-plus", /* \376\145 */ - "mol", /* \376\146 */ - "montagne", /* \376\147 */ - "montant", /* \376\150 */ - "montre", /* \376\151 */ - "mort", /* \376\152 */ - "mot", /* \376\153 */ - "mouette", /* \376\154 */ - "moyen", /* \376\155 */ - "mpa", /* \376\156 */ - "ms", /* \376\157 */ - "multijection", /* \376\160 */ - "médecine", /* \376\161 */ - "médiane", /* \376\162 */ - "médians", /* \376\163 */ - "mégatonne", /* \376\164 */ - "n'appartient", /* \376\165 */ - "n'est", /* \376\166 */ - "n'existe", /* \376\167 */ - "n'oblige", /* \376\170 */ - "nabla", /* \376\171 */ - "naira", /* \376\172 */ - "nangmontho", /* \376\173 */ - "nano", /* \376\174 */ - "nationales", /* \376\175 */ - "ndjé", /* \376\176 */ - "nen", /* \376\177 */ - "neptune", /* \376\200 */ - "nf", /* \376\201 */ - "ngu", /* \376\202 */ - "niggahita", /* \376\203 */ - "nikhahit", /* \376\204 */ - "niûn-piûp", /* \376\205 */ - "niûn-t'iût'", /* \376\206 */ - "njé", /* \376\207 */ - "nm", /* \376\210 */ - "noirs", /* \376\211 */ - "nokhouk", /* \376\212 */ - "nominales", /* \376\213 */ - "non-barre", /* \376\214 */ - "non-et", /* \376\215 */ - "non-ou", /* \376\216 */ - "notto", /* \376\217 */ - "nou", /* \376\220 */ - "nouveau", /* \376\221 */ - "nouvelle", /* \376\222 */ - "novembre", /* \376\223 */ - "ns", /* \376\224 */ - "nuage", /* \376\225 */ - "nuit", /* \376\226 */ - "nv", /* \376\227 */ - "nw", /* \376\230 */ - "o-ou", /* \376\231 */ - "o-ô", /* \376\232 */ - "o-û", /* \376\233 */ - "oblige", /* \376\234 */ - "octet", /* \376\235 */ - "octobre", /* \376\236 */ - "once", /* \376\237 */ - "onkar", /* \376\240 */ - "onsu", /* \376\241 */ - "oomu", /* \376\242 */ - "opposition", /* \376\243 */ - "option", /* \376\244 */ - "orage", /* \376\245 */ - "ordonnances", /* \376\246 */ - "origine", /* \376\247 */ - "orthodoxe", /* \376\250 */ - "ou-a", /* \376\251 */ - "ou-o-û", /* \376\252 */ - "ou-ou", /* \376\253 */ - "ou-yé", /* \376\254 */ - "ou-è", /* \376\255 */ - "oue", /* \376\256 */ - "ouee", /* \376\257 */ - "ouverte", /* \376\260 */ - "ov", /* \376\261 */ - "paasento", /* \376\262 */ - "paatu", /* \376\263 */ - "paix", /* \376\264 */ - "paiyannoi", /* \376\265 */ - "palatalisation", /* \376\266 */ - "palochka", /* \376\267 */ - "parapluie", /* \376\270 */ - "parce", /* \376\271 */ - "partie", /* \376\272 */ - "partielle", /* \376\273 */ - "partir", /* \376\274 */ - "paseq", /* \376\275 */ - "pastille", /* \376\276 */ - "pasuq", /* \376\277 */ - "patak", /* \376\300 */ - "pc", /* \376\301 */ - "peezi", /* \376\302 */ - "penihi", /* \376\303 */ - "pensu", /* \376\304 */ - "pente", /* \376\305 */ - "permis", /* \376\306 */ - "perspective", /* \376\307 */ - "peseta", /* \376\310 */ - "peso", /* \376\311 */ - "pf", /* \376\312 */ - "ph", /* \376\313 */ - "phan", /* \376\314 */ - "phinthou", /* \376\315 */ - "phonogramme", /* \376\316 */ - "phoung", /* \376\317 */ - "phouthao", /* \376\320 */ - "piasutoru", /* \376\321 */ - "piko", /* \376\322 */ - "pikuru", /* \376\323 */ - "piûp-hiûh", /* \376\324 */ - "piûp-niûn", /* \376\325 */ - "piûp-riûl", /* \376\326 */ - "piûp-siôs-piûp", /* \376\327 */ - "piûp-siôs-tchiûtch", /* \376\330 */ - "piûp-ssangsiôs", /* \376\331 */ - "piûp-tch'iûtch'", /* \376\332 */ - "pla", /* \376\333 */ - "place", /* \376\334 */ - "plus-ou-moins", /* \376\335 */ - "pluton", /* \376\336 */ - "pm", /* \376\337 */ - "pointillé", /* \376\340 */ - "pointo", /* \376\341 */ - "poissons", /* \376\342 */ - "pommeté", /* \376\343 */ - "pondo", /* \376\344 */ - "position", /* \376\345 */ - "ppm", /* \376\346 */ - "pr", /* \376\347 */ - "precède", /* \376\350 */ - "profil", /* \376\351 */ - "progiciel", /* \376\352 */ - "projective", /* \376\353 */ - "proportionnel", /* \376\354 */ - "prouve", /* \376\355 */ - "précédent", /* \376\356 */ - "précédée", /* \376\357 */ - "prédéfini", /* \376\360 */ - "ps", /* \376\361 */ - "pv", /* \376\362 */ - "pw", /* \376\363 */ - "qa", /* \376\364 */ - "qala", /* \376\365 */ - "qu'il", /* \376\366 */ - "quad", /* \376\367 */ - "quartefeuille", /* \376\370 */ - "radioactivivité", /* \376\371 */ - "rail", /* \376\372 */ - "rakhang", /* \376\373 */ - "rapport", /* \376\374 */ - "rasoul", /* \376\375 */ - "rayonnant", /* \376\376 */ - "rayé", /* \376\377 */ - "rectangulaire", /* \377\001 */ - "religion", /* \377\002 */ - "remu", /* \377\003 */ - "rentogen", /* \377\004 */ - "représente", /* \377\005 */ - "rhotacisme", /* \377\006 */ - "rhéostat", /* \377\007 */ - "rideaux", /* \377\010 */ - "rira", /* \377\011 */ - "rittoru", /* \377\012 */ - "riûl-k'iûk'", /* \377\013 */ - "riûl-kapyo-ounpiûp", /* \377\014 */ - "riûl-miûm-kiyok", /* \377\015 */ - "riûl-miûm-siôs", /* \377\016 */ - "riûl-piûp-hiûh", /* \377\017 */ - "riûl-ssangsiôs", /* \377\020 */ - "riûl-tikût-hiûh", /* \377\021 */ - "rou", /* \377\022 */ - "roua", /* \377\023 */ - "roub", /* \377\024 */ - "roue", /* \377\025 */ - "rousi", /* \377\026 */ - "ruban", /* \377\027 */ - "rupii", /* \377\030 */ - "ruuburu", /* \377\031 */ - "référence", /* \377\032 */ - "réponse", /* \377\033 */ - "rétrécissement", /* \377\034 */ - "réunion", /* \377\035 */ - "sablier", /* \377\036 */ - "sagittaire", /* \377\037 */ - "saikuru", /* \377\040 */ - "sajdah", /* \377\041 */ - "sala", /* \377\042 */ - "salam", /* \377\043 */ - "sallallahou", /* \377\044 */ - "samek", /* \377\045 */ - "samekh", /* \377\046 */ - "samphao", /* \377\047 */ - "sampi", /* \377\050 */ - "sanglé", /* \377\051 */ - "santiimu", /* \377\052 */ - "sapin", /* \377\053 */ - "saut", /* \377\054 */ - "scorpion", /* \377\055 */ - "scrupule", /* \377\056 */ - "second", /* \377\057 */ - "seconde", /* \377\060 */ - "secret", /* \377\061 */ - "secteur", /* \377\062 */ - "segment", /* \377\063 */ - "senti", /* \377\064 */ - "sento", /* \377\065 */ - "septembre", /* \377\066 */ - "service", /* \377\067 */ - "sh", /* \377\070 */ - "shakti", /* \377\071 */ - "shékel", /* \377\072 */ - "sinusoïde", /* \377\073 */ - "siringu", /* \377\074 */ - "sixièmes", /* \377\075 */ - "sixtefeuille", /* \377\076 */ - "siôs-hiûh", /* \377\077 */ - "siôs-iûng", /* \377\100 */ - "siôs-k'iûk'", /* \377\101 */ - "siôs-miûm", /* \377\102 */ - "siôs-p'iûp'", /* \377\103 */ - "siôs-piûp-kiyok", /* \377\104 */ - "siôs-ssangsiôs", /* \377\105 */ - "siôs-t'iût'", /* \377\106 */ - "siôs-tch'iûtch'", /* \377\107 */ - "sof", /* \377\110 */ - "soi", /* \377\111 */ - "soins", /* \377\112 */ - "sommation", /* \377\113 */ - "sortant", /* \377\114 */ - "soua", /* \377\115 */ - "sources", /* \377\116 */ - "sourire", /* \377\117 */ - "sous-article", /* \377\120 */ - "sphérique", /* \377\121 */ - "sr", /* \377\122 */ - "ssangarèa", /* \377\123 */ - "st", /* \377\124 */ - "stigma", /* \377\125 */ - "succursale", /* \377\126 */ - "suivante", /* \377\127 */ - "supervise", /* \377\130 */ - "superviser", /* \377\131 */ - "surface", /* \377\132 */ - "sv", /* \377\133 */ - "symbolw", /* \377\134 */ - "symétrie", /* \377\135 */ - "syouwa", /* \377\136 */ - "système", /* \377\137 */ - "séquence", /* \377\140 */ - "sérieux", /* \377\141 */ - "sûr", /* \377\142 */ - "tah", /* \377\143 */ - "taisyou", /* \377\144 */ - "tao", /* \377\145 */ - "taureau", /* \377\146 */ - "tc", /* \377\147 */ - "tch'itouûmsiôs", /* \377\150 */ - "tch'itouûmssangsiôs", /* \377\151 */ - "tch'itouûmssangtchiûtch", /* \377\152 */ - "tch'itouûmtch'iûtch'", /* \377\153 */ - "tch'itouûmtchiûtch", /* \377\154 */ - "tch'iûtch'-hiûh", /* \377\155 */ - "tch'iûtch'-k'iûk'", /* \377\156 */ - "tchada", /* \377\157 */ - "tchan", /* \377\160 */ - "tchang", /* \377\161 */ - "tchattawa", /* \377\162 */ - "tching", /* \377\163 */ - "tchiûtch-iûng", /* \377\164 */ - "tchoe", /* \377\165 */ - "tchongtch'iûmsiôs", /* \377\166 */ - "tchongtch'iûmssangsiôs", /* \377\167 */ - "tchongtch'iûmssangtchiûtch",/* \377\170 */ - "tchongtch'iûmtch'iûtch'", /* \377\171 */ - "tchongtch'iûmtchiûtch", /* \377\172 */ - "tchoula", /* \377\173 */ - "teleia", /* \377\174 */ - "tend", /* \377\175 */ - "thahan", /* \377\176 */ - "thanthakhat", /* \377\177 */ - "thong", /* \377\200 */ - "thoung", /* \377\201 */ - "thz", /* \377\202 */ - "tikût-riûl", /* \377\203 */ - "tippi", /* \377\204 */ - "tja", /* \377\205 */ - "tjo", /* \377\206 */ - "tonne", /* \377\207 */ - "tonnerre", /* \377\210 */ - "totale", /* \377\211 */ - "touche", /* \377\212 */ - "tous", /* \377\213 */ - "train", /* \377\214 */ - "traits", /* \377\215 */ - "transpercés", /* \377\216 */ - "trappu", /* \377\217 */ - "trappue", /* \377\220 */ - "traçage", /* \377\221 */ - "trente", /* \377\222 */ - "trente-et-un", /* \377\223 */ - "tri", /* \377\224 */ - "triangulaires", /* \377\225 */ - "troisième", /* \377\226 */ - "tréflée", /* \377\227 */ - "ts", /* \377\230 */ - "tsere", /* \377\231 */ - "tèche", /* \377\232 */ - "téléphonique", /* \377\233 */ - "tête", /* \377\234 */ - "udatta", /* \377\235 */ - "ultra-fine", /* \377\236 */ - "una", /* \377\237 */ - "une", /* \377\240 */ - "uon", /* \377\241 */ - "ura", /* \377\242 */ - "uranus", /* \377\243 */ - "uu", /* \377\244 */ - "variant", /* \377\245 */ - "varika", /* \377\246 */ - "vent", /* \377\247 */ - "verrou", /* \377\250 */ - "verseau", /* \377\251 */ - "versicule", /* \377\252 */ - "verticaux", /* \377\253 */ - "vi", /* \377\254 */ - "victoire", /* \377\255 */ - "vide", /* \377\256 */ - "vidée", /* \377\257 */ - "vierge", /* \377\260 */ - "vingt-cinq", /* \377\261 */ - "vingt-huit", /* \377\262 */ - "vingt-neuf", /* \377\263 */ - "vingt-sept", /* \377\264 */ - "vingt-six", /* \377\265 */ - "virtuel", /* \377\266 */ - "visualisation", /* \377\267 */ - "visuel", /* \377\270 */ - "volume", /* \377\271 */ - "waen", /* \377\272 */ - "watto", /* \377\273 */ - "wb", /* \377\274 */ - "wynn", /* \377\275 */ - "ya-yô", /* \377\276 */ - "ya-ô", /* \377\277 */ - "yaado", /* \377\300 */ - "yaaru", /* \377\301 */ - "yak", /* \377\302 */ - "yamakkan", /* \377\303 */ - "yang", /* \377\304 */ - "yin", /* \377\305 */ - "ying", /* \377\306 */ - "yo-ou", /* \377\307 */ - "yo-ô", /* \377\310 */ - "yot", /* \377\311 */ - "you-a", /* \377\312 */ - "you-o", /* \377\313 */ - "you-ou", /* \377\314 */ - "you-é", /* \377\315 */ - "yr", /* \377\316 */ - "yuan", /* \377\317 */ - "yô-yo", /* \377\320 */ - "yô-ô", /* \377\321 */ - "zh", /* \377\322 */ - "zigzag", /* \377\323 */ - "zilde", /* \377\324 */ - "éclair", /* \377\325 */ - "écrasé", /* \377\326 */ - "écu", /* \377\327 */ - "égalité", /* \377\330 */ - "égyptienne", /* \377\331 */ - "épaisse", /* \377\332 */ - "équiangulaire", /* \377\333 */ - "étagère", /* \377\334 */ - "étiré", /* \377\335 */ - "ô-o", /* \377\336 */ - "ô-ou", /* \377\337 */ - "ô-yé", /* \377\340 */ - "ô-é", /* \377\341 */ - "ô-ô", /* \377\342 */ - "û-ou", /* \377\343 */ - "û-û", /* \377\344 */ - "ûi-ou", /* \377\345 */ + "syllabe", /* \002 */ + "yi", /* \003 */ + "arabe", /* \004 */ + "minuscule", /* \005 */ + "latine", /* \006 */ + "de", /* \007 */ + "majuscule", /* \010 */ + "canadienne", /* \011 */ + "ligature", /* \012 */ + "en", /* \013 */ + "hangûl", /* \014 */ + "vers", /* \015 */ + "idéogramme", /* \016 */ + "clé", /* \017 */ + "et", /* \020 */ + "accent", /* \021 */ + "symbole", /* \022 */ + "éthiopienne", /* \023 */ + "chiffre", /* \024 */ + "compatibilité", /* \025 */ + "diacritique", /* \026 */ + "grecque", /* \027 */ + "braille", /* \030 */ + "combinaison", /* \031 */ + "final", /* \032 */ + "la", /* \033 */ + "cyrillique", /* \034 */ + "carré", /* \035 */ + "isolé", /* \036 */ + "point", /* \037 */ + "chef", /* \040 */ + "chinoise", /* \041 */ + "voyelle", /* \042 */ + "souscrit", /* \043 */ + "à", /* \044 */ + "katakana", /* \045 */ + "disposé", /* \046 */ + "mîm", /* \047 */ + "le", /* \050 */ + "cerclé", /* \051 */ + "gauche", /* \052 */ + "droite", /* \053 */ + "porteur", /* \054 */ + "initial", /* \055 */ + "ya'", /* \056 */ + "signe", /* \057 */ + "esprit", /* \060 */ + "flèche", /* \061 */ + "aigu", /* \062 */ + "a", /* \063 */ + "o", /* \064 */ + "filet", /* \065 */ + "mongole", /* \066 */ + "grave", /* \067 */ + "double", /* \070 */ + "demi-chasse", /* \071 */ + "circonflexe", /* \072 */ + "pleine", /* \073 */ + "cjc", /* \074 */ + "entre", /* \075 */ + "idéographique", /* \076 */ + "parenthèses", /* \077 */ + "alif", /* \100 */ + "bas", /* \101 */ + "haut", /* \102 */ + "i", /* \103 */ + "iota", /* \104 */ + "chasse", /* \105 */ + "dévanâgarî", /* \106 */ + "tibétaine", /* \107 */ + "un", /* \110 */ + "ha'", /* \111 */ + "cri", /* \112 */ + "ou", /* \113 */ + "des", /* \114 */ + "djîm", /* \115 */ + "fin", /* \116 */ + "tch'ôsong", /* \117 */ + "tibétain", /* \120 */ + "bengali", /* \121 */ + "crochet", /* \122 */ + "plaines", /* \123 */ + "hiragana", /* \124 */ + "arménienne", /* \125 */ + "chérokie", /* \126 */ + "deux", /* \127 */ + "e", /* \130 */ + "médial", /* \131 */ + "u", /* \132 */ + "djôngsong", /* \133 */ + "rude", /* \134 */ + "runique", /* \135 */ + "trois", /* \136 */ + "hébraïque", /* \137 */ + "kannara", /* \140 */ + "télougou", /* \141 */ + "oriya", /* \142 */ + "doux", /* \143 */ + "goudjarati", /* \144 */ + "malayalam", /* \145 */ + "géorgienne", /* \146 */ + "blanc", /* \147 */ + "gourmoukhî", /* \150 */ + "gras", /* \151 */ + "singhalaise", /* \152 */ + "thaïe", /* \153 */ + "fonction", /* \154 */ + "apl", /* \155 */ + "hamza", /* \156 */ + "khmère", /* \157 */ + "maksoura", /* \160 */ + "syriaque", /* \161 */ + "télégraphique", /* \162 */ + "djoungsong", /* \163 */ + "avec", /* \164 */ + "tréma", /* \165 */ + "bopomofo", /* \166 */ + "r", /* \167 */ + "kha'", /* \170 */ + "tamoul", /* \171 */ + "tilde", /* \172 */ + "égal", /* \173 */ + "macron", /* \174 */ + "petit", /* \175 */ + "birmane", /* \176 */ + "cerclée", /* \177 */ + "modificative", /* \200 */ + "oméga", /* \201 */ + "vertical", /* \202 */ + "alpha", /* \203 */ + "marque", /* \204 */ + "vocalique", /* \205 */ + "lam", /* \206 */ + "noir", /* \207 */ + "nombre", /* \210 */ + "l", /* \211 */ + "du", /* \212 */ + "brève", /* \213 */ + "plus", /* \214 */ + "noûn", /* \215 */ + "thâna", /* \216 */ + "é", /* \217 */ + "quatre", /* \220 */ + "droit", /* \221 */ + "hébreu", /* \222 */ + "s", /* \223 */ + "êta", /* \224 */ + "caron", /* \225 */ + "huit", /* \226 */ + "laotienne", /* \227 */ + "cinq", /* \230 */ + "hé'", /* \231 */ + "barré", /* \232 */ + "té'", /* \233 */ + "ali", /* \234 */ + "gali", /* \235 */ + "subjointe", /* \236 */ + "h", /* \237 */ + "ka", /* \240 */ + "n", /* \241 */ + "horizontal", /* \242 */ + "ligne", /* \243 */ + "ni", /* \244 */ + "sîn", /* \245 */ + "barre", /* \246 */ + "chîn", /* \247 */ + "mkhedrouli", /* \250 */ + "points", /* \251 */ + "sept", /* \252 */ + "assomtavrouli", /* \253 */ + "kaf", /* \254 */ + "six", /* \255 */ + "verticale", /* \256 */ + "neuf", /* \257 */ + "romain", /* \260 */ + "t", /* \261 */ + "upsilon", /* \262 */ + "forme", /* \263 */ + "noire", /* \264 */ + "y", /* \265 */ + "g", /* \266 */ + "khmer", /* \267 */ + "sans", /* \270 */ + "z", /* \271 */ + "cercle", /* \272 */ + "coin", /* \273 */ + "cédille", /* \274 */ + "d", /* \275 */ + "m", /* \276 */ + "ma", /* \277 */ + "négatif", /* \300 */ + "souscrite", /* \301 */ + "rond", /* \302 */ + "jour", /* \303 */ + "vignette", /* \304 */ + "ya", /* \305 */ + "ô", /* \306 */ + "aï", /* \307 */ + "d'ogam", /* \310 */ + "ta", /* \311 */ + "todo", /* \312 */ + "c", /* \313 */ + "ha", /* \314 */ + "î", /* \315 */ + "blanche", /* \316 */ + "grec", /* \317 */ + "inférieur", /* \320 */ + "pointant", /* \321 */ + "ra", /* \322 */ + "â", /* \323 */ + "ba'", /* \324 */ + "culbuté", /* \325 */ + "epsilon", /* \326 */ + "pa", /* \327 */ + "virgule", /* \330 */ + "zéro", /* \331 */ + "éthiopien", /* \332 */ + "aou", /* \333 */ + "b", /* \334 */ + "caractère", /* \335 */ + "cornu", /* \336 */ + "crosse", /* \337 */ + "grand", /* \340 */ + "heure", /* \341 */ + "oû", /* \342 */ + "ra'", /* \343 */ + "supérieur", /* \344 */ + "ton", /* \345 */ + "triangle", /* \346 */ + "w", /* \347 */ + "dad", /* \350 */ + "fa'", /* \351 */ + "k", /* \352 */ + "moitié", /* \353 */ + "na", /* \354 */ + "simple", /* \355\001 */ + "da", /* \355\002 */ + "pointe", /* \355\003 */ + "sa", /* \355\004 */ + "sad", /* \355\005 */ + "sîbé", /* \355\006 */ + "tiret", /* \355\007 */ + "c-simplifié", /* \355\010 */ + "daguèch", /* \355\011 */ + "mongol", /* \355\012 */ + "réfléchi", /* \355\013 */ + "taquet", /* \355\014 */ + "étoile", /* \355\015 */ + "bloc", /* \355\016 */ + "ga", /* \355\017 */ + "moins", /* \355\020 */ + "p", /* \355\021 */ + "présentation", /* \355\022 */ + "que", /* \355\023 */ + "tcha", /* \355\024 */ + "v", /* \355\025 */ + "x", /* \355\026 */ + "'aïn", /* \355\027 */ + "arabe-hindi", /* \355\030 */ + "birman", /* \355\031 */ + "cha", /* \355\032 */ + "croix", /* \355\033 */ + "dix", /* \355\034 */ + "empattement", /* \355\035 */ + "omicron", /* \355\036 */ + "qaf", /* \355\037 */ + "yo", /* \355\040 */ + "d'annotation", /* \355\041 */ + "laotien", /* \355\042 */ + "non", /* \355\043 */ + "oblique", /* \355\044 */ + "séparateur", /* \355\045 */ + "ta'", /* \355\046 */ + "tonos", /* \355\047 */ + "wa", /* \355\050 */ + "waw", /* \355\051 */ + "ba", /* \355\052 */ + "j", /* \355\053 */ + "kha", /* \355\054 */ + "ogonek", /* \355\055 */ + "pas", /* \355\056 */ + "pour", /* \355\057 */ + "thé'", /* \355\060 */ + "dialytika", /* \355\061 */ + "f", /* \355\062 */ + "ghaïn", /* \355\063 */ + "hameçon", /* \355\064 */ + "mandchou", /* \355\065 */ + "nga", /* \355\066 */ + "pied-noir", /* \355\067 */ + "so", /* \355\070 */ + "tché", /* \355\071 */ + "tha", /* \355\072 */ + "espace", /* \355\073 */ + "exposant", /* \355\074 */ + "quadrat", /* \355\075 */ + "renversée", /* \355\076 */ + "tho", /* \355\077 */ + "tta", /* \355\100 */ + "za", /* \355\101 */ + "cramponné", /* \355\102 */ + "deux-points", /* \355\103 */ + "dja", /* \355\104 */ + "fraction", /* \355\105 */ + "gha", /* \355\106 */ + "ho", /* \355\107 */ + "indice", /* \355\110 */ + "mu", /* \355\111 */ + "naskapi", /* \355\112 */ + "no", /* \355\113 */ + "rr", /* \355\114 */ + "astérisque", /* \355\115 */ + "branches", /* \355\116 */ + "copte", /* \355\117 */ + "dda", /* \355\120 */ + "grasse", /* \355\121 */ + "gros", /* \355\122 */ + "parenthèse", /* \355\123 */ + "pha", /* \355\124 */ + "sara", /* \355\125 */ + "trait", /* \355\126 */ + "ttha", /* \355\127 */ + "équivalent", /* \355\130 */ + "brisé", /* \355\131 */ + "contour", /* \355\132 */ + "demi", /* \355\133 */ + "digramme", /* \355\134 */ + "guillemet", /* \355\135 */ + "mo", /* \355\136 */ + "médian", /* \355\137 */ + "ne", /* \355\140 */ + "nna", /* \355\141 */ + "petite", /* \355\142 */ + "renversé", /* \355\143 */ + "ronde", /* \355\144 */ + "sayissi", /* \355\145 */ + "sur", /* \355\146 */ + "thaï", /* \355\147 */ + "wo", /* \355\150 */ + "you", /* \355\151 */ + "ça", /* \355\152 */ + "bha", /* \355\153 */ + "chadda", /* \355\154 */ + "commande", /* \355\155 */ + "cri-y", /* \355\156 */ + "d'échecs", /* \355\157 */ + "ddha", /* \355\160 */ + "description", /* \355\161 */ + "dha", /* \355\162 */ + "finale", /* \355\163 */ + "hangzhou", /* \355\164 */ + "harpon", /* \355\165 */ + "jeu", /* \355\166 */ + "ko", /* \355\167 */ + "lo", /* \355\170 */ + "opérateur", /* \355\171 */ + "pé", /* \355\172 */ + "q", /* \355\173 */ + "ro", /* \355\174 */ + "son", /* \355\175 */ + "to", /* \355\176 */ + "tsa", /* \355\177 */ + "ê", /* \355\200 */ + "ña", /* \355\201 */ + "arc", /* \355\202 */ + "coeur", /* \355\203 */ + "jé", /* \355\204 */ + "kirghize", /* \355\205 */ + "ll", /* \355\206 */ + "mgo", /* \355\207 */ + "oe", /* \355\210 */ + "roc", /* \355\211 */ + "rra", /* \355\212 */ + "rtags", /* \355\213 */ + "rétroflexe", /* \355\214 */ + "sens", /* \355\215 */ + "souligné", /* \355\216 */ + "ti", /* \355\217 */ + "triple", /* \355\220 */ + "alpaprâna", /* \355\221 */ + "anousvâra", /* \355\222 */ + "bref", /* \355\223 */ + "coup", /* \355\224 */ + "fa", /* \355\225 */ + "glotte", /* \355\226 */ + "mahâprâna", /* \355\227 */ + "mi", /* \355\230 */ + "normal", /* \355\231 */ + "par", /* \355\232 */ + "pi", /* \355\233 */ + "ponctuation", /* \355\234 */ + "prime", /* \355\235 */ + "quartier", /* \355\236 */ + "souscrits", /* \355\237 */ + "tchha", /* \355\240 */ + "va", /* \355\241 */ + "virâma", /* \355\242 */ + "visarga", /* \355\243 */ + "étendu", /* \355\244 */ + "cent", /* \355\245 */ + "comme", /* \355\246 */ + "dans", /* \355\247 */ + "dent", /* \355\250 */ + "djha", /* \355\251 */ + "do", /* \355\252 */ + "empennage", /* \355\253 */ + "gué", /* \355\254 */ + "hi", /* \355\255 */ + "huitièmes", /* \355\256 */ + "intégrale", /* \355\257 */ + "ié", /* \355\260 */ + "kho", /* \355\261 */ + "large", /* \355\262 */ + "lla", /* \355\263 */ + "long", /* \355\264 */ + "longueur", /* \355\265 */ + "losange", /* \355\266 */ + "mais", /* \355\267 */ + "maï", /* \355\270 */ + "mille", /* \355\271 */ + "monétaire", /* \355\272 */ + "po", /* \355\273 */ + "shad", /* \355\274 */ + "si", /* \355\275 */ + "tchiûtch", /* \355\276 */ + "tcho", /* \355\277 */ + "tu", /* \355\300 */ + "té", /* \355\301 */ + "yig", /* \355\302 */ + "yé", /* \355\303 */ + "abkhaze", /* \355\304 */ + "ae", /* \355\305 */ + "apostrophe", /* \355\306 */ + "au", /* \355\307 */ + "chine", /* \355\310 */ + "cri-th", /* \355\311 */ + "d'exclamation", /* \355\312 */ + "d'interrogation", /* \355\313 */ + "d'un", /* \355\314 */ + "d'union", /* \355\315 */ + "dal", /* \355\316 */ + "douze", /* \355\317 */ + "début", /* \355\320 */ + "ej", /* \355\321 */ + "gaf", /* \355\322 */ + "glottal", /* \355\323 */ + "grosse", /* \355\324 */ + "hiûh", /* \355\325 */ + "index", /* \355\326 */ + "iûng", /* \355\327 */ + "k'iûk'", /* \355\330 */ + "ke", /* \355\331 */ + "ki", /* \355\332 */ + "kiyok", /* \355\333 */ + "me", /* \355\334 */ + "miûm", /* \355\335 */ + "ng", /* \355\336 */ + "niûn", /* \355\337 */ + "nou", /* \355\340 */ + "nunavik", /* \355\341 */ + "ombrée", /* \355\342 */ + "ouvert", /* \355\343 */ + "p'iûp'", /* \355\344 */ + "piûp", /* \355\345 */ + "rdel", /* \355\346 */ + "ri", /* \355\347 */ + "riûl", /* \355\350 */ + "siôs", /* \355\351 */ + "sous-groupe", /* \355\352 */ + "sud-est", /* \355\353 */ + "supérieure", /* \355\354 */ + "t'iût'", /* \355\355 */ + "tch'iûtch'", /* \355\356 */ + "tchandra", /* \355\357 */ + "tikût", /* \355\360 */ + "trigramme", /* \355\361 */ + "wi", /* \355\362 */ + "yousse", /* \355\363 */ + "yu", /* \355\364 */ + "zha", /* \355\365 */ + "zza'", /* \355\366 */ + "zé", /* \355\367 */ + "écaille", /* \355\370 */ + "ajouré", /* \355\371 */ + "alef", /* \355\372 */ + "ang", /* \355\373 */ + "angle", /* \355\374 */ + "autour", /* \355\375 */ + "barrée", /* \355\376 */ + "bo", /* \355\377 */ + "bois", /* \356\001 */ + "bouclé", /* \356\002 */ + "bu", /* \356\003 */ + "cadratin", /* \356\004 */ + "demi-cercle", /* \356\005 */ + "diga", /* \356\006 */ + "eng", /* \356\007 */ + "enne", /* \356\010 */ + "eu", /* \356\011 */ + "famille", /* \356\012 */ + "fantaisie", /* \356\013 */ + "fo", /* \356\014 */ + "gôl", /* \356\015 */ + "hé", /* \356\016 */ + "image", /* \356\017 */ + "inférieure", /* \356\020 */ + "ku", /* \356\021 */ + "madda", /* \356\022 */ + "nord-est", /* \356\023 */ + "nord-ouest", /* \356\024 */ + "nu", /* \356\025 */ + "ombre", /* \356\026 */ + "onze", /* \356\027 */ + "par-dessus", /* \356\030 */ + "partir", /* \356\031 */ + "pharyngal", /* \356\032 */ + "pho", /* \356\033 */ + "pointé", /* \356\034 */ + "re", /* \356\035 */ + "rhô", /* \356\036 */ + "ru", /* \356\037 */ + "ré", /* \356\040 */ + "schwa", /* \356\041 */ + "se", /* \356\042 */ + "seize", /* \356\043 */ + "soleil", /* \356\044 */ + "transmission", /* \356\045 */ + "tsheg", /* \356\046 */ + "tsé", /* \356\047 */ + "vingt", /* \356\050 */ + "accolade", /* \356\051 */ + "arménien", /* \356\052 */ + "carrée", /* \356\053 */ + "cho", /* \356\054 */ + "contient", /* \356\055 */ + "couvrante", /* \356\056 */ + "d'insertion", /* \356\057 */ + "delta", /* \356\060 */ + "demi-rond", /* \356\061 */ + "di", /* \356\062 */ + "djé", /* \356\063 */ + "dz", /* \356\064 */ + "dza", /* \356\065 */ + "eau", /* \356\066 */ + "farsi", /* \356\067 */ + "gamma", /* \356\070 */ + "go", /* \356\071 */ + "he", /* \356\072 */ + "inversée", /* \356\073 */ + "iotacisme", /* \356\074 */ + "katakana-hiragana", /* \356\075 */ + "lenticulaire", /* \356\076 */ + "li", /* \356\077 */ + "logique", /* \356\100 */ + "lune", /* \356\101 */ + "mèn", /* \356\102 */ + "numérateur", /* \356\103 */ + "point-virgule", /* \356\104 */ + "positif", /* \356\105 */ + "produit", /* \356\106 */ + "puce", /* \356\107 */ + "quadrant", /* \356\110 */ + "rectangle", /* \356\111 */ + "répétition", /* \356\112 */ + "simplifié", /* \356\113 */ + "singhalais", /* \356\114 */ + "soung", /* \356\115 */ + "sous-ensemble", /* \356\116 */ + "suit", /* \356\117 */ + "sur-ensemble", /* \356\120 */ + "sé", /* \356\121 */ + "tam", /* \356\122 */ + "tchandrabindou", /* \356\123 */ + "tchim'", /* \356\124 */ + "te", /* \356\125 */ + "terre", /* \356\126 */ + "thi", /* \356\127 */ + "thé", /* \356\130 */ + "triangulaire", /* \356\131 */ + "vo", /* \356\132 */ + "vrakhy", /* \356\133 */ + "zay", /* \356\134 */ + "zo", /* \356\135 */ + "è", /* \356\136 */ + "ajourée", /* \356\137 */ + "approximativement", /* \356\140 */ + "arrêt", /* \356\141 */ + "be", /* \356\142 */ + "bea'", /* \356\143 */ + "beha'", /* \356\144 */ + "bourre", /* \356\145 */ + "bulletin", /* \356\146 */ + "bé", /* \356\147 */ + "can", /* \356\150 */ + "che", /* \356\151 */ + "clic", /* \356\152 */ + "couché", /* \356\153 */ + "culbutée", /* \356\154 */ + "d'appareil", /* \356\155 */ + "d'itération", /* \356\156 */ + "damma", /* \356\157 */ + "dix-huit", /* \356\160 */ + "dix-neuf", /* \356\161 */ + "dix-sept", /* \356\162 */ + "doatchachmi", /* \356\163 */ + "dya'", /* \356\164 */ + "dzé", /* \356\165 */ + "dé", /* \356\166 */ + "ech", /* \356\167 */ + "encadré", /* \356\170 */ + "englobant", /* \356\171 */ + "esclave", /* \356\172 */ + "esse", /* \356\173 */ + "est", /* \356\174 */ + "fatha", /* \356\175 */ + "fathatan", /* \356\176 */ + "feu", /* \356\177 */ + "fi", /* \356\200 */ + "fixe", /* \356\201 */ + "fé", /* \356\202 */ + "ge", /* \356\203 */ + "gi", /* \356\204 */ + "gothique", /* \356\205 */ + "gter", /* \356\206 */ + "hachuré", /* \356\207 */ + "huitième", /* \356\210 */ + "hâ", /* \356\211 */ + "infirme", /* \356\212 */ + "jusqu'à", /* \356\213 */ + "kana", /* \356\214 */ + "kasra", /* \356\215 */ + "keha'", /* \356\216 */ + "kombouva", /* \356\217 */ + "ké", /* \356\220 */ + "longue", /* \356\221 */ + "lé", /* \356\222 */ + "manger", /* \356\223 */ + "mou", /* \356\224 */ + "ngo", /* \356\225 */ + "ngoa'", /* \356\226 */ + "noukta", /* \356\227 */ + "nya'", /* \356\230 */ + "né", /* \356\231 */ + "ondulé", /* \356\232 */ + "original", /* \356\233 */ + "oua", /* \356\234 */ + "oué", /* \356\235 */ + "ouïgour", /* \356\236 */ + "pa'", /* \356\237 */ + "peha'", /* \356\240 */ + "phi", /* \356\241 */ + "pied", /* \356\242 */ + "plume", /* \356\243 */ + "précède", /* \356\244 */ + "qa", /* \356\245 */ + "quatorze", /* \356\246 */ + "queue", /* \356\247 */ + "quinze", /* \356\250 */ + "repère", /* \356\251 */ + "ssa", /* \356\252 */ + "su", /* \356\253 */ + "sélecteur", /* \356\254 */ + "tcheha'", /* \356\255 */ + "teha'", /* \356\256 */ + "th", /* \356\257 */ + "treize", /* \356\260 */ + "tta'", /* \356\261 */ + "tteha'", /* \356\262 */ + "tô", /* \356\263 */ + "va'", /* \356\264 */ + "visage", /* \356\265 */ + "voisé", /* \356\266 */ + "vote", /* \356\267 */ + "we", /* \356\270 */ + "wé", /* \356\271 */ + "yod", /* \356\272 */ + "yô", /* \356\273 */ + "ze", /* \356\274 */ + "zi", /* \356\275 */ + "élevé", /* \356\276 */ + "am", /* \356\277 */ + "anglais", /* \356\300 */ + "angulaire", /* \356\301 */ + "barbe", /* \356\302 */ + "barri", /* \356\303 */ + "bi", /* \356\304 */ + "bêta", /* \356\305 */ + "cantilation", /* \356\306 */ + "centre", /* \356\307 */ + "chi", /* \356\310 */ + "ché", /* \356\311 */ + "ciseaux", /* \356\312 */ + "code", /* \356\313 */ + "courte", /* \356\314 */ + "couvrant", /* \356\315 */ + "cube", /* \356\316 */ + "dalèt", /* \356\317 */ + "dché", /* \356\320 */ + "dhal", /* \356\321 */ + "dispositif", /* \356\322 */ + "dkar", /* \356\323 */ + "dur", /* \356\324 */ + "elle", /* \356\325 */ + "emme", /* \356\326 */ + "erre", /* \356\327 */ + "flèches", /* \356\330 */ + "gua'", /* \356\331 */ + "guillemet-apostrophe", /* \356\332 */ + "guillemet-virgule", /* \356\333 */ + "herbe", /* \356\334 */ + "horizontale", /* \356\335 */ + "hu", /* \356\336 */ + "ijitsa", /* \356\337 */ + "j-simplifié", /* \356\340 */ + "khi", /* \356\341 */ + "khé", /* \356\342 */ + "km", /* \356\343 */ + "koppa", /* \356\344 */ + "l'avant", /* \356\345 */ + "lambda", /* \356\346 */ + "lamèd", /* \356\347 */ + "larmé", /* \356\350 */ + "latin", /* \356\351 */ + "lou", /* \356\352 */ + "main", /* \356\353 */ + "marbouta", /* \356\354 */ + "multiplication", /* \356\355 */ + "mé", /* \356\356 */ + "mém", /* \356\357 */ + "nag", /* \356\360 */ + "neige", /* \356\361 */ + "noeud", /* \356\362 */ + "nor", /* \356\363 */ + "négation", /* \356\364 */ + "ohm", /* \356\365 */ + "om", /* \356\366 */ + "ondulée", /* \356\367 */ + "oui", /* \356\370 */ + "ouo", /* \356\371 */ + "page", /* \356\372 */ + "paire", /* \356\373 */ + "patah", /* \356\374 */ + "pe", /* \356\375 */ + "penché", /* \356\376 */ + "perluète", /* \356\377 */ + "pique", /* \357\001 */ + "piûp-siôs", /* \357\002 */ + "pointes", /* \357\003 */ + "pointeur", /* \357\004 */ + "pointillé", /* \357\005 */ + "pointillée", /* \357\006 */ + "pointillés", /* \357\007 */ + "potence", /* \357\010 */ + "presque", /* \357\011 */ + "privé", /* \357\012 */ + "prolongé", /* \357\013 */ + "promenade", /* \357\014 */ + "psi", /* \357\015 */ + "quadruple", /* \357\016 */ + "quart", /* \357\017 */ + "rad", /* \357\020 */ + "rafe", /* \357\021 */ + "remplacement", /* \357\022 */ + "riûl-hiûh", /* \357\023 */ + "rnoûn", /* \357\024 */ + "réception", /* \357\025 */ + "sañaka", /* \357\026 */ + "semi-direct", /* \357\027 */ + "sigma", /* \357\030 */ + "sixième", /* \357\031 */ + "socle", /* \357\032 */ + "sortie", /* \357\033 */ + "sou", /* \357\034 */ + "soudé", /* \357\035 */ + "soukoun", /* \357\036 */ + "sous", /* \357\037 */ + "ssangkiyok", /* \357\040 */ + "ssangsiôs", /* \357\041 */ + "sud", /* \357\042 */ + "sud-ouest", /* \357\043 */ + "syriaques", /* \357\044 */ + "tabulation", /* \357\045 */ + "texte", /* \357\046 */ + "tortue", /* \357\047 */ + "téléphone", /* \357\050 */ + "unique", /* \357\051 */ + "variation", /* \357\052 */ + "ve", /* \357\053 */ + "vé", /* \357\054 */ + "xi", /* \357\055 */ + "yidich", /* \357\056 */ + "yètch", /* \357\057 */ + "yérou", /* \357\060 */ + "zone", /* \357\061 */ + "ère", /* \357\062 */ + "ño", /* \357\063 */ + "an", /* \357\064 */ + "arrobe", /* \357\065 */ + "astrologique", /* \357\066 */ + "avagraha", /* \357\067 */ + "bayanna", /* \357\070 */ + "boucle", /* \357\071 */ + "bèt", /* \357\072 */ + "ca", /* \357\073 */ + "centime", /* \357\074 */ + "ch", /* \357\075 */ + "chaîne", /* \357\076 */ + "chin", /* \357\077 */ + "ciel", /* \357\100 */ + "cinquante", /* \357\101 */ + "cinquième", /* \357\102 */ + "cinquièmes", /* \357\103 */ + "cm", /* \357\104 */ + "constante", /* \357\105 */ + "corne", /* \357\106 */ + "couteau", /* \357\107 */ + "crayon", /* \357\110 */ + "cri-n", /* \357\111 */ + "croisillon", /* \357\112 */ + "cuir", /* \357\113 */ + "d'abréviation", /* \357\114 */ + "d'accentuation", /* \357\115 */ + "d'amorce", /* \357\116 */ + "d'en", /* \357\117 */ + "d'une", /* \357\120 */ + "dahal", /* \357\121 */ + "dammatan", /* \357\122 */ + "dantadja", /* \357\123 */ + "dayanna", /* \357\124 */ + "ddahal", /* \357\125 */ + "ddal", /* \357\126 */ + "ddayanna", /* \357\127 */ + "degré", /* \357\130 */ + "demi-cadratin", /* \357\131 */ + "dessus", /* \357\132 */ + "diagonal", /* \357\133 */ + "différent", /* \357\134 */ + "division", /* \357\135 */ + "djayanna", /* \357\136 */ + "dji", /* \357\137 */ + "djou", /* \357\140 */ + "dollar", /* \357\141 */ + "dragon", /* \357\142 */ + "droite-à-gauche", /* \357\143 */ + "dul", /* \357\144 */ + "encochée", /* \357\145 */ + "fermé", /* \357\146 */ + "flocon", /* \357\147 */ + "floral", /* \357\150 */ + "fou", /* \357\151 */ + "gauche-à-droite", /* \357\152 */ + "gayanna", /* \357\153 */ + "gayanoukitta", /* \357\154 */ + "gou", /* \357\155 */ + "groin", /* \357\156 */ + "gsum", /* \357\157 */ + "gu", /* \357\160 */ + "haa", /* \357\161 */ + "hampe", /* \357\162 */ + "hampé", /* \357\163 */ + "harmonie", /* \357\164 */ + "hataf", /* \357\165 */ + "haut-bas", /* \357\166 */ + "hioun", /* \357\167 */ + "hè", /* \357\170 */ + "héracléen", /* \357\171 */ + "hî", /* \357\172 */ + "hô", /* \357\173 */ + "il", /* \357\174 */ + "in", /* \357\175 */ + "indicateur", /* \357\176 */ + "ini", /* \357\177 */ + "inscrit", /* \357\200 */ + "insécable", /* \357\201 */ + "interligne", /* \357\202 */ + "interlinéaire", /* \357\203 */ + "intersection", /* \357\204 */ + "introducteur", /* \357\205 */ + "ja", /* \357\206 */ + "ja'", /* \357\207 */ + "jambage", /* \357\210 */ + "jo", /* \357\211 */ + "kappa", /* \357\212 */ + "kapyo-ounmiûm", /* \357\213 */ + "kapyo-ounp'iûp'", /* \357\214 */ + "kapyo-ounpiûp", /* \357\215 */ + "kasratan", /* \357\216 */ + "khan", /* \357\217 */ + "khaï", /* \357\220 */ + "kiyok-siôs", /* \357\221 */ + "kouâ", /* \357\222 */ + "kssa", /* \357\223 */ + "kétti", /* \357\224 */ + "larmée", /* \357\225 */ + "lha", /* \357\226 */ + "libre", /* \357\227 */ + "llla", /* \357\230 */ + "man", /* \357\231 */ + "mapiq", /* \357\232 */ + "milliers", /* \357\233 */ + "mince", /* \357\234 */ + "miûm-piûp", /* \357\235 */ + "mm", /* \357\236 */ + "mouche", /* \357\237 */ + "mouâ", /* \357\240 */ + "moûrdhadja", /* \357\241 */ + "multiensemble", /* \357\242 */ + "multiplié", /* \357\243 */ + "méga", /* \357\244 */ + "niûn-hiûh", /* \357\245 */ + "niûn-tchiûtch", /* \357\246 */ + "niûn-tikût", /* \357\247 */ + "note", /* \357\250 */ + "noun", /* \357\251 */ + "nouâ", /* \357\252 */ + "obèle", /* \357\253 */ + "oiseau", /* \357\254 */ + "ombré", /* \357\255 */ + "on", /* \357\256 */ + "os", /* \357\257 */ + "ouest", /* \357\260 */ + "ouk", /* \357\261 */ + "ouâ", /* \357\262 */ + "ouô", /* \357\263 */ + "palatal", /* \357\264 */ + "pansiôs", /* \357\265 */ + "paragraphes", /* \357\266 */ + "parallèle", /* \357\267 */ + "percée", /* \357\270 */ + "pethâhhâ", /* \357\271 */ + "pinceau", /* \357\272 */ + "pontet", /* \357\273 */ + "porte", /* \357\274 */ + "postale", /* \357\275 */ + "pouâ", /* \357\276 */ + "pu", /* \357\277 */ + "qamats", /* \357\300 */ + "qi", /* \357\301 */ + "qo", /* \357\302 */ + "quarts", /* \357\303 */ + "racine", /* \357\304 */ + "rha", /* \357\305 */ + "rites", /* \357\306 */ + "riûl-kiyok", /* \357\307 */ + "riûl-miûm", /* \357\310 */ + "riûl-p'iûp'", /* \357\311 */ + "riûl-piûp", /* \357\312 */ + "riûl-siôs", /* \357\313 */ + "riûl-t'iût'", /* \357\314 */ + "rou", /* \357\315 */ + "roupie", /* \357\316 */ + "rra'", /* \357\317 */ + "râ", /* \357\320 */ + "rèch", /* \357\321 */ + "réfléchie", /* \357\322 */ + "second", /* \357\323 */ + "semi-voisé", /* \357\324 */ + "sha", /* \357\325 */ + "siôs-kiyok", /* \357\326 */ + "siôs-piûp", /* \357\327 */ + "siôs-tikût", /* \357\330 */ + "société", /* \357\331 */ + "soie", /* \357\332 */ + "soua", /* \357\333 */ + "souâ", /* \357\334 */ + "ssangiûng", /* \357\335 */ + "ssangpiûp", /* \357\336 */ + "ssangtchiûtch", /* \357\337 */ + "ssangtikût", /* \357\340 */ + "strictement", /* \357\341 */ + "sublinéaire", /* \357\342 */ + "substitution", /* \357\343 */ + "supralinéaire", /* \357\344 */ + "suspension", /* \357\345 */ + "tabulateur", /* \357\346 */ + "tav", /* \357\347 */ + "tche", /* \357\350 */ + "tchi", /* \357\351 */ + "tchouâ", /* \357\352 */ + "tertre", /* \357\353 */ + "than", /* \357\354 */ + "thâ", /* \357\355 */ + "thêta", /* \357\356 */ + "thî", /* \357\357 */ + "tiers", /* \357\360 */ + "titlo", /* \357\361 */ + "tourniquet", /* \357\362 */ + "touâ", /* \357\363 */ + "travail", /* \357\364 */ + "trente", /* \357\365 */ + "tsadé", /* \357\366 */ + "tsi", /* \357\367 */ + "tso", /* \357\370 */ + "tsou", /* \357\371 */ + "tâloudja", /* \357\372 */ + "tête", /* \357\373 */ + "union", /* \357\374 */ + "vent", /* \357\375 */ + "verticalement", /* \357\376 */ + "verticaux", /* \357\377 */ + "vi", /* \360\001 */ + "vin", /* \360\002 */ + "voisée", /* \360\003 */ + "vu", /* \360\004 */ + "vèv", /* \360\005 */ + "wasla", /* \360\006 */ + "wynn", /* \360\007 */ + "wè", /* \360\010 */ + "yang", /* \360\011 */ + "yesiûng", /* \360\012 */ + "yorinhiûh", /* \360\013 */ + "youâ", /* \360\014 */ + "yya", /* \360\015 */ + "yè", /* \360\016 */ + "zaï", /* \360\017 */ + "zaïn", /* \360\020 */ + "zeqâphâ", /* \360\021 */ + "zu", /* \360\022 */ + "Æ", /* \360\023 */ + "Æla-pilla", /* \360\024 */ + "échappement", /* \360\025 */ + "écran", /* \360\026 */ + "élément", /* \360\027 */ + "ñi", /* \360\030 */ + "ñis", /* \360\031 */ + "ñé", /* \360\032 */ + "û", /* \360\033 */ + "ûi", /* \360\034 */ + "'a", /* \360\035 */ + "'essâsâ", /* \360\036 */ + "'khyÌl", /* \360\037 */ + "'um", /* \360\040 */ + "<=", /* \360\041 */ + "accusé", /* \360\042 */ + "activateur", /* \360\043 */ + "agrafé", /* \360\044 */ + "alaïhe", /* \360\045 */ + "alliance", /* \360\046 */ + "alternative", /* \360\047 */ + "annulation", /* \360\050 */ + "appartient", /* \360\051 */ + "arrière", /* \360\052 */ + "arèa", /* \360\053 */ + "ascendant", /* \360\054 */ + "astérisque-hélice", /* \360\055 */ + "asymptotiquement", /* \360\056 */ + "athabascan", /* \360\057 */ + "aucun", /* \360\060 */ + "avoir", /* \360\061 */ + "aïn", /* \360\062 */ + "aïp", /* \360\063 */ + "bachkir", /* \360\064 */ + "bambou", /* \360\065 */ + "ban", /* \360\066 */ + "bateau", /* \360\067 */ + "bbut", /* \360\070 */ + "bcad", /* \360\071 */ + "beaucoup", /* \360\072 */ + "bec", /* \360\073 */ + "biélorusse-ukrainien", /* \360\074 */ + "bleu", /* \360\075 */ + "blé", /* \360\076 */ + "boeuf", /* \360\077 */ + "brisée", /* \360\100 */ + "bur", /* \360\101 */ + "bzhi", /* \360\102 */ + "bzung", /* \360\103 */ + "bélier", /* \360\104 */ + "carreau", /* \360\105 */ + "cavalier", /* \360\106 */ + "ce", /* \360\107 */ + "central", /* \360\110 */ + "centré", /* \360\111 */ + "cents", /* \360\112 */ + "changement", /* \360\113 */ + "chariot", /* \360\114 */ + "cheval", /* \360\115 */ + "chien", /* \360\116 */ + "chofar", /* \360\117 */ + "chou", /* \360\120 */ + "choua", /* \360\121 */ + "choui", /* \360\122 */ + "chouo", /* \360\123 */ + "chouâ", /* \360\124 */ + "choué", /* \360\125 */ + "chouî", /* \360\126 */ + "chouô", /* \360\127 */ + "chtcha", /* \360\130 */ + "cip", /* \360\131 */ + "circuit", /* \360\132 */ + "co", /* \360\133 */ + "colon", /* \360\134 */ + "considéralement", /* \360\135 */ + "continu", /* \360\136 */ + "copyright", /* \360\137 */ + "coquillage", /* \360\140 */ + "coranique", /* \360\141 */ + "coronis", /* \360\142 */ + "courbée", /* \360\143 */ + "croches", /* \360\144 */ + "cuop", /* \360\145 */ + "cy", /* \360\146 */ + "cyp", /* \360\147 */ + "cyt", /* \360\150 */ + "d'accolade", /* \360\151 */ + "d'accusé", /* \360\152 */ + "d'annulation", /* \360\153 */ + "d'arrêt", /* \360\154 */ + "d'en-tête", /* \360\155 */ + "d'intégrale", /* \360\156 */ + "d'échange", /* \360\157 */ + "d'étoffe", /* \360\160 */ + "dame", /* \360\161 */ + "danndda", /* \360\162 */ + "dde", /* \360\163 */ + "ddi", /* \360\164 */ + "ddo", /* \360\165 */ + "ddur", /* \360\166 */ + "demande", /* \360\167 */ + "demi-anneau", /* \360\170 */ + "demi-disque", /* \360\171 */ + "demi-voyelle", /* \360\172 */ + "dents", /* \360\173 */ + "deuxième", /* \360\174 */ + "diagonaux", /* \360\175 */ + "différence", /* \360\176 */ + "digamma", /* \360\177 */ + "dioun", /* \360\200 */ + "disque", /* \360\201 */ + "divination", /* \360\202 */ + "diviseur", /* \360\203 */ + "djan", /* \360\204 */ + "djanda", /* \360\205 */ + "dje", /* \360\206 */ + "djo", /* \360\207 */ + "dla", /* \360\210 */ + "don", /* \360\211 */ + "dou", /* \360\212 */ + "doubles", /* \360\213 */ + "dzha", /* \360\214 */ + "dzil", /* \360\215 */ + "dzud", /* \360\216 */ + "dzêta", /* \360\217 */ + "dâlath", /* \360\220 */ + "décimal", /* \360\221 */ + "démon", /* \360\222 */ + "dénominateur", /* \360\223 */ + "départ", /* \360\224 */ + "ed", /* \360\225 */ + "effe", /* \360\226 */ + "ek", /* \360\227 */ + "enchâssement", /* \360\230 */ + "encoignure", /* \360\231 */ + "entreprise", /* \360\232 */ + "ett", /* \360\233 */ + "facteur", /* \360\234 */ + "falaise", /* \360\235 */ + "faï", /* \360\236 */ + "femelle", /* \360\237 */ + "feuille", /* \360\240 */ + "financier", /* \360\241 */ + "fine", /* \360\242 */ + "fita", /* \360\243 */ + "formage", /* \360\244 */ + "formatage", /* \360\245 */ + "formes", /* \360\246 */ + "forçage", /* \360\247 */ + "fourche", /* \360\250 */ + "fourchette", /* \360\251 */ + "fouâ", /* \360\252 */ + "fractionnaire", /* \360\253 */ + "félicitations", /* \360\254 */ + "féminin", /* \360\255 */ + "gadol", /* \360\256 */ + "gan", /* \360\257 */ + "garchouni", /* \360\260 */ + "gauche-droite", /* \360\261 */ + "gcig", /* \360\262 */ + "gep", /* \360\263 */ + "gerich", /* \360\264 */ + "gga", /* \360\265 */ + "gge", /* \360\266 */ + "ggi", /* \360\267 */ + "ggo", /* \360\270 */ + "ggop", /* \360\271 */ + "gguo", /* \360\272 */ + "ghad", /* \360\273 */ + "ghan", /* \360\274 */ + "ghha", /* \360\275 */ + "ghunna", /* \360\276 */ + "got", /* \360\277 */ + "gram", /* \360\300 */ + "gru", /* \360\301 */ + "gug", /* \360\302 */ + "guimel", /* \360\303 */ + "guié", /* \360\304 */ + "guén", /* \360\305 */ + "gyas", /* \360\306 */ + "gyon", /* \360\307 */ + "gÆtta-pilla", /* \360\310 */ + "gâ", /* \360\311 */ + "gâmal", /* \360\312 */ + "gé", /* \360\313 */ + "géométriquement", /* \360\314 */ + "gñis", /* \360\315 */ + "h'ar", /* \360\316 */ + "habits", /* \360\317 */ + "haË", /* \360\320 */ + "hhevâssâ", /* \360\321 */ + "hirik", /* \360\322 */ + "hmo", /* \360\323 */ + "hna", /* \360\324 */ + "holam", /* \360\325 */ + "homme", /* \360\326 */ + "homothétique", /* \360\327 */ + "hori", /* \360\330 */ + "hors", /* \360\331 */ + "hou", /* \360\332 */ + "hoË", /* \360\333 */ + "hxit", /* \360\334 */ + "hxop", /* \360\335 */ + "hxot", /* \360\336 */ + "hxuo", /* \360\337 */ + "hê", /* \360\340 */ + "ia", /* \360\341 */ + "ici", /* \360\342 */ + "identique", /* \360\343 */ + "ij", /* \360\344 */ + "imprimer", /* \360\345 */ + "inhibiteur", /* \360\346 */ + "inhérente", /* \360\347 */ + "io", /* \360\350 */ + "iou", /* \360\351 */ + "is-pilla", /* \360\352 */ + "iËn", /* \360\353 */ + "iûng-kiyok", /* \360\354 */ + "jade", /* \360\355 */ + "jan", /* \360\356 */ + "jaune", /* \360\357 */ + "ji", /* \360\360 */ + "jjut", /* \360\361 */ + "jjy", /* \360\362 */ + "k'", /* \360\363 */ + "k'an", /* \360\364 */ + "kapyo-ounssangpiûp", /* \360\365 */ + "kayanna", /* \360\366 */ + "kazakhe", /* \360\367 */ + "kg", /* \360\370 */ + "khakasse", /* \360\371 */ + "khang", /* \360\372 */ + "khar", /* \360\373 */ + "khha", /* \360\374 */ + "kim", /* \360\375 */ + "kip", /* \360\376 */ + "kit", /* \360\377 */ + "kié", /* \361\001 */ + "kk", /* \361\002 */ + "kou", /* \361\003 */ + "koua", /* \361\004 */ + "koui", /* \361\005 */ + "kouo", /* \361\006 */ + "koué", /* \361\007 */ + "kouî", /* \361\010 */ + "kouô", /* \361\011 */ + "ksi", /* \361\012 */ + "kwa", /* \361\013 */ + "kwi", /* \361\014 */ + "kwé", /* \361\015 */ + "kô", /* \361\016 */ + "l'arrière", /* \361\017 */ + "lame", /* \361\020 */ + "larmées", /* \361\021 */ + "lass", /* \361\022 */ + "layanna", /* \361\023 */ + "lhi", /* \361\024 */ + "lho", /* \361\025 */ + "liant", /* \361\026 */ + "lie", /* \361\027 */ + "ling", /* \361\030 */ + "lioun", /* \361\031 */ + "livre", /* \361\032 */ + "lié", /* \361\033 */ + "lj", /* \361\034 */ + "logotype", /* \361\035 */ + "loua", /* \361\036 */ + "loui", /* \361\037 */ + "louo", /* \361\040 */ + "louâ", /* \361\041 */ + "loué", /* \361\042 */ + "louî", /* \361\043 */ + "louô", /* \361\044 */ + "lyr", /* \361\045 */ + "lô", /* \361\046 */ + "mai", /* \361\047 */ + "marchandises", /* \361\050 */ + "mb", /* \361\051 */ + "message", /* \361\052 */ + "mesuré", /* \361\053 */ + "mig", /* \361\054 */ + "milieu", /* \361\055 */ + "miûm-pansiôs", /* \361\056 */ + "miûm-siôs", /* \361\057 */ + "molette", /* \361\060 */ + "montagne", /* \361\061 */ + "mop", /* \361\062 */ + "mort", /* \361\063 */ + "mortier", /* \361\064 */ + "mot", /* \361\065 */ + "moua", /* \361\066 */ + "moue", /* \361\067 */ + "moui", /* \361\070 */ + "mouo", /* \361\071 */ + "mouton", /* \361\072 */ + "moué", /* \361\073 */ + "mouî", /* \361\074 */ + "mouô", /* \361\075 */ + "moyenne", /* \361\076 */ + "mur", /* \361\077 */ + "mv", /* \361\100 */ + "mw", /* \361\101 */ + "mâle", /* \361\102 */ + "métal", /* \361\103 */ + "mô", /* \361\104 */ + "nar", /* \361\105 */ + "nayanna", /* \361\106 */ + "nbie", /* \361\107 */ + "ngas", /* \361\110 */ + "niûn-kiyok", /* \361\111 */ + "niûn-pansiôs", /* \361\112 */ + "niûn-siôs", /* \361\113 */ + "nj", /* \361\114 */ + "nnna", /* \361\115 */ + "nom", /* \361\116 */ + "norme", /* \361\117 */ + "noua", /* \361\120 */ + "noué", /* \361\121 */ + "nul", /* \361\122 */ + "numéral", /* \361\123 */ + "numérique", /* \361\124 */ + "numéro", /* \361\125 */ + "nyip", /* \361\126 */ + "nyop", /* \361\127 */ + "nzur", /* \361\130 */ + "nâ", /* \361\131 */ + "nâsikyaya", /* \361\132 */ + "nô", /* \361\133 */ + "obliquement", /* \361\134 */ + "oeil", /* \361\135 */ + "ondé", /* \361\136 */ + "onn", /* \361\137 */ + "op", /* \361\140 */ + "or", /* \361\141 */ + "ordinal", /* \361\142 */ + "ornée", /* \361\143 */ + "otte", /* \361\144 */ + "oubadama", /* \361\145 */ + "oun", /* \361\146 */ + "ouverte", /* \361\147 */ + "ouî", /* \361\150 */ + "p'iûp'-piûp", /* \361\151 */ + "papillon", /* \361\152 */ + "paragraphe", /* \361\153 */ + "parallélogramme", /* \361\154 */ + "parole", /* \361\155 */ + "partiel", /* \361\156 */ + "passive", /* \361\157 */ + "patte", /* \361\160 */ + "payanna", /* \361\161 */ + "penchée", /* \361\162 */ + "percussion", /* \361\163 */ + "percé", /* \361\164 */ + "phar", /* \361\165 */ + "phur", /* \361\166 */ + "pion", /* \361\167 */ + "piour", /* \361\170 */ + "pièce", /* \361\171 */ + "piûp-kiyok", /* \361\172 */ + "piûp-p'iûp'", /* \361\173 */ + "piûp-siôs-kiyok", /* \361\174 */ + "piûp-siôs-tikût", /* \361\175 */ + "piûp-t'iût'", /* \361\176 */ + "piûp-tchiûtch", /* \361\177 */ + "piûp-tikût", /* \361\200 */ + "place", /* \361\201 */ + "plafond", /* \361\202 */ + "plancher", /* \361\203 */ + "planck", /* \361\204 */ + "plein", /* \361\205 */ + "pluie", /* \361\206 */ + "pneumata", /* \361\207 */ + "poil", /* \361\210 */ + "poisson", /* \361\211 */ + "pommetée", /* \361\212 */ + "pou", /* \361\213 */ + "poua", /* \361\214 */ + "poui", /* \361\215 */ + "pouo", /* \361\216 */ + "poué", /* \361\217 */ + "pouî", /* \361\220 */ + "pouô", /* \361\221 */ + "premier", /* \361\222 */ + "projetée", /* \361\223 */ + "proportion", /* \361\224 */ + "protégée", /* \361\225 */ + "précédant", /* \361\226 */ + "puis", /* \361\227 */ + "put", /* \361\230 */ + "pyt", /* \361\231 */ + "pâ-pilla", /* \361\232 */ + "pèn", /* \361\233 */ + "pê", /* \361\234 */ + "pî", /* \361\235 */ + "pô", /* \361\236 */ + "q'ar", /* \361\237 */ + "qadma", /* \361\240 */ + "qot", /* \361\241 */ + "quadrillé", /* \361\242 */ + "quatrième", /* \361\243 */ + "quintefeuille", /* \361\244 */ + "ramées", /* \361\245 */ + "rat", /* \361\246 */ + "rayonnante", /* \361\247 */ + "rayons", /* \361\250 */ + "rdo", /* \361\251 */ + "recourbé", /* \361\252 */ + "rectiligne", /* \361\253 */ + "relation", /* \361\254 */ + "repos", /* \361\255 */ + "ressource", /* \361\256 */ + "retour", /* \361\257 */ + "revâssâ", /* \361\260 */ + "rgya", /* \361\261 */ + "rgyings", /* \361\262 */ + "riûl-kiyok-siôs", /* \361\263 */ + "riûl-niûn", /* \361\264 */ + "riûl-pansiôs", /* \361\265 */ + "riûl-piûp-siôs", /* \361\266 */ + "riûl-tikût", /* \361\267 */ + "riûl-yorinhiûh", /* \361\270 */ + "rje", /* \361\271 */ + "rnam", /* \361\272 */ + "roi", /* \361\273 */ + "roue", /* \361\274 */ + "rouâ", /* \361\275 */ + "rîch", /* \361\276 */ + "salla", /* \361\277 */ + "sampi", /* \361\300 */ + "samèkh", /* \361\301 */ + "san", /* \361\302 */ + "saturne", /* \361\303 */ + "sceau", /* \361\304 */ + "section", /* \361\305 */ + "sel", /* \361\306 */ + "semi-circulaire", /* \361\307 */ + "semi-mou", /* \361\310 */ + "semkath", /* \361\311 */ + "shat", /* \361\312 */ + "shop", /* \361\313 */ + "shur", /* \361\314 */ + "shy", /* \361\315 */ + "sindhi", /* \361\316 */ + "sine", /* \361\317 */ + "siôs-niûn", /* \361\320 */ + "siôs-riûl", /* \361\321 */ + "siôs-tchiûtch", /* \361\322 */ + "sonnerie", /* \361\323 */ + "soui", /* \361\324 */ + "soulignement", /* \361\325 */ + "souo", /* \361\326 */ + "souriant", /* \361\327 */ + "soué", /* \361\330 */ + "souî", /* \361\331 */ + "souô", /* \361\332 */ + "spécial", /* \361\333 */ + "ssanghiûh", /* \361\334 */ + "ssangniûn", /* \361\335 */ + "ssangriûl", /* \361\336 */ + "ssi", /* \361\337 */ + "stigma", /* \361\340 */ + "suivant", /* \361\341 */ + "suivante", /* \361\342 */ + "support", /* \361\343 */ + "suppression", /* \361\344 */ + "symétrique", /* \361\345 */ + "synchronisation", /* \361\346 */ + "sélectionnée", /* \361\347 */ + "sô", /* \361\350 */ + "t'ar", /* \361\351 */ + "tabouret", /* \361\352 */ + "tanné", /* \361\353 */ + "taper", /* \361\354 */ + "tatouïl", /* \361\355 */ + "tau", /* \361\356 */ + "tayanna", /* \361\357 */ + "tch", /* \361\360 */ + "tch'ar", /* \361\361 */ + "tchan", /* \361\362 */ + "tchayanna", /* \361\363 */ + "tchima", /* \361\364 */ + "tchin", /* \361\365 */ + "tchou", /* \361\366 */ + "tchoua", /* \361\367 */ + "tchoui", /* \361\370 */ + "tchouo", /* \361\371 */ + "tchoué", /* \361\372 */ + "tchouî", /* \361\373 */ + "tchouô", /* \361\374 */ + "tchô", /* \361\375 */ + "temps", /* \361\376 */ + "the", /* \361\377 */ + "thorn", /* \362\001 */ + "thou", /* \362\002 */ + "thouâ", /* \362\003 */ + "thô", /* \362\004 */ + "tigre", /* \362\005 */ + "tikût-kiyok", /* \362\006 */ + "tirant", /* \362\007 */ + "tire-bouchon", /* \362\010 */ + "tié", /* \362\011 */ + "tla", /* \362\012 */ + "tlha", /* \362\013 */ + "tlhi", /* \362\014 */ + "tlho", /* \362\015 */ + "tlhé", /* \362\016 */ + "tli", /* \362\017 */ + "tlo", /* \362\020 */ + "tlou", /* \362\021 */ + "tlé", /* \362\022 */ + "toua", /* \362\023 */ + "touche", /* \362\024 */ + "toui", /* \362\025 */ + "touo", /* \362\026 */ + "tour", /* \362\027 */ + "toué", /* \362\030 */ + "touî", /* \362\031 */ + "touô", /* \362\032 */ + "traits", /* \362\033 */ + "trompe-l'oeil", /* \362\034 */ + "tronquée", /* \362\035 */ + "trèfle", /* \362\036 */ + "très", /* \362\037 */ + "ts", /* \362\040 */ + "ts'il", /* \362\041 */ + "tse", /* \362\042 */ + "tsha", /* \362\043 */ + "tshes", /* \362\044 */ + "tsin", /* \362\045 */ + "tsô", /* \362\046 */ + "ttayanna", /* \362\047 */ + "ttho", /* \362\050 */ + "tti", /* \362\051 */ + "tto", /* \362\052 */ + "tté", /* \362\053 */ + "ttêth", /* \362\054 */ + "type", /* \362\055 */ + "tèt", /* \362\056 */ + "usage", /* \362\057 */ + "utilisé", /* \362\060 */ + "vecteur", /* \362\061 */ + "vep", /* \362\062 */ + "viande", /* \362\063 */ + "vieux", /* \362\064 */ + "vingt-deux", /* \362\065 */ + "vingt-et-un", /* \362\066 */ + "vingt-quatre", /* \362\067 */ + "vingt-trois", /* \362\070 */ + "virtuel", /* \362\071 */ + "visible", /* \362\072 */ + "viË", /* \362\073 */ + "voir", /* \362\074 */ + "voltiger", /* \362\075 */ + "vrai", /* \362\076 */ + "vur", /* \362\077 */ + "véhicule", /* \362\100 */ + "vérification", /* \362\101 */ + "wasallam", /* \362\102 */ + "won", /* \362\103 */ + "wou", /* \362\104 */ + "wËn", /* \362\105 */ + "xo", /* \362\106 */ + "yate", /* \362\107 */ + "ye", /* \362\110 */ + "yen", /* \362\111 */ + "yesiûng-pansiôs", /* \362\112 */ + "yesiûng-siôs", /* \362\113 */ + "yin", /* \362\114 */ + "yit", /* \362\115 */ + "yogh", /* \362\116 */ + "yot", /* \362\117 */ + "you-i", /* \362\120 */ + "you-yo", /* \362\121 */ + "you-yé", /* \362\122 */ + "youa", /* \362\123 */ + "youd", /* \362\124 */ + "youi", /* \362\125 */ + "youo", /* \362\126 */ + "youé", /* \362\127 */ + "youî", /* \362\130 */ + "youô", /* \362\131 */ + "yoûdh", /* \362\132 */ + "yr", /* \362\133 */ + "yâ", /* \362\134 */ + "yô-i", /* \362\135 */ + "yô-ya", /* \362\136 */ + "yô-yè", /* \362\137 */ + "zaqef", /* \362\140 */ + "zelâmâ", /* \362\141 */ + "zla", /* \362\142 */ + "zot", /* \362\143 */ + "zou", /* \362\144 */ + "zur", /* \362\145 */ + "zziet", /* \362\146 */ + "zzip", /* \362\147 */ + "zén", /* \362\150 */ + "Ä", /* \362\151 */ + "Æda-pilla", /* \362\152 */ + "Ëe", /* \362\153 */ + "âlaph", /* \362\154 */ + "éclairée", /* \362\155 */ + "étincellement", /* \362\156 */ + "étude", /* \362\157 */ + "îschar", /* \362\160 */ + "'char", /* \362\161 */ + "'khyil", /* \362\162 */ + "'khyud", /* \362\163 */ + "'phru", /* \362\164 */ + "'ê", /* \362\165 */ + "(ack)", /* \362\166 */ + "(apc)", /* \362\167 */ + "(bel)", /* \362\170 */ + "(bph)", /* \362\171 */ + "(bs)", /* \362\172 */ + "(can)", /* \362\173 */ + "(cch)", /* \362\174 */ + "(cr)", /* \362\175 */ + "(csi)", /* \362\176 */ + "(dc1)", /* \362\177 */ + "(dc2)", /* \362\200 */ + "(dc3)", /* \362\201 */ + "(dc4)", /* \362\202 */ + "(dcs)", /* \362\203 */ + "(del)", /* \362\204 */ + "(dle)", /* \362\205 */ + "(ega)", /* \362\206 */ + "(em)", /* \362\207 */ + "(enq)", /* \362\210 */ + "(eot)", /* \362\211 */ + "(esa)", /* \362\212 */ + "(esc)", /* \362\213 */ + "(etb)", /* \362\214 */ + "(etx)", /* \362\215 */ + "(ff)", /* \362\216 */ + "(fs)", /* \362\217 */ + "(gs)", /* \362\220 */ + "(hop)", /* \362\221 */ + "(ht)", /* \362\222 */ + "(htj)", /* \362\223 */ + "(hts)", /* \362\224 */ + "(ind)", /* \362\225 */ + "(lf)", /* \362\226 */ + "(mw)", /* \362\227 */ + "(nak)", /* \362\230 */ + "(nbh)", /* \362\231 */ + "(nel)", /* \362\232 */ + "(nul)", /* \362\233 */ + "(osc)", /* \362\234 */ + "(pad)", /* \362\235 */ + "(pld)", /* \362\236 */ + "(plu)", /* \362\237 */ + "(pm)", /* \362\240 */ + "(pu1)", /* \362\241 */ + "(pu2)", /* \362\242 */ + "(ri)", /* \362\243 */ + "(rs)", /* \362\244 */ + "(sci)", /* \362\245 */ + "(sga)", /* \362\246 */ + "(sgci)", /* \362\247 */ + "(si)", /* \362\250 */ + "(so)", /* \362\251 */ + "(soh)", /* \362\252 */ + "(sos)", /* \362\253 */ + "(ss2)", /* \362\254 */ + "(ss3)", /* \362\255 */ + "(ssa)", /* \362\256 */ + "(st)", /* \362\257 */ + "(sts)", /* \362\260 */ + "(stx)", /* \362\261 */ + "(sub)", /* \362\262 */ + "(syn)", /* \362\263 */ + "(us)", /* \362\264 */ + "(vt)", /* \362\265 */ + "(vts)", /* \362\266 */ + "a-ou", /* \362\267 */ + "a-ô", /* \362\270 */ + "abafili", /* \362\271 */ + "abaisseuse", /* \362\272 */ + "abat-jour", /* \362\273 */ + "abîme", /* \362\274 */ + "ac", /* \362\275 */ + "accentué", /* \362\276 */ + "acceptable", /* \362\277 */ + "accompli", /* \362\300 */ + "addak", /* \362\301 */ + "africain", /* \362\302 */ + "ah", /* \362\303 */ + "ahsda", /* \362\304 */ + "ailm", /* \362\305 */ + "akat", /* \362\306 */ + "akbar", /* \362\307 */ + "al-lakouna", /* \362\310 */ + "algiz", /* \362\311 */ + "alifou", /* \362\312 */ + "alignés", /* \362\313 */ + "allah", /* \362\314 */ + "aller", /* \362\315 */ + "aloha", /* \362\316 */ + "alors", /* \362\317 */ + "alvéolaire", /* \362\320 */ + "alésage", /* \362\321 */ + "amba", /* \362\322 */ + "ampères", /* \362\323 */ + "ancre", /* \362\324 */ + "angkhankhou", /* \362\325 */ + "angström", /* \362\326 */ + "animal", /* \362\327 */ + "ankh", /* \362\330 */ + "ann", /* \362\331 */ + "anne", /* \362\332 */ + "anneau", /* \362\333 */ + "ano", /* \362\334 */ + "anoudatta", /* \362\335 */ + "anousvâraya", /* \362\336 */ + "anpea", /* \362\337 */ + "ansuz", /* \362\340 */ + "anti-liant", /* \362\341 */ + "ao", /* \362\342 */ + "aonn", /* \362\343 */ + "aouyanna", /* \362\344 */ + "août", /* \362\345 */ + "ap", /* \362\346 */ + "appel", /* \362\347 */ + "appentis", /* \362\350 */ + "appuyée", /* \362\351 */ + "apâto", /* \362\352 */ + "ar", /* \362\353 */ + "ar-à-longue-branche", /* \362\354 */ + "arbre", /* \362\355 */ + "arlaug", /* \362\356 */ + "arme", /* \362\357 */ + "arriver", /* \362\360 */ + "arrondi", /* \362\361 */ + "arrondie", /* \362\362 */ + "arrondis", /* \362\363 */ + "article", /* \362\364 */ + "aruhua", /* \362\365 */ + "arèa-i", /* \362\366 */ + "arèa-o", /* \362\367 */ + "arèa-ou", /* \362\370 */ + "arèè", /* \362\371 */ + "as", /* \362\372 */ + "aspirée", /* \362\373 */ + "assertion", /* \362\374 */ + "astérique", /* \362\375 */ + "astérisme", /* \362\376 */ + "at", /* \362\377 */ + "atnah", /* \363\001 */ + "atteindre", /* \363\002 */ + "attente", /* \363\003 */ + "attention", /* \363\004 */ + "aux", /* \363\005 */ + "avakrahasañña", /* \363\006 */ + "avion", /* \363\007 */ + "avril", /* \363\010 */ + "ax", /* \363\011 */ + "ay", /* \363\012 */ + "ayah", /* \363\013 */ + "ayanna", /* \363\014 */ + "aïnn", /* \363\015 */ + "aïnou", /* \363\016 */ + "aïvilik", /* \363\017 */ + "aïyanna", /* \363\020 */ + "aû", /* \363\021 */ + "baht", /* \363\022 */ + "balance", /* \363\023 */ + "balouda", /* \363\024 */ + "baloudas", /* \363\025 */ + "bancaire", /* \363\026 */ + "bantotch", /* \363\027 */ + "bap", /* \363\030 */ + "bar", /* \363\031 */ + "barbiche", /* \363\032 */ + "bariyôsan", /* \363\033 */ + "barrekh", /* \363\034 */ + "barricade", /* \363\035 */ + "base", /* \363\036 */ + "bat", /* \363\037 */ + "bathamasat", /* \363\040 */ + "battant", /* \363\041 */ + "bax", /* \363\042 */ + "baïmaï", /* \363\043 */ + "bba", /* \363\044 */ + "bbap", /* \363\045 */ + "bbat", /* \363\046 */ + "bbax", /* \363\047 */ + "bbe", /* \363\050 */ + "bbep", /* \363\051 */ + "bbex", /* \363\052 */ + "bbi", /* \363\053 */ + "bbie", /* \363\054 */ + "bbiep", /* \363\055 */ + "bbiet", /* \363\056 */ + "bbiex", /* \363\057 */ + "bbip", /* \363\060 */ + "bbit", /* \363\061 */ + "bbix", /* \363\062 */ + "bbo", /* \363\063 */ + "bbop", /* \363\064 */ + "bbot", /* \363\065 */ + "bbox", /* \363\066 */ + "bbu", /* \363\067 */ + "bbuo", /* \363\070 */ + "bbuop", /* \363\071 */ + "bbuox", /* \363\072 */ + "bbup", /* \363\073 */ + "bbur", /* \363\074 */ + "bburx", /* \363\075 */ + "bbux", /* \363\076 */ + "bby", /* \363\077 */ + "bbyp", /* \363\100 */ + "bbyt", /* \363\101 */ + "bbyx", /* \363\102 */ + "bchi", /* \363\103 */ + "beigne", /* \363\104 */ + "beith", /* \363\105 */ + "belgthor", /* \363\106 */ + "ben", /* \363\107 */ + "benzène", /* \363\110 */ + "beorc", /* \363\111 */ + "bep", /* \363\112 */ + "berkanan", /* \363\113 */ + "bet", /* \363\114 */ + "bex", /* \363\115 */ + "beyyal", /* \363\116 */ + "biarkan", /* \363\117 */ + "biarkan-à-ramille", /* \363\120 */ + "biblique", /* \363\121 */ + "bidentale", /* \363\122 */ + "bie", /* \363\123 */ + "biep", /* \363\124 */ + "biet", /* \363\125 */ + "biex", /* \363\126 */ + "bilabial", /* \363\127 */ + "bilaliale", /* \363\130 */ + "bindi", /* \363\131 */ + "biologique", /* \363\132 */ + "bip", /* \363\133 */ + "birga", /* \363\134 */ + "biru", /* \363\135 */ + "bis", /* \363\136 */ + "bisectrice", /* \363\137 */ + "bit", /* \363\140 */ + "bix", /* \363\141 */ + "bka'", /* \363\142 */ + "blancs", /* \363\143 */ + "boisseau", /* \363\144 */ + "bonhomme", /* \363\145 */ + "bons", /* \363\146 */ + "bop", /* \363\147 */ + "boruto", /* \363\150 */ + "bot", /* \363\151 */ + "bou", /* \363\152 */ + "bouche", /* \363\153 */ + "bourgeon", /* \363\154 */ + "bouton", /* \363\155 */ + "box", /* \363\156 */ + "boîte", /* \363\157 */ + "bq", /* \363\160 */ + "branche", /* \363\161 */ + "brebis", /* \363\162 */ + "broderie", /* \363\163 */ + "bsdus", /* \363\164 */ + "bskur", /* \363\165 */ + "bstar", /* \363\166 */ + "buo", /* \363\167 */ + "buop", /* \363\170 */ + "buox", /* \363\171 */ + "bup", /* \363\172 */ + "bureau", /* \363\173 */ + "burx", /* \363\174 */ + "bussyeru", /* \363\175 */ + "but", /* \363\176 */ + "bux", /* \363\177 */ + "bwa", /* \363\200 */ + "by", /* \363\201 */ + "byp", /* \363\202 */ + "byr", /* \363\203 */ + "byrx", /* \363\204 */ + "byt", /* \363\205 */ + "byx", /* \363\206 */ + "bÄ", /* \363\207 */ + "bâ", /* \363\210 */ + "bâreru", /* \363\211 */ + "bécarre", /* \363\212 */ + "bémol", /* \363\213 */ + "bêth", /* \363\214 */ + "bûche", /* \363\215 */ + "c'hal", /* \363\216 */ + "cachette", /* \363\217 */ + "cada", /* \363\220 */ + "cadavre", /* \363\221 */ + "cadrat", /* \363\222 */ + "caducée", /* \363\223 */ + "caisse", /* \363\224 */ + "cal", /* \363\225 */ + "calage", /* \363\226 */ + "calc", /* \363\227 */ + "cancer", /* \363\230 */ + "cang", /* \363\231 */ + "cap", /* \363\232 */ + "capricorne", /* \363\233 */ + "care-of", /* \363\234 */ + "carotte", /* \363\235 */ + "cat", /* \363\236 */ + "caverne", /* \363\237 */ + "cax", /* \363\240 */ + "cc", /* \363\241 */ + "cd", /* \363\242 */ + "cealc", /* \363\243 */ + "ceinture", /* \363\244 */ + "ceirt", /* \363\245 */ + "celsius", /* \363\246 */ + "cen", /* \363\247 */ + "centaine", /* \363\250 */ + "cep", /* \363\251 */ + "cerf", /* \363\252 */ + "cex", /* \363\253 */ + "chad", /* \363\254 */ + "chaise", /* \363\255 */ + "chalchelet", /* \363\256 */ + "champ", /* \363\257 */ + "chanvre", /* \363\260 */ + "chap", /* \363\261 */ + "chapeau", /* \363\262 */ + "charrue", /* \363\263 */ + "chat", /* \363\264 */ + "chaudes", /* \363\265 */ + "chaudron", /* \363\266 */ + "chaviyani", /* \363\267 */ + "chax", /* \363\270 */ + "chayanna", /* \363\271 */ + "chaï", /* \363\272 */ + "chei", /* \363\273 */ + "cheminer", /* \363\274 */ + "chen", /* \363\275 */ + "chené", /* \363\276 */ + "chep", /* \363\277 */ + "chet", /* \363\300 */ + "cheva", /* \363\301 */ + "chevauchement", /* \363\302 */ + "chevelure", /* \363\303 */ + "chevron", /* \363\304 */ + "chevrons", /* \363\305 */ + "chex", /* \363\306 */ + "chifre", /* \363\307 */ + "chop", /* \363\310 */ + "chot", /* \363\311 */ + "chox", /* \363\312 */ + "chrisme", /* \363\313 */ + "chu", /* \363\314 */ + "chuo", /* \363\315 */ + "chuop", /* \363\316 */ + "chuot", /* \363\317 */ + "chuox", /* \363\320 */ + "chup", /* \363\321 */ + "chur", /* \363\322 */ + "churx", /* \363\323 */ + "chux", /* \363\324 */ + "chwa", /* \363\325 */ + "chy", /* \363\326 */ + "chyp", /* \363\327 */ + "chyr", /* \363\330 */ + "chyrx", /* \363\331 */ + "chyt", /* \363\332 */ + "chyx", /* \363\333 */ + "chÄ", /* \363\334 */ + "châ", /* \363\335 */ + "chèque", /* \363\336 */ + "chékel", /* \363\337 */ + "chî", /* \363\340 */ + "chînou", /* \363\341 */ + "chô", /* \363\342 */ + "chôwa", /* \363\343 */ + "ci", /* \363\344 */ + "ciboulette", /* \363\345 */ + "cie", /* \363\346 */ + "ciep", /* \363\347 */ + "ciet", /* \363\350 */ + "ciex", /* \363\351 */ + "circulaire", /* \363\352 */ + "cit", /* \363\353 */ + "citron", /* \363\354 */ + "civil", /* \363\355 */ + "cix", /* \363\356 */ + "cjc-f900", /* \363\357 */ + "cjc-f901", /* \363\360 */ + "cjc-f902", /* \363\361 */ + "cjc-f903", /* \363\362 */ + "cjc-f904", /* \363\363 */ + "cjc-f905", /* \363\364 */ + "cjc-f906", /* \363\365 */ + "cjc-f907", /* \363\366 */ + "cjc-f908", /* \363\367 */ + "cjc-f909", /* \363\370 */ + "cjc-f90a", /* \363\371 */ + "cjc-f90b", /* \363\372 */ + "cjc-f90c", /* \363\373 */ + "cjc-f90d", /* \363\374 */ + "cjc-f90e", /* \363\375 */ + "cjc-f90f", /* \363\376 */ + "cjc-f910", /* \363\377 */ + "cjc-f911", /* \364\001 */ + "cjc-f912", /* \364\002 */ + "cjc-f913", /* \364\003 */ + "cjc-f914", /* \364\004 */ + "cjc-f915", /* \364\005 */ + "cjc-f916", /* \364\006 */ + "cjc-f917", /* \364\007 */ + "cjc-f918", /* \364\010 */ + "cjc-f919", /* \364\011 */ + "cjc-f91a", /* \364\012 */ + "cjc-f91b", /* \364\013 */ + "cjc-f91c", /* \364\014 */ + "cjc-f91d", /* \364\015 */ + "cjc-f91e", /* \364\016 */ + "cjc-f91f", /* \364\017 */ + "cjc-f920", /* \364\020 */ + "cjc-f921", /* \364\021 */ + "cjc-f922", /* \364\022 */ + "cjc-f923", /* \364\023 */ + "cjc-f924", /* \364\024 */ + "cjc-f925", /* \364\025 */ + "cjc-f926", /* \364\026 */ + "cjc-f927", /* \364\027 */ + "cjc-f928", /* \364\030 */ + "cjc-f929", /* \364\031 */ + "cjc-f92a", /* \364\032 */ + "cjc-f92b", /* \364\033 */ + "cjc-f92c", /* \364\034 */ + "cjc-f92d", /* \364\035 */ + "cjc-f92e", /* \364\036 */ + "cjc-f92f", /* \364\037 */ + "cjc-f930", /* \364\040 */ + "cjc-f931", /* \364\041 */ + "cjc-f932", /* \364\042 */ + "cjc-f933", /* \364\043 */ + "cjc-f934", /* \364\044 */ + "cjc-f935", /* \364\045 */ + "cjc-f936", /* \364\046 */ + "cjc-f937", /* \364\047 */ + "cjc-f938", /* \364\050 */ + "cjc-f939", /* \364\051 */ + "cjc-f93a", /* \364\052 */ + "cjc-f93b", /* \364\053 */ + "cjc-f93c", /* \364\054 */ + "cjc-f93d", /* \364\055 */ + "cjc-f93e", /* \364\056 */ + "cjc-f93f", /* \364\057 */ + "cjc-f940", /* \364\060 */ + "cjc-f941", /* \364\061 */ + "cjc-f942", /* \364\062 */ + "cjc-f943", /* \364\063 */ + "cjc-f944", /* \364\064 */ + "cjc-f945", /* \364\065 */ + "cjc-f946", /* \364\066 */ + "cjc-f947", /* \364\067 */ + "cjc-f948", /* \364\070 */ + "cjc-f949", /* \364\071 */ + "cjc-f94a", /* \364\072 */ + "cjc-f94b", /* \364\073 */ + "cjc-f94c", /* \364\074 */ + "cjc-f94d", /* \364\075 */ + "cjc-f94e", /* \364\076 */ + "cjc-f94f", /* \364\077 */ + "cjc-f950", /* \364\100 */ + "cjc-f951", /* \364\101 */ + "cjc-f952", /* \364\102 */ + "cjc-f953", /* \364\103 */ + "cjc-f954", /* \364\104 */ + "cjc-f955", /* \364\105 */ + "cjc-f956", /* \364\106 */ + "cjc-f957", /* \364\107 */ + "cjc-f958", /* \364\110 */ + "cjc-f959", /* \364\111 */ + "cjc-f95a", /* \364\112 */ + "cjc-f95b", /* \364\113 */ + "cjc-f95c", /* \364\114 */ + "cjc-f95d", /* \364\115 */ + "cjc-f95e", /* \364\116 */ + "cjc-f95f", /* \364\117 */ + "cjc-f960", /* \364\120 */ + "cjc-f961", /* \364\121 */ + "cjc-f962", /* \364\122 */ + "cjc-f963", /* \364\123 */ + "cjc-f964", /* \364\124 */ + "cjc-f965", /* \364\125 */ + "cjc-f966", /* \364\126 */ + "cjc-f967", /* \364\127 */ + "cjc-f968", /* \364\130 */ + "cjc-f969", /* \364\131 */ + "cjc-f96a", /* \364\132 */ + "cjc-f96b", /* \364\133 */ + "cjc-f96c", /* \364\134 */ + "cjc-f96d", /* \364\135 */ + "cjc-f96e", /* \364\136 */ + "cjc-f96f", /* \364\137 */ + "cjc-f970", /* \364\140 */ + "cjc-f971", /* \364\141 */ + "cjc-f972", /* \364\142 */ + "cjc-f973", /* \364\143 */ + "cjc-f974", /* \364\144 */ + "cjc-f975", /* \364\145 */ + "cjc-f976", /* \364\146 */ + "cjc-f977", /* \364\147 */ + "cjc-f978", /* \364\150 */ + "cjc-f979", /* \364\151 */ + "cjc-f97a", /* \364\152 */ + "cjc-f97b", /* \364\153 */ + "cjc-f97c", /* \364\154 */ + "cjc-f97d", /* \364\155 */ + "cjc-f97e", /* \364\156 */ + "cjc-f97f", /* \364\157 */ + "cjc-f980", /* \364\160 */ + "cjc-f981", /* \364\161 */ + "cjc-f982", /* \364\162 */ + "cjc-f983", /* \364\163 */ + "cjc-f984", /* \364\164 */ + "cjc-f985", /* \364\165 */ + "cjc-f986", /* \364\166 */ + "cjc-f987", /* \364\167 */ + "cjc-f988", /* \364\170 */ + "cjc-f989", /* \364\171 */ + "cjc-f98a", /* \364\172 */ + "cjc-f98b", /* \364\173 */ + "cjc-f98c", /* \364\174 */ + "cjc-f98d", /* \364\175 */ + "cjc-f98e", /* \364\176 */ + "cjc-f98f", /* \364\177 */ + "cjc-f990", /* \364\200 */ + "cjc-f991", /* \364\201 */ + "cjc-f992", /* \364\202 */ + "cjc-f993", /* \364\203 */ + "cjc-f994", /* \364\204 */ + "cjc-f995", /* \364\205 */ + "cjc-f996", /* \364\206 */ + "cjc-f997", /* \364\207 */ + "cjc-f998", /* \364\210 */ + "cjc-f999", /* \364\211 */ + "cjc-f99a", /* \364\212 */ + "cjc-f99b", /* \364\213 */ + "cjc-f99c", /* \364\214 */ + "cjc-f99d", /* \364\215 */ + "cjc-f99e", /* \364\216 */ + "cjc-f99f", /* \364\217 */ + "cjc-f9a0", /* \364\220 */ + "cjc-f9a1", /* \364\221 */ + "cjc-f9a2", /* \364\222 */ + "cjc-f9a3", /* \364\223 */ + "cjc-f9a4", /* \364\224 */ + "cjc-f9a5", /* \364\225 */ + "cjc-f9a6", /* \364\226 */ + "cjc-f9a7", /* \364\227 */ + "cjc-f9a8", /* \364\230 */ + "cjc-f9a9", /* \364\231 */ + "cjc-f9aa", /* \364\232 */ + "cjc-f9ab", /* \364\233 */ + "cjc-f9ac", /* \364\234 */ + "cjc-f9ad", /* \364\235 */ + "cjc-f9ae", /* \364\236 */ + "cjc-f9af", /* \364\237 */ + "cjc-f9b0", /* \364\240 */ + "cjc-f9b1", /* \364\241 */ + "cjc-f9b2", /* \364\242 */ + "cjc-f9b3", /* \364\243 */ + "cjc-f9b4", /* \364\244 */ + "cjc-f9b5", /* \364\245 */ + "cjc-f9b6", /* \364\246 */ + "cjc-f9b7", /* \364\247 */ + "cjc-f9b8", /* \364\250 */ + "cjc-f9b9", /* \364\251 */ + "cjc-f9ba", /* \364\252 */ + "cjc-f9bb", /* \364\253 */ + "cjc-f9bc", /* \364\254 */ + "cjc-f9bd", /* \364\255 */ + "cjc-f9be", /* \364\256 */ + "cjc-f9bf", /* \364\257 */ + "cjc-f9c0", /* \364\260 */ + "cjc-f9c1", /* \364\261 */ + "cjc-f9c2", /* \364\262 */ + "cjc-f9c3", /* \364\263 */ + "cjc-f9c4", /* \364\264 */ + "cjc-f9c5", /* \364\265 */ + "cjc-f9c6", /* \364\266 */ + "cjc-f9c7", /* \364\267 */ + "cjc-f9c8", /* \364\270 */ + "cjc-f9c9", /* \364\271 */ + "cjc-f9ca", /* \364\272 */ + "cjc-f9cb", /* \364\273 */ + "cjc-f9cc", /* \364\274 */ + "cjc-f9cd", /* \364\275 */ + "cjc-f9ce", /* \364\276 */ + "cjc-f9cf", /* \364\277 */ + "cjc-f9d0", /* \364\300 */ + "cjc-f9d1", /* \364\301 */ + "cjc-f9d2", /* \364\302 */ + "cjc-f9d3", /* \364\303 */ + "cjc-f9d4", /* \364\304 */ + "cjc-f9d5", /* \364\305 */ + "cjc-f9d6", /* \364\306 */ + "cjc-f9d7", /* \364\307 */ + "cjc-f9d8", /* \364\310 */ + "cjc-f9d9", /* \364\311 */ + "cjc-f9da", /* \364\312 */ + "cjc-f9db", /* \364\313 */ + "cjc-f9dc", /* \364\314 */ + "cjc-f9dd", /* \364\315 */ + "cjc-f9de", /* \364\316 */ + "cjc-f9df", /* \364\317 */ + "cjc-f9e0", /* \364\320 */ + "cjc-f9e1", /* \364\321 */ + "cjc-f9e2", /* \364\322 */ + "cjc-f9e3", /* \364\323 */ + "cjc-f9e4", /* \364\324 */ + "cjc-f9e5", /* \364\325 */ + "cjc-f9e6", /* \364\326 */ + "cjc-f9e7", /* \364\327 */ + "cjc-f9e8", /* \364\330 */ + "cjc-f9e9", /* \364\331 */ + "cjc-f9ea", /* \364\332 */ + "cjc-f9eb", /* \364\333 */ + "cjc-f9ec", /* \364\334 */ + "cjc-f9ed", /* \364\335 */ + "cjc-f9ee", /* \364\336 */ + "cjc-f9ef", /* \364\337 */ + "cjc-f9f0", /* \364\340 */ + "cjc-f9f1", /* \364\341 */ + "cjc-f9f2", /* \364\342 */ + "cjc-f9f3", /* \364\343 */ + "cjc-f9f4", /* \364\344 */ + "cjc-f9f5", /* \364\345 */ + "cjc-f9f6", /* \364\346 */ + "cjc-f9f7", /* \364\347 */ + "cjc-f9f8", /* \364\350 */ + "cjc-f9f9", /* \364\351 */ + "cjc-f9fa", /* \364\352 */ + "cjc-f9fb", /* \364\353 */ + "cjc-f9fc", /* \364\354 */ + "cjc-f9fd", /* \364\355 */ + "cjc-f9fe", /* \364\356 */ + "cjc-f9ff", /* \364\357 */ + "cjc-fa00", /* \364\360 */ + "cjc-fa01", /* \364\361 */ + "cjc-fa02", /* \364\362 */ + "cjc-fa03", /* \364\363 */ + "cjc-fa04", /* \364\364 */ + "cjc-fa05", /* \364\365 */ + "cjc-fa06", /* \364\366 */ + "cjc-fa07", /* \364\367 */ + "cjc-fa08", /* \364\370 */ + "cjc-fa09", /* \364\371 */ + "cjc-fa0a", /* \364\372 */ + "cjc-fa0b", /* \364\373 */ + "cjc-fa0c", /* \364\374 */ + "cjc-fa0d", /* \364\375 */ + "cjc-fa0e", /* \364\376 */ + "cjc-fa0f", /* \364\377 */ + "cjc-fa10", /* \365\001 */ + "cjc-fa11", /* \365\002 */ + "cjc-fa12", /* \365\003 */ + "cjc-fa13", /* \365\004 */ + "cjc-fa14", /* \365\005 */ + "cjc-fa15", /* \365\006 */ + "cjc-fa16", /* \365\007 */ + "cjc-fa17", /* \365\010 */ + "cjc-fa18", /* \365\011 */ + "cjc-fa19", /* \365\012 */ + "cjc-fa1a", /* \365\013 */ + "cjc-fa1b", /* \365\014 */ + "cjc-fa1c", /* \365\015 */ + "cjc-fa1d", /* \365\016 */ + "cjc-fa1e", /* \365\017 */ + "cjc-fa1f", /* \365\020 */ + "cjc-fa20", /* \365\021 */ + "cjc-fa21", /* \365\022 */ + "cjc-fa22", /* \365\023 */ + "cjc-fa23", /* \365\024 */ + "cjc-fa24", /* \365\025 */ + "cjc-fa25", /* \365\026 */ + "cjc-fa26", /* \365\027 */ + "cjc-fa27", /* \365\030 */ + "cjc-fa28", /* \365\031 */ + "cjc-fa29", /* \365\032 */ + "cjc-fa2a", /* \365\033 */ + "cjc-fa2b", /* \365\034 */ + "cjc-fa2c", /* \365\035 */ + "cjc-fa2d", /* \365\036 */ + "clan", /* \365\037 */ + "clavier", /* \365\040 */ + "cochon", /* \365\041 */ + "coché", /* \365\042 */ + "coffre", /* \365\043 */ + "coins", /* \365\044 */ + "coll", /* \365\045 */ + "commerce", /* \365\046 */ + "comparer", /* \365\047 */ + "complément", /* \365\050 */ + "composition", /* \365\051 */ + "compte", /* \365\052 */ + "compte-client", /* \365\053 */ + "comète", /* \365\054 */ + "concave", /* \365\055 */ + "conique", /* \365\056 */ + "conjonction", /* \365\057 */ + "conjuguée", /* \365\060 */ + "conservateur", /* \365\061 */ + "conséquent", /* \365\062 */ + "contenant", /* \365\063 */ + "contraction", /* \365\064 */ + "contre-cotice", /* \365\065 */ + "cop", /* \365\066 */ + "copie", /* \365\067 */ + "coproduit", /* \365\070 */ + "coq", /* \365\071 */ + "corbeau", /* \365\072 */ + "corps", /* \365\073 */ + "correct", /* \365\074 */ + "correspond", /* \365\075 */ + "coréenne", /* \365\076 */ + "cot", /* \365\077 */ + "cotice", /* \365\100 */ + "couleur", /* \365\101 */ + "coupe", /* \365\102 */ + "coupure", /* \365\103 */ + "courant", /* \365\104 */ + "courbé", /* \365\105 */ + "courir", /* \365\106 */ + "couronne", /* \365\107 */ + "course", /* \365\110 */ + "court", /* \365\111 */ + "courts", /* \365\112 */ + "couvrir", /* \365\113 */ + "cox", /* \365\114 */ + "cri-r", /* \365\115 */ + "croc", /* \365\116 */ + "croche", /* \365\117 */ + "croissant", /* \365\120 */ + "croisée", /* \365\121 */ + "cruzeiro", /* \365\122 */ + "cu", /* \365\123 */ + "cubique", /* \365\124 */ + "cueillir", /* \365\125 */ + "cuillère", /* \365\126 */ + "cuo", /* \365\127 */ + "cuox", /* \365\130 */ + "cup", /* \365\131 */ + "cur", /* \365\132 */ + "cursif", /* \365\133 */ + "curx", /* \365\134 */ + "cut", /* \365\135 */ + "cux", /* \365\136 */ + "cweorth", /* \365\137 */ + "cylindricité", /* \365\140 */ + "cyr", /* \365\141 */ + "cyrx", /* \365\142 */ + "cyx", /* \365\143 */ + "céréales", /* \365\144 */ + "d'article", /* \365\145 */ + "d'emplacement", /* \365\146 */ + "d'enregistrements", /* \365\147 */ + "d'ensemble", /* \365\150 */ + "d'entrée", /* \365\151 */ + "d'euler", /* \365\152 */ + "d'exclamation-interrogation",/* \365\153 */ + "d'exploitation", /* \365\154 */ + "d'information", /* \365\155 */ + "d'insistance", /* \365\156 */ + "d'interrogation-exclamation",/* \365\157 */ + "d'intérêt", /* \365\160 */ + "d'inversion", /* \365\161 */ + "d'objet", /* \365\162 */ + "d'unités", /* \365\163 */ + "d'échappement", /* \365\164 */ + "d'écrire", /* \365\165 */ + "dagalga", /* \365\166 */ + "dagaz", /* \365\167 */ + "daguech", /* \365\170 */ + "dair", /* \365\171 */ + "damarou", /* \365\172 */ + "danger", /* \365\173 */ + "dap", /* \365\174 */ + "darga", /* \365\175 */ + "dasia", /* \365\176 */ + "dat", /* \365\177 */ + "david", /* \365\200 */ + "daviyani", /* \365\201 */ + "dax", /* \365\202 */ + "db", /* \365\203 */ + "ddap", /* \365\204 */ + "ddat", /* \365\205 */ + "ddax", /* \365\206 */ + "dddha", /* \365\207 */ + "ddep", /* \365\210 */ + "ddex", /* \365\211 */ + "ddie", /* \365\212 */ + "ddiep", /* \365\213 */ + "ddiex", /* \365\214 */ + "ddip", /* \365\215 */ + "ddit", /* \365\216 */ + "ddix", /* \365\217 */ + "ddop", /* \365\220 */ + "ddot", /* \365\221 */ + "ddou", /* \365\222 */ + "ddox", /* \365\223 */ + "ddu", /* \365\224 */ + "dduo", /* \365\225 */ + "dduop", /* \365\226 */ + "dduox", /* \365\227 */ + "ddup", /* \365\230 */ + "ddurx", /* \365\231 */ + "ddut", /* \365\232 */ + "ddux", /* \365\233 */ + "ddwa", /* \365\234 */ + "ddÄ", /* \365\235 */ + "ddé", /* \365\236 */ + "debout", /* \365\237 */ + "dehi", /* \365\240 */ + "dej", /* \365\241 */ + "dek", /* \365\242 */ + "deka", /* \365\243 */ + "del", /* \365\244 */ + "demi-arbre", /* \365\245 */ + "demi-cadrat", /* \365\246 */ + "demi-espace", /* \365\247 */ + "dental", /* \365\250 */ + "dep", /* \365\251 */ + "dernier", /* \365\252 */ + "descendant", /* \365\253 */ + "descendu", /* \365\254 */ + "desi", /* \365\255 */ + "dessous", /* \365\256 */ + "dex", /* \365\257 */ + "dharma", /* \365\260 */ + "dhâlou", /* \365\261 */ + "diagonale", /* \365\262 */ + "diamètre", /* \365\263 */ + "die", /* \365\264 */ + "diep", /* \365\265 */ + "diex", /* \365\266 */ + "dingot", /* \365\267 */ + "dip", /* \365\270 */ + "dire", /* \365\271 */ + "directionnel", /* \365\272 */ + "discontinu", /* \365\273 */ + "dit", /* \365\274 */ + "divisé", /* \365\275 */ + "dièse", /* \365\276 */ + "dj", /* \365\277 */ + "djalladjalalouhou", /* \365\300 */ + "djaviyani", /* \365\301 */ + "djia", /* \365\302 */ + "djja", /* \365\303 */ + "djje", /* \365\304 */ + "djji", /* \365\305 */ + "djjo", /* \365\306 */ + "djjou", /* \365\307 */ + "djjé", /* \365\310 */ + "djwa", /* \365\311 */ + "djÄ", /* \365\312 */ + "dl", /* \365\313 */ + "dle", /* \365\314 */ + "dli", /* \365\315 */ + "dlo", /* \365\316 */ + "dlou", /* \365\317 */ + "dlé", /* \365\320 */ + "domino", /* \365\321 */ + "dong", /* \365\322 */ + "dop", /* \365\323 */ + "doru", /* \365\324 */ + "dot", /* \365\325 */ + "doute", /* \365\326 */ + "dox", /* \365\327 */ + "drachme", /* \365\330 */ + "dril", /* \365\331 */ + "duo", /* \365\332 */ + "duox", /* \365\333 */ + "dup", /* \365\334 */ + "durx", /* \365\335 */ + "dut", /* \365\336 */ + "dux", /* \365\337 */ + "dwa", /* \365\340 */ + "dze", /* \365\341 */ + "dzi", /* \365\342 */ + "dzo", /* \365\343 */ + "dzou", /* \365\344 */ + "dÄ", /* \365\345 */ + "dÆg", /* \365\346 */ + "dËn", /* \365\347 */ + "dâdhou", /* \365\350 */ + "dâsu", /* \365\351 */ + "décembre", /* \365\352 */ + "défaire", /* \365\353 */ + "défiler", /* \365\354 */ + "définition", /* \365\355 */ + "délimiteur", /* \365\356 */ + "démontrer", /* \365\357 */ + "dépilement", /* \365\360 */ + "déposée", /* \365\361 */ + "dérivée", /* \365\362 */ + "dérouleur", /* \365\363 */ + "eadhadh", /* \365\364 */ + "eamhancholl", /* \365\365 */ + "ear", /* \365\366 */ + "effacement", /* \365\367 */ + "effachement", /* \365\370 */ + "egal", /* \365\371 */ + "eh", /* \365\372 */ + "ehwaz", /* \365\373 */ + "el", /* \365\374 */ + "elliptique", /* \365\375 */ + "emjambée", /* \365\376 */ + "enceinte", /* \365\377 */ + "encore", /* \366\001 */ + "enfant", /* \366\002 */ + "enfer", /* \366\003 */ + "englobante", /* \366\004 */ + "enn", /* \366\005 */ + "enregistreur", /* \366\006 */ + "ensemble", /* \366\007 */ + "entièrement", /* \366\010 */ + "entrant", /* \366\011 */ + "entrelacé", /* \366\012 */ + "entrer", /* \366\013 */ + "enveloppe", /* \366\014 */ + "envelopper", /* \366\015 */ + "eoh", /* \366\016 */ + "eolhx", /* \366\017 */ + "eou", /* \366\020 */ + "estime", /* \366\021 */ + "estimé", /* \366\022 */ + "esukûdo", /* \366\023 */ + "eth", /* \366\024 */ + "ethel", /* \366\025 */ + "eul", /* \366\026 */ + "euro", /* \366\027 */ + "ex", /* \366\030 */ + "excellent", /* \366\031 */ + "exclarrogatif", /* \366\032 */ + "exclusif", /* \366\033 */ + "excès", /* \366\034 */ + "existe", /* \366\035 */ + "exécution", /* \366\036 */ + "eï", /* \366\037 */ + "fahrenheit", /* \366\040 */ + "faible", /* \366\041 */ + "fallait", /* \366\042 */ + "fan", /* \366\043 */ + "fap", /* \366\044 */ + "farah", /* \366\045 */ + "fat", /* \366\046 */ + "faucille", /* \366\047 */ + "fax", /* \366\050 */ + "fayanna", /* \366\051 */ + "fe", /* \366\052 */ + "fearn", /* \366\053 */ + "femme", /* \366\054 */ + "feng", /* \366\055 */ + "fermant", /* \366\056 */ + "fermeture", /* \366\057 */ + "festival", /* \366\060 */ + "ff", /* \366\061 */ + "ffi", /* \366\062 */ + "ffl", /* \366\063 */ + "fichier", /* \366\064 */ + "fichiers", /* \366\065 */ + "fil", /* \366\066 */ + "fip", /* \366\067 */ + "fit", /* \366\070 */ + "fix", /* \366\071 */ + "fl", /* \366\072 */ + "fléche", /* \366\073 */ + "flûte", /* \366\074 */ + "fm", /* \366\075 */ + "folioles", /* \366\076 */ + "foncée", /* \366\077 */ + "fongman", /* \366\100 */ + "fop", /* \366\101 */ + "force", /* \366\102 */ + "fort", /* \366\103 */ + "fosse", /* \366\104 */ + "fox", /* \366\105 */ + "fraisage", /* \366\106 */ + "franc", /* \366\107 */ + "français", /* \366\110 */ + "fu", /* \366\111 */ + "fup", /* \366\112 */ + "fur", /* \366\113 */ + "furx", /* \366\114 */ + "fuseau", /* \366\115 */ + "fut", /* \366\116 */ + "fux", /* \366\117 */ + "fwa", /* \366\120 */ + "fy", /* \366\121 */ + "fyp", /* \366\122 */ + "fyt", /* \366\123 */ + "fyx", /* \366\124 */ + "fyÄ", /* \366\125 */ + "fÄ", /* \366\126 */ + "fâ", /* \366\127 */ + "fâfou", /* \366\130 */ + "fâï", /* \366\131 */ + "féhu", /* \366\132 */ + "féoh", /* \366\133 */ + "février", /* \366\134 */ + "fî", /* \366\135 */ + "fô", /* \366\136 */ + "ganma", /* \366\137 */ + "gap", /* \366\140 */ + "gar", /* \366\141 */ + "garon", /* \366\142 */ + "gat", /* \366\143 */ + "gax", /* \366\144 */ + "gb", /* \366\145 */ + "gcan", /* \366\146 */ + "gdan", /* \366\147 */ + "gebo", /* \366\150 */ + "geofu", /* \366\151 */ + "ger", /* \366\152 */ + "gerchâïm", /* \366\153 */ + "gerech", /* \366\154 */ + "get", /* \366\155 */ + "gex", /* \366\156 */ + "ggap", /* \366\157 */ + "ggat", /* \366\160 */ + "ggax", /* \366\161 */ + "ggep", /* \366\162 */ + "gget", /* \366\163 */ + "ggex", /* \366\164 */ + "ggie", /* \366\165 */ + "ggiep", /* \366\166 */ + "ggiex", /* \366\167 */ + "ggit", /* \366\170 */ + "ggix", /* \366\171 */ + "ggot", /* \366\172 */ + "ggou", /* \366\173 */ + "ggox", /* \366\174 */ + "ggu", /* \366\175 */ + "gguop", /* \366\176 */ + "gguot", /* \366\177 */ + "gguox", /* \366\200 */ + "ggup", /* \366\201 */ + "ggur", /* \366\202 */ + "ggurx", /* \366\203 */ + "ggut", /* \366\204 */ + "ggux", /* \366\205 */ + "ggÄ", /* \366\206 */ + "ggé", /* \366\207 */ + "ghaïnou", /* \366\210 */ + "ghe", /* \366\211 */ + "ghi", /* \366\212 */ + "gho", /* \366\213 */ + "ghou", /* \366\214 */ + "ghz", /* \366\215 */ + "ghé", /* \366\216 */ + "gie", /* \366\217 */ + "giep", /* \366\220 */ + "giet", /* \366\221 */ + "giex", /* \366\222 */ + "giga", /* \366\223 */ + "gimel", /* \366\224 */ + "ginî", /* \366\225 */ + "gip", /* \366\226 */ + "girudâ", /* \366\227 */ + "git", /* \366\230 */ + "gix", /* \366\231 */ + "glace", /* \366\232 */ + "gn", /* \366\233 */ + "gnaviyani", /* \366\234 */ + "gop", /* \366\235 */ + "gort", /* \366\236 */ + "goua'", /* \366\237 */ + "gox", /* \366\240 */ + "gpa", /* \366\241 */ + "graphique", /* \366\242 */ + "grenouille", /* \366\243 */ + "grichine", /* \366\244 */ + "griffe", /* \366\245 */ + "grimaçant", /* \366\246 */ + "groupe", /* \366\247 */ + "groupes", /* \366\250 */ + "gui", /* \366\251 */ + "guillemets", /* \366\252 */ + "guo", /* \366\253 */ + "guop", /* \366\254 */ + "guot", /* \366\255 */ + "guox", /* \366\256 */ + "gup", /* \366\257 */ + "gur", /* \366\260 */ + "guramu", /* \366\261 */ + "guramuton", /* \366\262 */ + "gurx", /* \366\263 */ + "gut", /* \366\264 */ + "gux", /* \366\265 */ + "guËn", /* \366\266 */ + "gwa", /* \366\267 */ + "gwe", /* \366\270 */ + "gwi", /* \366\271 */ + "gwÄ", /* \366\272 */ + "gwé", /* \366\273 */ + "gy", /* \366\274 */ + "gÄ", /* \366\275 */ + "gâfou", /* \366\276 */ + "gémeaux", /* \366\277 */ + "génitif", /* \366\300 */ + "géométrique", /* \366\301 */ + "géorgien", /* \366\302 */ + "gêta", /* \366\303 */ + "hache", /* \366\304 */ + "hagall-à-longue-branche", /* \366\305 */ + "hagall-à-ramille", /* \366\306 */ + "haglaz", /* \366\307 */ + "haitu", /* \366\310 */ + "halanta", /* \366\311 */ + "hallebarde", /* \366\312 */ + "hameau", /* \366\313 */ + "han", /* \366\314 */ + "hap", /* \366\315 */ + "haricot", /* \366\316 */ + "hat", /* \366\317 */ + "haute", /* \366\320 */ + "hax", /* \366\321 */ + "hayanna", /* \366\322 */ + "hekutâru", /* \366\323 */ + "hep", /* \366\324 */ + "hermitienne", /* \366\325 */ + "herutu", /* \366\326 */ + "hex", /* \366\327 */ + "heïseï", /* \366\330 */ + "hha", /* \366\331 */ + "hhe", /* \366\332 */ + "hhevâssâ/'essâsâ", /* \366\333 */ + "hhi", /* \366\334 */ + "hho", /* \366\335 */ + "hhou", /* \366\336 */ + "hhwa", /* \366\337 */ + "hhÄ", /* \366\340 */ + "hhâ", /* \366\341 */ + "hhé", /* \366\342 */ + "hhêth", /* \366\343 */ + "hie", /* \366\344 */ + "hiex", /* \366\345 */ + "hip", /* \366\346 */ + "hit", /* \366\347 */ + "hizb", /* \366\350 */ + "hiûh-miûm", /* \366\351 */ + "hiûh-niûn", /* \366\352 */ + "hiûh-piûp", /* \366\353 */ + "hiûh-riûl", /* \366\354 */ + "hk", /* \366\355 */ + "hla", /* \366\356 */ + "hlap", /* \366\357 */ + "hlat", /* \366\360 */ + "hlax", /* \366\361 */ + "hle", /* \366\362 */ + "hlep", /* \366\363 */ + "hlex", /* \366\364 */ + "hli", /* \366\365 */ + "hlie", /* \366\366 */ + "hliep", /* \366\367 */ + "hliex", /* \366\370 */ + "hlip", /* \366\371 */ + "hlit", /* \366\372 */ + "hlix", /* \366\373 */ + "hlo", /* \366\374 */ + "hlop", /* \366\375 */ + "hlox", /* \366\376 */ + "hlu", /* \366\377 */ + "hluo", /* \367\001 */ + "hluop", /* \367\002 */ + "hluox", /* \367\003 */ + "hlup", /* \367\004 */ + "hlur", /* \367\005 */ + "hlurx", /* \367\006 */ + "hlut", /* \367\007 */ + "hlux", /* \367\010 */ + "hly", /* \367\011 */ + "hlyp", /* \367\012 */ + "hlyr", /* \367\013 */ + "hlyrx", /* \367\014 */ + "hlyt", /* \367\015 */ + "hlyx", /* \367\016 */ + "hma", /* \367\017 */ + "hmap", /* \367\020 */ + "hmat", /* \367\021 */ + "hmax", /* \367\022 */ + "hmi", /* \367\023 */ + "hmie", /* \367\024 */ + "hmiep", /* \367\025 */ + "hmiex", /* \367\026 */ + "hmip", /* \367\027 */ + "hmit", /* \367\030 */ + "hmix", /* \367\031 */ + "hmop", /* \367\032 */ + "hmot", /* \367\033 */ + "hmox", /* \367\034 */ + "hmu", /* \367\035 */ + "hmuo", /* \367\036 */ + "hmuop", /* \367\037 */ + "hmuox", /* \367\040 */ + "hmup", /* \367\041 */ + "hmur", /* \367\042 */ + "hmurx", /* \367\043 */ + "hmut", /* \367\044 */ + "hmux", /* \367\045 */ + "hmy", /* \367\046 */ + "hmyp", /* \367\047 */ + "hmyr", /* \367\050 */ + "hmyrx", /* \367\051 */ + "hmyx", /* \367\052 */ + "hnap", /* \367\053 */ + "hnat", /* \367\054 */ + "hnax", /* \367\055 */ + "hne", /* \367\056 */ + "hnep", /* \367\057 */ + "hnex", /* \367\060 */ + "hni", /* \367\061 */ + "hnie", /* \367\062 */ + "hniep", /* \367\063 */ + "hniet", /* \367\064 */ + "hniex", /* \367\065 */ + "hnip", /* \367\066 */ + "hnit", /* \367\067 */ + "hnix", /* \367\070 */ + "hnop", /* \367\071 */ + "hnot", /* \367\072 */ + "hnox", /* \367\073 */ + "hnuo", /* \367\074 */ + "hnuox", /* \367\075 */ + "hnut", /* \367\076 */ + "holekh", /* \367\077 */ + "hon", /* \367\100 */ + "hop", /* \367\101 */ + "horizontalement", /* \367\102 */ + "horizontaux", /* \367\103 */ + "hors-tout", /* \367\104 */ + "hot", /* \367\105 */ + "houa", /* \367\106 */ + "houe", /* \367\107 */ + "houi", /* \367\110 */ + "houo", /* \367\111 */ + "houou", /* \367\112 */ + "houé", /* \367\113 */ + "hox", /* \367\114 */ + "hp", /* \367\115 */ + "hpa", /* \367\116 */ + "hs", /* \367\117 */ + "huarado", /* \367\120 */ + "huo", /* \367\121 */ + "huop", /* \367\122 */ + "huot", /* \367\123 */ + "huox", /* \367\124 */ + "huran", /* \367\125 */ + "huîto", /* \367\126 */ + "hv", /* \367\127 */ + "hwair", /* \367\130 */ + "hxa", /* \367\131 */ + "hxap", /* \367\132 */ + "hxat", /* \367\133 */ + "hxax", /* \367\134 */ + "hxe", /* \367\135 */ + "hxep", /* \367\136 */ + "hxex", /* \367\137 */ + "hxi", /* \367\140 */ + "hxie", /* \367\141 */ + "hxiep", /* \367\142 */ + "hxiet", /* \367\143 */ + "hxiex", /* \367\144 */ + "hxip", /* \367\145 */ + "hxix", /* \367\146 */ + "hxo", /* \367\147 */ + "hxox", /* \367\150 */ + "hxuop", /* \367\151 */ + "hxuot", /* \367\152 */ + "hxuox", /* \367\153 */ + "hystérésis", /* \367\154 */ + "hz", /* \367\155 */ + "hÄ", /* \367\156 */ + "hÆgl", /* \367\157 */ + "hËn", /* \367\160 */ + "hèt", /* \367\161 */ + "hôn", /* \367\162 */ + "hôru", /* \367\163 */ + "i-a", /* \367\164 */ + "i-arèa", /* \367\165 */ + "i-ou", /* \367\166 */ + "i-ya", /* \367\167 */ + "i-ô", /* \367\170 */ + "i-û", /* \367\171 */ + "ibifili", /* \367\172 */ + "identification", /* \367\173 */ + "ie", /* \367\174 */ + "iep", /* \367\175 */ + "iet", /* \367\176 */ + "iex", /* \367\177 */ + "ifÍn", /* \367\200 */ + "ilouyanna", /* \367\201 */ + "ilouz", /* \367\202 */ + "iloûyanna", /* \367\203 */ + "im", /* \367\204 */ + "incrément", /* \367\205 */ + "industrielle", /* \367\206 */ + "infini", /* \367\207 */ + "info", /* \367\210 */ + "ing", /* \367\211 */ + "ingwaz", /* \367\212 */ + "iningu", /* \367\213 */ + "inn", /* \367\214 */ + "inne", /* \367\215 */ + "innn", /* \367\216 */ + "insecte", /* \367\217 */ + "intercale", /* \367\220 */ + "intersyllabique", /* \367\221 */ + "inti", /* \367\222 */ + "inversé", /* \367\223 */ + "iodhadh", /* \367\224 */ + "ior", /* \367\225 */ + "ip", /* \367\226 */ + "iri", /* \367\227 */ + "irouyanna", /* \367\230 */ + "iroûyanna", /* \367\231 */ + "is", /* \367\232 */ + "isa", /* \367\233 */ + "iss", /* \367\234 */ + "it", /* \367\235 */ + "iwaz", /* \367\236 */ + "ix", /* \367\237 */ + "iy", /* \367\240 */ + "iyanna", /* \367\241 */ + "iûng-k'iûk'", /* \367\242 */ + "iûng-miûm", /* \367\243 */ + "iûng-p'iûp'", /* \367\244 */ + "iûng-pansiôs", /* \367\245 */ + "iûng-piûp", /* \367\246 */ + "iûng-siôs", /* \367\247 */ + "iûng-ssangkiyok", /* \367\250 */ + "iûng-t'iût'", /* \367\251 */ + "iûng-tch'iûtch'", /* \367\252 */ + "iûng-tchiûtch", /* \367\253 */ + "iûng-tikût", /* \367\254 */ + "jambes", /* \367\255 */ + "janvier", /* \367\256 */ + "japonaise", /* \367\257 */ + "je", /* \367\260 */ + "jeran", /* \367\261 */ + "jie", /* \367\262 */ + "jiep", /* \367\263 */ + "jiet", /* \367\264 */ + "jiex", /* \367\265 */ + "jip", /* \367\266 */ + "jit", /* \367\267 */ + "jix", /* \367\270 */ + "jji", /* \367\271 */ + "jjie", /* \367\272 */ + "jjiep", /* \367\273 */ + "jjiet", /* \367\274 */ + "jjiex", /* \367\275 */ + "jjip", /* \367\276 */ + "jjit", /* \367\277 */ + "jjix", /* \367\300 */ + "jjo", /* \367\301 */ + "jjop", /* \367\302 */ + "jjot", /* \367\303 */ + "jjox", /* \367\304 */ + "jju", /* \367\305 */ + "jjuo", /* \367\306 */ + "jjuop", /* \367\307 */ + "jjuox", /* \367\310 */ + "jjup", /* \367\311 */ + "jjur", /* \367\312 */ + "jjurx", /* \367\313 */ + "jjux", /* \367\314 */ + "jjyp", /* \367\315 */ + "jjyt", /* \367\316 */ + "jjyx", /* \367\317 */ + "jop", /* \367\320 */ + "jot", /* \367\321 */ + "jou", /* \367\322 */ + "jox", /* \367\323 */ + "ju", /* \367\324 */ + "judéo-espagnol", /* \367\325 */ + "juillet", /* \367\326 */ + "juin", /* \367\327 */ + "juo", /* \367\330 */ + "juop", /* \367\331 */ + "juot", /* \367\332 */ + "juox", /* \367\333 */ + "jup", /* \367\334 */ + "jupiter", /* \367\335 */ + "jur", /* \367\336 */ + "jurx", /* \367\337 */ + "justification", /* \367\340 */ + "jut", /* \367\341 */ + "jux", /* \367\342 */ + "jwa", /* \367\343 */ + "jy", /* \367\344 */ + "jyp", /* \367\345 */ + "jyr", /* \367\346 */ + "jyrx", /* \367\347 */ + "jyt", /* \367\350 */ + "jyx", /* \367\351 */ + "jÄ", /* \367\352 */ + "jérusalem", /* \367\353 */ + "kah", /* \367\354 */ + "kai", /* \367\355 */ + "kairi", /* \367\356 */ + "kakabat", /* \367\357 */ + "kan", /* \367\360 */ + "kantadja", /* \367\361 */ + "kap", /* \367\362 */ + "kapyo-ounriûl", /* \367\363 */ + "karatto", /* \367\364 */ + "karné", /* \367\365 */ + "karorî", /* \367\366 */ + "kat", /* \367\367 */ + "kaun", /* \367\370 */ + "kauna", /* \367\371 */ + "kax", /* \367\372 */ + "kaï", /* \367\373 */ + "kb", /* \367\374 */ + "kcal", /* \367\375 */ + "kelvin", /* \367\376 */ + "kep", /* \367\377 */ + "ket", /* \370\001 */ + "kex", /* \370\002 */ + "khe", /* \370\003 */ + "khomout", /* \370\004 */ + "khon", /* \370\005 */ + "khou", /* \370\006 */ + "khouat", /* \370\007 */ + "khwaï", /* \370\010 */ + "khz", /* \370\011 */ + "khâ", /* \370\012 */ + "kie", /* \370\013 */ + "kiep", /* \370\014 */ + "kiex", /* \370\015 */ + "kih", /* \370\016 */ + "kiro", /* \370\017 */ + "kiroguramu", /* \370\020 */ + "kiromêtoru", /* \370\021 */ + "kirowatto", /* \370\022 */ + "kix", /* \370\023 */ + "kiyok-riûl", /* \370\024 */ + "kiyok-siôs-kiyok", /* \370\025 */ + "kka", /* \370\026 */ + "kke", /* \370\027 */ + "kki", /* \370\030 */ + "kko", /* \370\031 */ + "kkou", /* \370\032 */ + "kké", /* \370\033 */ + "kl", /* \370\034 */ + "koh", /* \370\035 */ + "kombou", /* \370\036 */ + "kon", /* \370\037 */ + "kop", /* \370\040 */ + "koruna", /* \370\041 */ + "kot", /* \370\042 */ + "koubouts", /* \370\043 */ + "kounddaliya", /* \370\044 */ + "kox", /* \370\045 */ + "koûh", /* \370\046 */ + "kpa", /* \370\047 */ + "kra", /* \370\050 */ + "kt", /* \370\051 */ + "kuo", /* \370\052 */ + "kuop", /* \370\053 */ + "kuox", /* \370\054 */ + "kup", /* \370\055 */ + "kur", /* \370\056 */ + "kuruzeiro", /* \370\057 */ + "kurx", /* \370\060 */ + "kurône", /* \370\061 */ + "kut", /* \370\062 */ + "kux", /* \370\063 */ + "kv", /* \370\064 */ + "kw", /* \370\065 */ + "kwe", /* \370\066 */ + "kwo", /* \370\067 */ + "kwou", /* \370\070 */ + "kwÄ", /* \370\071 */ + "kwËn", /* \370\072 */ + "kxa", /* \370\073 */ + "kxe", /* \370\074 */ + "kxi", /* \370\075 */ + "kxo", /* \370\076 */ + "kxou", /* \370\077 */ + "kxwa", /* \370\100 */ + "kxwe", /* \370\101 */ + "kxwi", /* \370\102 */ + "kxwÄ", /* \370\103 */ + "kxwé", /* \370\104 */ + "kxÄ", /* \370\105 */ + "kxé", /* \370\106 */ + "kyurî", /* \370\107 */ + "kÄ", /* \370\110 */ + "kâ", /* \370\111 */ + "kâfou", /* \370\112 */ + "kâph", /* \370\113 */ + "kâï", /* \370\114 */ + "kéh", /* \370\115 */ + "kêsu", /* \370\116 */ + "kî", /* \370\117 */ + "kômoût", /* \370\120 */ + "kôpo", /* \370\121 */ + "l'espace", /* \370\122 */ + "l'homme", /* \370\123 */ + "l-pointé", /* \370\124 */ + "lac", /* \370\125 */ + "lagu", /* \370\126 */ + "lakkhangyao", /* \370\127 */ + "lance", /* \370\130 */ + "langue", /* \370\131 */ + "laotiens", /* \370\132 */ + "lap", /* \370\133 */ + "lat", /* \370\134 */ + "latéral", /* \370\135 */ + "laukaz", /* \370\136 */ + "lax", /* \370\137 */ + "lce", /* \370\140 */ + "lci", /* \370\141 */ + "ldan", /* \370\142 */ + "ledit", /* \370\143 */ + "lej", /* \370\144 */ + "lek", /* \370\145 */ + "lep", /* \370\146 */ + "lettré", /* \370\147 */ + "lex", /* \370\150 */ + "lh", /* \370\151 */ + "lhag", /* \370\152 */ + "lhaviyani", /* \370\153 */ + "lhe", /* \370\154 */ + "lhou", /* \370\155 */ + "lhâ", /* \370\156 */ + "lhé", /* \370\157 */ + "lhî", /* \370\160 */ + "lhô", /* \370\161 */ + "liaison", /* \370\162 */ + "libéral", /* \370\163 */ + "liep", /* \370\164 */ + "liet", /* \370\165 */ + "liex", /* \370\166 */ + "lignes", /* \370\167 */ + "limite", /* \370\170 */ + "lion", /* \370\171 */ + "lip", /* \370\172 */ + "lire", /* \370\173 */ + "lit", /* \370\174 */ + "lix", /* \370\175 */ + "lm", /* \370\176 */ + "ln", /* \370\177 */ + "locatif", /* \370\200 */ + "log", /* \370\201 */ + "logicielle", /* \370\202 */ + "logr", /* \370\203 */ + "lop", /* \370\204 */ + "lorraine", /* \370\205 */ + "lot", /* \370\206 */ + "lout", /* \370\207 */ + "lox", /* \370\210 */ + "ls", /* \370\211 */ + "lu", /* \370\212 */ + "luis", /* \370\213 */ + "lunaire", /* \370\214 */ + "luo", /* \370\215 */ + "luop", /* \370\216 */ + "luot", /* \370\217 */ + "luox", /* \370\220 */ + "lup", /* \370\221 */ + "lur", /* \370\222 */ + "lurx", /* \370\223 */ + "lut", /* \370\224 */ + "lux", /* \370\225 */ + "lwa", /* \370\226 */ + "lx", /* \370\227 */ + "ly", /* \370\230 */ + "lyp", /* \370\231 */ + "lyrx", /* \370\232 */ + "lyt", /* \370\233 */ + "lyx", /* \370\234 */ + "lz", /* \370\235 */ + "lÄ", /* \370\236 */ + "lËn", /* \370\237 */ + "lÜ", /* \370\240 */ + "lÜÜ", /* \370\241 */ + "lâ", /* \370\242 */ + "lâmadh", /* \370\243 */ + "lâmou", /* \370\244 */ + "lâï", /* \370\245 */ + "légère", /* \370\246 */ + "lî", /* \370\247 */ + "madr-à-longue-branche", /* \370\250 */ + "madr-à-ramille", /* \370\251 */ + "mahha", /* \370\252 */ + "maille", /* \370\253 */ + "mains", /* \370\254 */ + "maison", /* \370\255 */ + "makku", /* \370\256 */ + "maladie", /* \370\257 */ + "malte", /* \370\260 */ + "mandchoue", /* \370\261 */ + "mannaz", /* \370\262 */ + "manque", /* \370\263 */ + "mansyon", /* \370\264 */ + "map", /* \370\265 */ + "maqaf", /* \370\266 */ + "mar", /* \370\267 */ + "marqué", /* \370\270 */ + "mars", /* \370\271 */ + "marteau", /* \370\272 */ + "masculin", /* \370\273 */ + "massorétique", /* \370\274 */ + "mat", /* \370\275 */ + "matin", /* \370\276 */ + "matrice", /* \370\277 */ + "mauvais", /* \370\300 */ + "max", /* \370\301 */ + "mayakru", /* \370\302 */ + "mayakuro", /* \370\303 */ + "mayanna", /* \370\304 */ + "maïmalaï", /* \370\305 */ + "maïmouan", /* \370\306 */ + "maïtaïkhou", /* \370\307 */ + "maïyamok", /* \370\310 */ + "mchu", /* \370\311 */ + "mdun", /* \370\312 */ + "med", /* \370\313 */ + "mehouppakh", /* \370\314 */ + "melon", /* \370\315 */ + "men", /* \370\316 */ + "mercure", /* \370\317 */ + "mesure", /* \370\320 */ + "meteg", /* \370\321 */ + "mex", /* \370\322 */ + "meïji", /* \370\323 */ + "mg", /* \370\324 */ + "mga", /* \370\325 */ + "mgap", /* \370\326 */ + "mgat", /* \370\327 */ + "mgax", /* \370\330 */ + "mge", /* \370\331 */ + "mgep", /* \370\332 */ + "mgex", /* \370\333 */ + "mgie", /* \370\334 */ + "mgiex", /* \370\335 */ + "mgop", /* \370\336 */ + "mgot", /* \370\337 */ + "mgox", /* \370\340 */ + "mgu", /* \370\341 */ + "mguo", /* \370\342 */ + "mguop", /* \370\343 */ + "mguox", /* \370\344 */ + "mgup", /* \370\345 */ + "mgur", /* \370\346 */ + "mgurx", /* \370\347 */ + "mgut", /* \370\350 */ + "mgux", /* \370\351 */ + "mh", /* \370\352 */ + "mhz", /* \370\353 */ + "micro", /* \370\354 */ + "mie", /* \370\355 */ + "miep", /* \370\356 */ + "miex", /* \370\357 */ + "mikuron", /* \370\360 */ + "mil", /* \370\361 */ + "millet", /* \370\362 */ + "millions", /* \370\363 */ + "millième", /* \370\364 */ + "ministre", /* \370\365 */ + "minnie", /* \370\366 */ + "mip", /* \370\367 */ + "miri", /* \370\370 */ + "miribâru", /* \370\371 */ + "mise", /* \370\372 */ + "mit", /* \370\373 */ + "mix", /* \370\374 */ + "miûm-hiûh", /* \370\375 */ + "miûm-kiyok", /* \370\376 */ + "miûm-riûl", /* \370\377 */ + "miûm-ssangsiôs", /* \371\001 */ + "miûm-tch'iûtch'", /* \371\002 */ + "ml", /* \371\003 */ + "moan", /* \371\004 */ + "mode", /* \371\005 */ + "modélise", /* \371\006 */ + "mohammad", /* \371\007 */ + "moineau", /* \371\010 */ + "moins-ou-plus", /* \371\011 */ + "mol", /* \371\012 */ + "mongols", /* \371\013 */ + "monostable", /* \371\014 */ + "montant", /* \371\015 */ + "monter", /* \371\016 */ + "montre", /* \371\017 */ + "moose", /* \371\020 */ + "mouette", /* \371\021 */ + "mouqdam", /* \371\022 */ + "mox", /* \371\023 */ + "moyen", /* \371\024 */ + "moûsikatoan", /* \371\025 */ + "mpa", /* \371\026 */ + "ms", /* \371\027 */ + "muin", /* \371\030 */ + "multijection", /* \371\031 */ + "multiple", /* \371\032 */ + "muo", /* \371\033 */ + "muop", /* \371\034 */ + "muot", /* \371\035 */ + "muox", /* \371\036 */ + "mup", /* \371\037 */ + "murx", /* \371\040 */ + "musique", /* \371\041 */ + "mut", /* \371\042 */ + "mux", /* \371\043 */ + "mwa", /* \371\044 */ + "my", /* \371\045 */ + "myp", /* \371\046 */ + "mystérieux", /* \371\047 */ + "myt", /* \371\050 */ + "myx", /* \371\051 */ + "myÄ", /* \371\052 */ + "mÄ", /* \371\053 */ + "mâ", /* \371\054 */ + "mârikh", /* \371\055 */ + "mâï", /* \371\056 */ + "mère", /* \371\057 */ + "médecine", /* \371\060 */ + "médiane", /* \371\061 */ + "médians", /* \371\062 */ + "mégatonne", /* \371\063 */ + "métobèle", /* \371\064 */ + "mêtoru", /* \371\065 */ + "mî", /* \371\066 */ + "mîmou", /* \371\067 */ + "n'appartient", /* \371\070 */ + "n'est", /* \371\071 */ + "n'existe", /* \371\072 */ + "n'oblige", /* \371\073 */ + "n'y", /* \371\074 */ + "n-pointé", /* \371\075 */ + "nabla", /* \371\076 */ + "nah", /* \371\077 */ + "naira", /* \371\100 */ + "nangmontho", /* \371\101 */ + "nano", /* \371\102 */ + "nap", /* \371\103 */ + "nationales", /* \371\104 */ + "naud", /* \371\105 */ + "naud-à-ramille", /* \371\106 */ + "naudiz", /* \371\107 */ + "nax", /* \371\110 */ + "naître", /* \371\111 */ + "nba", /* \371\112 */ + "nbap", /* \371\113 */ + "nbat", /* \371\114 */ + "nbax", /* \371\115 */ + "nbi", /* \371\116 */ + "nbiep", /* \371\117 */ + "nbiex", /* \371\120 */ + "nbip", /* \371\121 */ + "nbit", /* \371\122 */ + "nbix", /* \371\123 */ + "nbo", /* \371\124 */ + "nbop", /* \371\125 */ + "nbot", /* \371\126 */ + "nbox", /* \371\127 */ + "nbu", /* \371\130 */ + "nbup", /* \371\131 */ + "nbur", /* \371\132 */ + "nburx", /* \371\133 */ + "nbut", /* \371\134 */ + "nbux", /* \371\135 */ + "nby", /* \371\136 */ + "nbyp", /* \371\137 */ + "nbyr", /* \371\140 */ + "nbyrx", /* \371\141 */ + "nbyt", /* \371\142 */ + "nbyx", /* \371\143 */ + "nda", /* \371\144 */ + "ndap", /* \371\145 */ + "ndat", /* \371\146 */ + "ndax", /* \371\147 */ + "nde", /* \371\150 */ + "ndep", /* \371\151 */ + "ndex", /* \371\152 */ + "ndi", /* \371\153 */ + "ndie", /* \371\154 */ + "ndiex", /* \371\155 */ + "ndip", /* \371\156 */ + "ndit", /* \371\157 */ + "ndix", /* \371\160 */ + "ndo", /* \371\161 */ + "ndop", /* \371\162 */ + "ndot", /* \371\163 */ + "ndox", /* \371\164 */ + "ndu", /* \371\165 */ + "ndup", /* \371\166 */ + "ndur", /* \371\167 */ + "ndurx", /* \371\170 */ + "ndut", /* \371\171 */ + "ndux", /* \371\172 */ + "nen", /* \371\173 */ + "nep", /* \371\174 */ + "neptune", /* \371\175 */ + "nettoyer", /* \371\176 */ + "nex", /* \371\177 */ + "nez", /* \371\200 */ + "nf", /* \371\201 */ + "ngap", /* \371\202 */ + "ngat", /* \371\203 */ + "ngax", /* \371\204 */ + "ngaï", /* \371\205 */ + "nge", /* \371\206 */ + "ngep", /* \371\207 */ + "ngex", /* \371\210 */ + "ngg", /* \371\211 */ + "ngi", /* \371\212 */ + "ngie", /* \371\213 */ + "ngiep", /* \371\214 */ + "ngiex", /* \371\215 */ + "ngop", /* \371\216 */ + "ngot", /* \371\217 */ + "ngou", /* \371\220 */ + "ngox", /* \371\221 */ + "nguo", /* \371\222 */ + "nguot", /* \371\223 */ + "nguox", /* \371\224 */ + "ngâ", /* \371\225 */ + "ngâï", /* \371\226 */ + "ngéadal", /* \371\227 */ + "ngî", /* \371\230 */ + "ngô", /* \371\231 */ + "nh", /* \371\232 */ + "nia", /* \371\233 */ + "nie", /* \371\234 */ + "niep", /* \371\235 */ + "niex", /* \371\236 */ + "niggahita", /* \371\237 */ + "nikahit", /* \371\240 */ + "nikhahit", /* \371\241 */ + "nion", /* \371\242 */ + "nip", /* \371\243 */ + "nirougou", /* \371\244 */ + "nit", /* \371\245 */ + "nix", /* \371\246 */ + "niûn-piûp", /* \371\247 */ + "niûn-t'iût'", /* \371\250 */ + "nji", /* \371\251 */ + "njie", /* \371\252 */ + "njiep", /* \371\253 */ + "njiet", /* \371\254 */ + "njiex", /* \371\255 */ + "njip", /* \371\256 */ + "njit", /* \371\257 */ + "njix", /* \371\260 */ + "njo", /* \371\261 */ + "njop", /* \371\262 */ + "njot", /* \371\263 */ + "njox", /* \371\264 */ + "nju", /* \371\265 */ + "njuo", /* \371\266 */ + "njuox", /* \371\267 */ + "njup", /* \371\270 */ + "njur", /* \371\271 */ + "njurx", /* \371\272 */ + "njux", /* \371\273 */ + "njy", /* \371\274 */ + "njyp", /* \371\275 */ + "njyr", /* \371\276 */ + "njyrx", /* \371\277 */ + "njyt", /* \371\300 */ + "njyx", /* \371\301 */ + "nm", /* \371\302 */ + "nng", /* \371\303 */ + "nnga", /* \371\304 */ + "nngi", /* \371\305 */ + "nngo", /* \371\306 */ + "nngâ", /* \371\307 */ + "nngî", /* \371\310 */ + "nngô", /* \371\311 */ + "nno", /* \371\312 */ + "nnoûn", /* \371\313 */ + "noirs", /* \371\314 */ + "nokhouk", /* \371\315 */ + "nominales", /* \371\316 */ + "non-barre", /* \371\317 */ + "non-et", /* \371\320 */ + "non-ou", /* \371\321 */ + "non-vérification", /* \371\322 */ + "nop", /* \371\323 */ + "not", /* \371\324 */ + "notto", /* \371\325 */ + "nouveau", /* \371\326 */ + "nouvelle", /* \371\327 */ + "novembre", /* \371\330 */ + "nox", /* \371\331 */ + "noûnou", /* \371\332 */ + "nra", /* \371\333 */ + "nrap", /* \371\334 */ + "nrat", /* \371\335 */ + "nrax", /* \371\336 */ + "nre", /* \371\337 */ + "nrep", /* \371\340 */ + "nret", /* \371\341 */ + "nrex", /* \371\342 */ + "nro", /* \371\343 */ + "nrop", /* \371\344 */ + "nrox", /* \371\345 */ + "nru", /* \371\346 */ + "nrup", /* \371\347 */ + "nrur", /* \371\350 */ + "nrurx", /* \371\351 */ + "nrut", /* \371\352 */ + "nrux", /* \371\353 */ + "nry", /* \371\354 */ + "nryp", /* \371\355 */ + "nryr", /* \371\356 */ + "nryrx", /* \371\357 */ + "nryt", /* \371\360 */ + "nryx", /* \371\361 */ + "ns", /* \371\362 */ + "nuage", /* \371\363 */ + "nuit", /* \371\364 */ + "nunavut", /* \371\365 */ + "nuo", /* \371\366 */ + "nuop", /* \371\367 */ + "nuox", /* \371\370 */ + "nup", /* \371\371 */ + "nur", /* \371\372 */ + "nurx", /* \371\373 */ + "nut", /* \371\374 */ + "nux", /* \371\375 */ + "nv", /* \371\376 */ + "nw", /* \371\377 */ + "nwa", /* \372\001 */ + "nyd", /* \372\002 */ + "nyi", /* \372\003 */ + "nyie", /* \372\004 */ + "nyiep", /* \372\005 */ + "nyiet", /* \372\006 */ + "nyiex", /* \372\007 */ + "nyit", /* \372\010 */ + "nyix", /* \372\011 */ + "nyo", /* \372\012 */ + "nyot", /* \372\013 */ + "nyox", /* \372\014 */ + "nyu", /* \372\015 */ + "nyuo", /* \372\016 */ + "nyuop", /* \372\017 */ + "nyuox", /* \372\020 */ + "nyup", /* \372\021 */ + "nyut", /* \372\022 */ + "nyux", /* \372\023 */ + "nza", /* \372\024 */ + "nzap", /* \372\025 */ + "nzat", /* \372\026 */ + "nzax", /* \372\027 */ + "nze", /* \372\030 */ + "nzex", /* \372\031 */ + "nzi", /* \372\032 */ + "nzie", /* \372\033 */ + "nziep", /* \372\034 */ + "nziex", /* \372\035 */ + "nzip", /* \372\036 */ + "nzit", /* \372\037 */ + "nzix", /* \372\040 */ + "nzop", /* \372\041 */ + "nzox", /* \372\042 */ + "nzu", /* \372\043 */ + "nzuo", /* \372\044 */ + "nzuox", /* \372\045 */ + "nzup", /* \372\046 */ + "nzurx", /* \372\047 */ + "nzux", /* \372\050 */ + "nzy", /* \372\051 */ + "nzyp", /* \372\052 */ + "nzyr", /* \372\053 */ + "nzyrx", /* \372\054 */ + "nzyt", /* \372\055 */ + "nzyx", /* \372\056 */ + "nÄ", /* \372\057 */ + "nËn", /* \372\060 */ + "nâksikyaya", /* \372\061 */ + "nâï", /* \372\062 */ + "nî", /* \372\063 */ + "o-ou", /* \372\064 */ + "o-ô", /* \372\065 */ + "o-û", /* \372\066 */ + "oblige", /* \372\067 */ + "obofili", /* \372\070 */ + "occidentale", /* \372\071 */ + "octet", /* \372\072 */ + "octobre", /* \372\073 */ + "oleh", /* \372\074 */ + "once", /* \372\075 */ + "one", /* \372\076 */ + "ong", /* \372\077 */ + "onkar", /* \372\100 */ + "onne", /* \372\101 */ + "onsu", /* \372\102 */ + "opposition", /* \372\103 */ + "option", /* \372\104 */ + "orage", /* \372\105 */ + "ordonnances", /* \372\106 */ + "oreille", /* \372\107 */ + "orientale", /* \372\110 */ + "origine", /* \372\111 */ + "orthodoxe", /* \372\112 */ + "oss-à-branche-longue", /* \372\113 */ + "oss-à-ramille", /* \372\114 */ + "ot", /* \372\115 */ + "othalan", /* \372\116 */ + "ou-a", /* \372\117 */ + "ou-o-û", /* \372\120 */ + "ou-ou", /* \372\121 */ + "ou-yé", /* \372\122 */ + "ou-è", /* \372\123 */ + "ouboufili", /* \372\124 */ + "oudatta", /* \372\125 */ + "oue", /* \372\126 */ + "ounn", /* \372\127 */ + "ouou", /* \372\130 */ + "oura", /* \372\131 */ + "ouvrant", /* \372\132 */ + "ouyanna", /* \372\133 */ + "ouê", /* \372\134 */ + "ov", /* \372\135 */ + "ox", /* \372\136 */ + "oyanna", /* \372\137 */ + "oûboûfili", /* \372\140 */ + "oûyanna", /* \372\141 */ + "p'", /* \372\142 */ + "p'ar", /* \372\143 */ + "p-ouvert", /* \372\144 */ + "p-pointé", /* \372\145 */ + "padma", /* \372\146 */ + "paix", /* \372\147 */ + "palatalisation", /* \372\150 */ + "palotchka", /* \372\151 */ + "paluta", /* \372\152 */ + "pap", /* \372\153 */ + "parapluie", /* \372\154 */ + "parce", /* \372\155 */ + "parfum", /* \372\156 */ + "partie", /* \372\157 */ + "partielle", /* \372\160 */ + "paseq", /* \372\161 */ + "pasouq", /* \372\162 */ + "pastille", /* \372\163 */ + "pat", /* \372\164 */ + "patak", /* \372\165 */ + "paviyani", /* \372\166 */ + "pax", /* \372\167 */ + "pazer", /* \372\170 */ + "païyannoï", /* \372\171 */ + "pc", /* \372\172 */ + "peau", /* \372\173 */ + "peith", /* \372\174 */ + "penihi", /* \372\175 */ + "pensu", /* \372\176 */ + "pente", /* \372\177 */ + "peorth", /* \372\200 */ + "permis", /* \372\201 */ + "personnellement", /* \372\202 */ + "perspective", /* \372\203 */ + "perthro", /* \372\204 */ + "peseta", /* \372\205 */ + "peso", /* \372\206 */ + "pf", /* \372\207 */ + "ph", /* \372\210 */ + "phan", /* \372\211 */ + "phe", /* \372\212 */ + "phinthou", /* \372\213 */ + "phnèk", /* \372\214 */ + "phonogramme", /* \372\215 */ + "phou", /* \372\216 */ + "phoung", /* \372\217 */ + "phouthao", /* \372\220 */ + "phwa", /* \372\221 */ + "phÄ", /* \372\222 */ + "phé", /* \372\223 */ + "piasutoru", /* \372\224 */ + "pie", /* \372\225 */ + "piep", /* \372\226 */ + "pierre", /* \372\227 */ + "piex", /* \372\230 */ + "piko", /* \372\231 */ + "pikuru", /* \372\232 */ + "pip", /* \372\233 */ + "pit", /* \372\234 */ + "pix", /* \372\235 */ + "piûp-hiûh", /* \372\236 */ + "piûp-niûn", /* \372\237 */ + "piûp-riûl", /* \372\240 */ + "piûp-siôs-piûp", /* \372\241 */ + "piûp-siôs-tchiûtch", /* \372\242 */ + "piûp-ssangsiôs", /* \372\243 */ + "piûp-tch'iûtch'", /* \372\244 */ + "pla", /* \372\245 */ + "plus-ou-moins", /* \372\246 */ + "pluton", /* \372\247 */ + "pm", /* \372\250 */ + "pointo", /* \372\251 */ + "points-1", /* \372\252 */ + "points-12", /* \372\253 */ + "points-123", /* \372\254 */ + "points-1234", /* \372\255 */ + "points-12345", /* \372\256 */ + "points-123456", /* \372\257 */ + "points-1234567", /* \372\260 */ + "points-12345678", /* \372\261 */ + "points-1234568", /* \372\262 */ + "points-123457", /* \372\263 */ + "points-1234578", /* \372\264 */ + "points-123458", /* \372\265 */ + "points-12346", /* \372\266 */ + "points-123467", /* \372\267 */ + "points-1234678", /* \372\270 */ + "points-123468", /* \372\271 */ + "points-12347", /* \372\272 */ + "points-123478", /* \372\273 */ + "points-12348", /* \372\274 */ + "points-1235", /* \372\275 */ + "points-12356", /* \372\276 */ + "points-123567", /* \372\277 */ + "points-1235678", /* \372\300 */ + "points-123568", /* \372\301 */ + "points-12357", /* \372\302 */ + "points-123578", /* \372\303 */ + "points-12358", /* \372\304 */ + "points-1236", /* \372\305 */ + "points-12367", /* \372\306 */ + "points-123678", /* \372\307 */ + "points-12368", /* \372\310 */ + "points-1237", /* \372\311 */ + "points-12378", /* \372\312 */ + "points-1238", /* \372\313 */ + "points-124", /* \372\314 */ + "points-1245", /* \372\315 */ + "points-12456", /* \372\316 */ + "points-124567", /* \372\317 */ + "points-1245678", /* \372\320 */ + "points-124568", /* \372\321 */ + "points-12457", /* \372\322 */ + "points-124578", /* \372\323 */ + "points-12458", /* \372\324 */ + "points-1246", /* \372\325 */ + "points-12467", /* \372\326 */ + "points-124678", /* \372\327 */ + "points-12468", /* \372\330 */ + "points-1247", /* \372\331 */ + "points-12478", /* \372\332 */ + "points-1248", /* \372\333 */ + "points-125", /* \372\334 */ + "points-1256", /* \372\335 */ + "points-12567", /* \372\336 */ + "points-125678", /* \372\337 */ + "points-12568", /* \372\340 */ + "points-1257", /* \372\341 */ + "points-12578", /* \372\342 */ + "points-1258", /* \372\343 */ + "points-126", /* \372\344 */ + "points-1267", /* \372\345 */ + "points-12678", /* \372\346 */ + "points-1268", /* \372\347 */ + "points-127", /* \372\350 */ + "points-1278", /* \372\351 */ + "points-128", /* \372\352 */ + "points-13", /* \372\353 */ + "points-134", /* \372\354 */ + "points-1345", /* \372\355 */ + "points-13456", /* \372\356 */ + "points-134567", /* \372\357 */ + "points-1345678", /* \372\360 */ + "points-134568", /* \372\361 */ + "points-13457", /* \372\362 */ + "points-134578", /* \372\363 */ + "points-13458", /* \372\364 */ + "points-1346", /* \372\365 */ + "points-13467", /* \372\366 */ + "points-134678", /* \372\367 */ + "points-13468", /* \372\370 */ + "points-1347", /* \372\371 */ + "points-13478", /* \372\372 */ + "points-1348", /* \372\373 */ + "points-135", /* \372\374 */ + "points-1356", /* \372\375 */ + "points-13567", /* \372\376 */ + "points-135678", /* \372\377 */ + "points-13568", /* \373\001 */ + "points-1357", /* \373\002 */ + "points-13578", /* \373\003 */ + "points-1358", /* \373\004 */ + "points-136", /* \373\005 */ + "points-1367", /* \373\006 */ + "points-13678", /* \373\007 */ + "points-1368", /* \373\010 */ + "points-137", /* \373\011 */ + "points-1378", /* \373\012 */ + "points-138", /* \373\013 */ + "points-14", /* \373\014 */ + "points-145", /* \373\015 */ + "points-1456", /* \373\016 */ + "points-14567", /* \373\017 */ + "points-145678", /* \373\020 */ + "points-14568", /* \373\021 */ + "points-1457", /* \373\022 */ + "points-14578", /* \373\023 */ + "points-1458", /* \373\024 */ + "points-146", /* \373\025 */ + "points-1467", /* \373\026 */ + "points-14678", /* \373\027 */ + "points-1468", /* \373\030 */ + "points-147", /* \373\031 */ + "points-1478", /* \373\032 */ + "points-148", /* \373\033 */ + "points-15", /* \373\034 */ + "points-156", /* \373\035 */ + "points-1567", /* \373\036 */ + "points-15678", /* \373\037 */ + "points-1568", /* \373\040 */ + "points-157", /* \373\041 */ + "points-1578", /* \373\042 */ + "points-158", /* \373\043 */ + "points-16", /* \373\044 */ + "points-167", /* \373\045 */ + "points-1678", /* \373\046 */ + "points-168", /* \373\047 */ + "points-17", /* \373\050 */ + "points-178", /* \373\051 */ + "points-18", /* \373\052 */ + "points-2", /* \373\053 */ + "points-23", /* \373\054 */ + "points-234", /* \373\055 */ + "points-2345", /* \373\056 */ + "points-23456", /* \373\057 */ + "points-234567", /* \373\060 */ + "points-2345678", /* \373\061 */ + "points-234568", /* \373\062 */ + "points-23457", /* \373\063 */ + "points-234578", /* \373\064 */ + "points-23458", /* \373\065 */ + "points-2346", /* \373\066 */ + "points-23467", /* \373\067 */ + "points-234678", /* \373\070 */ + "points-23468", /* \373\071 */ + "points-2347", /* \373\072 */ + "points-23478", /* \373\073 */ + "points-2348", /* \373\074 */ + "points-235", /* \373\075 */ + "points-2356", /* \373\076 */ + "points-23567", /* \373\077 */ + "points-235678", /* \373\100 */ + "points-23568", /* \373\101 */ + "points-2357", /* \373\102 */ + "points-23578", /* \373\103 */ + "points-2358", /* \373\104 */ + "points-236", /* \373\105 */ + "points-2367", /* \373\106 */ + "points-23678", /* \373\107 */ + "points-2368", /* \373\110 */ + "points-237", /* \373\111 */ + "points-2378", /* \373\112 */ + "points-238", /* \373\113 */ + "points-24", /* \373\114 */ + "points-245", /* \373\115 */ + "points-2456", /* \373\116 */ + "points-24567", /* \373\117 */ + "points-245678", /* \373\120 */ + "points-24568", /* \373\121 */ + "points-2457", /* \373\122 */ + "points-24578", /* \373\123 */ + "points-2458", /* \373\124 */ + "points-246", /* \373\125 */ + "points-2467", /* \373\126 */ + "points-24678", /* \373\127 */ + "points-2468", /* \373\130 */ + "points-247", /* \373\131 */ + "points-2478", /* \373\132 */ + "points-248", /* \373\133 */ + "points-25", /* \373\134 */ + "points-256", /* \373\135 */ + "points-2567", /* \373\136 */ + "points-25678", /* \373\137 */ + "points-2568", /* \373\140 */ + "points-257", /* \373\141 */ + "points-2578", /* \373\142 */ + "points-258", /* \373\143 */ + "points-26", /* \373\144 */ + "points-267", /* \373\145 */ + "points-2678", /* \373\146 */ + "points-268", /* \373\147 */ + "points-27", /* \373\150 */ + "points-278", /* \373\151 */ + "points-28", /* \373\152 */ + "points-3", /* \373\153 */ + "points-34", /* \373\154 */ + "points-345", /* \373\155 */ + "points-3456", /* \373\156 */ + "points-34567", /* \373\157 */ + "points-345678", /* \373\160 */ + "points-34568", /* \373\161 */ + "points-3457", /* \373\162 */ + "points-34578", /* \373\163 */ + "points-3458", /* \373\164 */ + "points-346", /* \373\165 */ + "points-3467", /* \373\166 */ + "points-34678", /* \373\167 */ + "points-3468", /* \373\170 */ + "points-347", /* \373\171 */ + "points-3478", /* \373\172 */ + "points-348", /* \373\173 */ + "points-35", /* \373\174 */ + "points-356", /* \373\175 */ + "points-3567", /* \373\176 */ + "points-35678", /* \373\177 */ + "points-3568", /* \373\200 */ + "points-357", /* \373\201 */ + "points-3578", /* \373\202 */ + "points-358", /* \373\203 */ + "points-36", /* \373\204 */ + "points-367", /* \373\205 */ + "points-3678", /* \373\206 */ + "points-368", /* \373\207 */ + "points-37", /* \373\210 */ + "points-378", /* \373\211 */ + "points-38", /* \373\212 */ + "points-4", /* \373\213 */ + "points-45", /* \373\214 */ + "points-456", /* \373\215 */ + "points-4567", /* \373\216 */ + "points-45678", /* \373\217 */ + "points-4568", /* \373\220 */ + "points-457", /* \373\221 */ + "points-4578", /* \373\222 */ + "points-458", /* \373\223 */ + "points-46", /* \373\224 */ + "points-467", /* \373\225 */ + "points-4678", /* \373\226 */ + "points-468", /* \373\227 */ + "points-47", /* \373\230 */ + "points-478", /* \373\231 */ + "points-48", /* \373\232 */ + "points-5", /* \373\233 */ + "points-56", /* \373\234 */ + "points-567", /* \373\235 */ + "points-5678", /* \373\236 */ + "points-568", /* \373\237 */ + "points-57", /* \373\240 */ + "points-578", /* \373\241 */ + "points-58", /* \373\242 */ + "points-6", /* \373\243 */ + "points-67", /* \373\244 */ + "points-678", /* \373\245 */ + "points-68", /* \373\246 */ + "points-7", /* \373\247 */ + "points-78", /* \373\250 */ + "points-8", /* \373\251 */ + "poissons", /* \373\252 */ + "pommeté", /* \373\253 */ + "pondo", /* \373\254 */ + "pop", /* \373\255 */ + "postposition", /* \373\256 */ + "pot", /* \373\257 */ + "poterie", /* \373\260 */ + "pouce", /* \373\261 */ + "pox", /* \373\262 */ + "ppm", /* \373\263 */ + "pr", /* \373\264 */ + "precède", /* \373\265 */ + "profil", /* \373\266 */ + "progiciel", /* \373\267 */ + "projective", /* \373\270 */ + "proportionnel", /* \373\271 */ + "prosternation", /* \373\272 */ + "prouve", /* \373\273 */ + "précédent", /* \373\274 */ + "précédente", /* \373\275 */ + "précédée", /* \373\276 */ + "prédéfini", /* \373\277 */ + "préface", /* \373\300 */ + "ps", /* \373\301 */ + "psili", /* \373\302 */ + "puo", /* \373\303 */ + "puop", /* \373\304 */ + "puox", /* \373\305 */ + "pup", /* \373\306 */ + "pur", /* \373\307 */ + "purx", /* \373\310 */ + "pux", /* \373\311 */ + "pv", /* \373\312 */ + "pw", /* \373\313 */ + "pwa", /* \373\314 */ + "py", /* \373\315 */ + "pyp", /* \373\316 */ + "pyr", /* \373\317 */ + "pyrx", /* \373\320 */ + "pyx", /* \373\321 */ + "pÄ", /* \373\322 */ + "pâ", /* \373\323 */ + "pâsento", /* \373\324 */ + "pâtu", /* \373\325 */ + "pâï", /* \373\326 */ + "père", /* \373\327 */ + "pêzi", /* \373\330 */ + "qala", /* \373\331 */ + "qaton", /* \373\332 */ + "qaï", /* \373\333 */ + "qe", /* \373\334 */ + "qha", /* \373\335 */ + "qhe", /* \373\336 */ + "qhi", /* \373\337 */ + "qho", /* \373\340 */ + "qhou", /* \373\341 */ + "qhwa", /* \373\342 */ + "qhwe", /* \373\343 */ + "qhwi", /* \373\344 */ + "qhwÄ", /* \373\345 */ + "qhwé", /* \373\346 */ + "qhÄ", /* \373\347 */ + "qhé", /* \373\350 */ + "qie", /* \373\351 */ + "qiep", /* \373\352 */ + "qiet", /* \373\353 */ + "qiex", /* \373\354 */ + "qip", /* \373\355 */ + "qit", /* \373\356 */ + "qix", /* \373\357 */ + "qof", /* \373\360 */ + "qop", /* \373\361 */ + "qou", /* \373\362 */ + "qouchchâi", /* \373\363 */ + "qouf", /* \373\364 */ + "qox", /* \373\365 */ + "qoûph", /* \373\366 */ + "qu", /* \373\367 */ + "qu'il", /* \373\370 */ + "quarante", /* \373\371 */ + "quartefeuille", /* \373\372 */ + "quatre-points", /* \373\373 */ + "quatre-vingt-dix", /* \373\374 */ + "quatre-vingts", /* \373\375 */ + "quo", /* \373\376 */ + "quop", /* \373\377 */ + "quot", /* \374\001 */ + "quox", /* \374\002 */ + "qup", /* \374\003 */ + "qur", /* \374\004 */ + "qurx", /* \374\005 */ + "qut", /* \374\006 */ + "qux", /* \374\007 */ + "qwa", /* \374\010 */ + "qwe", /* \374\011 */ + "qwi", /* \374\012 */ + "qwÄ", /* \374\013 */ + "qwé", /* \374\014 */ + "qy", /* \374\015 */ + "qyp", /* \374\016 */ + "qyr", /* \374\017 */ + "qyrx", /* \374\020 */ + "qyt", /* \374\021 */ + "qyx", /* \374\022 */ + "qÄ", /* \374\023 */ + "qâ", /* \374\024 */ + "qâfou", /* \374\025 */ + "qâï", /* \374\026 */ + "qé", /* \374\027 */ + "qî", /* \374\030 */ + "qô", /* \374\031 */ + "radioactivivité", /* \374\032 */ + "rae", /* \374\033 */ + "raido", /* \374\034 */ + "rail", /* \374\035 */ + "rakhang", /* \374\036 */ + "rap", /* \374\037 */ + "rapport", /* \374\040 */ + "rasoul", /* \374\041 */ + "ravia", /* \374\042 */ + "rax", /* \374\043 */ + "rayanna", /* \374\044 */ + "rayonnant", /* \374\045 */ + "rayé", /* \374\046 */ + "raé", /* \374\047 */ + "rectangulaire", /* \374\050 */ + "reid", /* \374\051 */ + "religion", /* \374\052 */ + "remu", /* \374\053 */ + "rentogen", /* \374\054 */ + "rep", /* \374\055 */ + "représente", /* \374\056 */ + "rewâhhâ", /* \374\057 */ + "rex", /* \374\060 */ + "rhotacisme", /* \374\061 */ + "rhéostat", /* \374\062 */ + "rideaux", /* \374\063 */ + "riel", /* \374\064 */ + "rin", /* \374\065 */ + "rira", /* \374\066 */ + "rittoru", /* \374\067 */ + "rivière", /* \374\070 */ + "rixe", /* \374\071 */ + "riz", /* \374\072 */ + "riûl-k'iûk'", /* \374\073 */ + "riûl-kapyo-ounpiûp", /* \374\074 */ + "riûl-miûm-kiyok", /* \374\075 */ + "riûl-miûm-siôs", /* \374\076 */ + "riûl-piûp-hiûh", /* \374\077 */ + "riûl-ssangsiôs", /* \374\100 */ + "riûl-tikût-hiûh", /* \374\101 */ + "rjes", /* \374\102 */ + "robat", /* \374\103 */ + "rop", /* \374\104 */ + "rot", /* \374\105 */ + "roua", /* \374\106 */ + "roub", /* \374\107 */ + "rouge", /* \374\110 */ + "roukkâkh", /* \374\111 */ + "rousi", /* \374\112 */ + "rox", /* \374\113 */ + "rrax", /* \374\114 */ + "rre", /* \374\115 */ + "rrep", /* \374\116 */ + "rret", /* \374\117 */ + "rrex", /* \374\120 */ + "rro", /* \374\121 */ + "rrop", /* \374\122 */ + "rrot", /* \374\123 */ + "rrox", /* \374\124 */ + "rru", /* \374\125 */ + "rruo", /* \374\126 */ + "rruox", /* \374\127 */ + "rrup", /* \374\130 */ + "rrur", /* \374\131 */ + "rrurx", /* \374\132 */ + "rrut", /* \374\133 */ + "rrux", /* \374\134 */ + "rry", /* \374\135 */ + "rryp", /* \374\136 */ + "rryr", /* \374\137 */ + "rryrx", /* \374\140 */ + "rryt", /* \374\141 */ + "rryx", /* \374\142 */ + "ruban", /* \374\143 */ + "ruis", /* \374\144 */ + "ruo", /* \374\145 */ + "ruop", /* \374\146 */ + "ruox", /* \374\147 */ + "rup", /* \374\150 */ + "rupî", /* \374\151 */ + "rur", /* \374\152 */ + "rurx", /* \374\153 */ + "rut", /* \374\154 */ + "rux", /* \374\155 */ + "rwa", /* \374\156 */ + "ry", /* \374\157 */ + "ryp", /* \374\160 */ + "ryr", /* \374\161 */ + "ryrx", /* \374\162 */ + "ryt", /* \374\163 */ + "ryx", /* \374\164 */ + "ryÄ", /* \374\165 */ + "rÄ", /* \374\166 */ + "rÜ", /* \374\167 */ + "rÜÜ", /* \374\170 */ + "râï", /* \374\171 */ + "réahmouk", /* \374\172 */ + "référence", /* \374\173 */ + "région", /* \374\174 */ + "réponse", /* \374\175 */ + "résister", /* \374\176 */ + "rétrécissement", /* \374\177 */ + "réunion", /* \374\200 */ + "rî", /* \374\201 */ + "rô", /* \374\202 */ + "rûburu", /* \374\203 */ + "s'opposer", /* \374\204 */ + "s-ou", /* \374\205 */ + "sablier", /* \374\206 */ + "sacrificiel", /* \374\207 */ + "sagittaire", /* \374\210 */ + "saikuru", /* \374\211 */ + "sail", /* \374\212 */ + "sala", /* \374\213 */ + "salam", /* \374\214 */ + "sallallahou", /* \374\215 */ + "samphao", /* \374\216 */ + "sang", /* \374\217 */ + "sanglé", /* \374\220 */ + "santîmu", /* \374\221 */ + "sanyôga", /* \374\222 */ + "sap", /* \374\223 */ + "sapin", /* \374\224 */ + "sat", /* \374\225 */ + "saut", /* \374\226 */ + "sax", /* \374\227 */ + "sayanna", /* \374\230 */ + "sañña", /* \374\231 */ + "saññok", /* \374\232 */ + "sbroul", /* \374\233 */ + "sbub", /* \374\234 */ + "scorpion", /* \374\235 */ + "scrupule", /* \374\236 */ + "sdong", /* \374\237 */ + "sec", /* \374\240 */ + "seconde", /* \374\241 */ + "secret", /* \374\242 */ + "secteur", /* \374\243 */ + "segment", /* \374\244 */ + "segol", /* \374\245 */ + "segolta", /* \374\246 */ + "senti", /* \374\247 */ + "sento", /* \374\250 */ + "sep", /* \374\251 */ + "septembre", /* \374\252 */ + "serpent", /* \374\253 */ + "service", /* \374\254 */ + "serviette", /* \374\255 */ + "sex", /* \374\256 */ + "sgab", /* \374\257 */ + "sgor", /* \374\260 */ + "sgra", /* \374\261 */ + "shap", /* \374\262 */ + "shax", /* \374\263 */ + "she", /* \374\264 */ + "shep", /* \374\265 */ + "shet", /* \374\266 */ + "shex", /* \374\267 */ + "sho", /* \374\270 */ + "shog", /* \374\271 */ + "shot", /* \374\272 */ + "shox", /* \374\273 */ + "shu", /* \374\274 */ + "shuo", /* \374\275 */ + "shuop", /* \374\276 */ + "shuox", /* \374\277 */ + "shup", /* \374\300 */ + "shurx", /* \374\301 */ + "shut", /* \374\302 */ + "shux", /* \374\303 */ + "shyp", /* \374\304 */ + "shyr", /* \374\305 */ + "shyrx", /* \374\306 */ + "shyt", /* \374\307 */ + "shyx", /* \374\310 */ + "sie", /* \374\311 */ + "siep", /* \374\312 */ + "siex", /* \374\313 */ + "sigel", /* \374\314 */ + "sign", /* \374\315 */ + "sin", /* \374\316 */ + "sinusoïde", /* \374\317 */ + "sip", /* \374\320 */ + "siringu", /* \374\321 */ + "sit", /* \374\322 */ + "sixièmes", /* \374\323 */ + "sixtefeuille", /* \374\324 */ + "siôs-hiûh", /* \374\325 */ + "siôs-iûng", /* \374\326 */ + "siôs-k'iûk'", /* \374\327 */ + "siôs-miûm", /* \374\330 */ + "siôs-p'iûp'", /* \374\331 */ + "siôs-piûp-kiyok", /* \374\332 */ + "siôs-ssangsiôs", /* \374\333 */ + "siôs-t'iût'", /* \374\334 */ + "siôs-tch'iûtch'", /* \374\335 */ + "sk", /* \374\336 */ + "skou", /* \374\337 */ + "skoua", /* \374\340 */ + "sna", /* \374\341 */ + "sof", /* \374\342 */ + "soi", /* \374\343 */ + "soi-même", /* \374\344 */ + "soins", /* \374\345 */ + "soir", /* \374\346 */ + "soixante", /* \374\347 */ + "soixante-dix", /* \374\350 */ + "sol-à-longue-branche", /* \374\351 */ + "sol-à-ramille", /* \374\352 */ + "sommation", /* \374\353 */ + "sonnette", /* \374\354 */ + "sop", /* \374\355 */ + "sortant", /* \374\356 */ + "sot", /* \374\357 */ + "sources", /* \374\360 */ + "sourire", /* \374\361 */ + "sous-article", /* \374\362 */ + "sowilo", /* \374\363 */ + "sox", /* \374\364 */ + "sphérique", /* \374\365 */ + "spoua", /* \374\366 */ + "spungs", /* \374\367 */ + "sr", /* \374\370 */ + "ssangarèa", /* \374\371 */ + "ssap", /* \374\372 */ + "ssat", /* \374\373 */ + "ssax", /* \374\374 */ + "sse", /* \374\375 */ + "ssep", /* \374\376 */ + "ssex", /* \374\377 */ + "ssie", /* \375\001 */ + "ssiep", /* \375\002 */ + "ssiex", /* \375\003 */ + "ssip", /* \375\004 */ + "ssit", /* \375\005 */ + "ssix", /* \375\006 */ + "sso", /* \375\007 */ + "ssop", /* \375\010 */ + "ssot", /* \375\011 */ + "ssox", /* \375\012 */ + "ssu", /* \375\013 */ + "ssup", /* \375\014 */ + "ssut", /* \375\015 */ + "ssux", /* \375\016 */ + "ssy", /* \375\017 */ + "ssyp", /* \375\020 */ + "ssyr", /* \375\021 */ + "ssyrx", /* \375\022 */ + "ssyt", /* \375\023 */ + "ssyx", /* \375\024 */ + "ssâdhê", /* \375\025 */ + "st", /* \375\026 */ + "stan", /* \375\027 */ + "stchoua", /* \375\030 */ + "stoua", /* \375\031 */ + "straif", /* \375\032 */ + "succursale", /* \375\033 */ + "suo", /* \375\034 */ + "suop", /* \375\035 */ + "suox", /* \375\036 */ + "sup", /* \375\037 */ + "supervise", /* \375\040 */ + "superviser", /* \375\041 */ + "supression", /* \375\042 */ + "surface", /* \375\043 */ + "surx", /* \375\044 */ + "suspendus", /* \375\045 */ + "sut", /* \375\046 */ + "sux", /* \375\047 */ + "sv", /* \375\050 */ + "swa", /* \375\051 */ + "sy", /* \375\052 */ + "syllabes", /* \375\053 */ + "symétrie", /* \375\054 */ + "syp", /* \375\055 */ + "syr", /* \375\056 */ + "syrx", /* \375\057 */ + "système", /* \375\060 */ + "syt", /* \375\061 */ + "syx", /* \375\062 */ + "sÄ", /* \375\063 */ + "sËn", /* \375\064 */ + "sâ", /* \375\065 */ + "sâdhou", /* \375\066 */ + "sâï", /* \375\067 */ + "sègol", /* \375\070 */ + "séquence", /* \375\071 */ + "sérieux", /* \375\072 */ + "sî", /* \375\073 */ + "sînou", /* \375\074 */ + "sûr", /* \375\075 */ + "t'", /* \375\076 */ + "tah", /* \375\077 */ + "talchah", /* \375\100 */ + "tambour", /* \375\101 */ + "tao", /* \375\102 */ + "tap", /* \375\103 */ + "tarha", /* \375\104 */ + "tarsa", /* \375\105 */ + "tat", /* \375\106 */ + "taureau", /* \375\107 */ + "taviyani", /* \375\110 */ + "taw", /* \375\111 */ + "tax", /* \375\112 */ + "taïchô", /* \375\113 */ + "tc", /* \375\114 */ + "tch'", /* \375\115 */ + "tch'e", /* \375\116 */ + "tch'itouûmsiôs", /* \375\117 */ + "tch'itouûmssangsiôs", /* \375\120 */ + "tch'itouûmssangtchiûtch", /* \375\121 */ + "tch'itouûmtch'iûtch'", /* \375\122 */ + "tch'itouûmtchiûtch", /* \375\123 */ + "tch'iûtch'-hiûh", /* \375\124 */ + "tch'iûtch'-k'iûk'", /* \375\125 */ + "tchada", /* \375\126 */ + "tchamnotch", /* \375\127 */ + "tchang", /* \375\130 */ + "tchatawa", /* \375\131 */ + "tchattawa", /* \375\132 */ + "tchaviyani", /* \375\133 */ + "tchho", /* \375\134 */ + "tching", /* \375\135 */ + "tchiûtch-iûng", /* \375\136 */ + "tchoeng", /* \375\137 */ + "tchongtch'iûmsiôs", /* \375\140 */ + "tchongtch'iûmssangsiôs", /* \375\141 */ + "tchongtch'iûmssangtchiûtch",/* \375\142 */ + "tchongtch'iûmtch'iûtch'", /* \375\143 */ + "tchongtch'iûmtchiûtch", /* \375\144 */ + "tchoula", /* \375\145 */ + "tchoé", /* \375\146 */ + "tchwa", /* \375\147 */ + "tchya", /* \375\150 */ + "tchÄ", /* \375\151 */ + "tchâ", /* \375\152 */ + "tchâï", /* \375\153 */ + "tchî", /* \375\154 */ + "te'u", /* \375\155 */ + "tech", /* \375\156 */ + "teleia", /* \375\157 */ + "tend", /* \375\160 */ + "tep", /* \375\161 */ + "terminateur", /* \375\162 */ + "teré", /* \375\163 */ + "tevir", /* \375\164 */ + "tex", /* \375\165 */ + "thahan", /* \375\166 */ + "thanthakhat", /* \375\167 */ + "thong", /* \375\170 */ + "thorn,", /* \375\171 */ + "thoung", /* \375\172 */ + "thurisaz,", /* \375\173 */ + "thurs,", /* \375\174 */ + "thwa", /* \375\175 */ + "thz", /* \375\176 */ + "thÄ", /* \375\177 */ + "thâlu", /* \375\200 */ + "tibetain", /* \375\201 */ + "tie", /* \375\202 */ + "tiep", /* \375\203 */ + "tiex", /* \375\204 */ + "tikût-riûl", /* \375\205 */ + "tinne", /* \375\206 */ + "tip", /* \375\207 */ + "tippi", /* \375\210 */ + "tir", /* \375\211 */ + "tirer", /* \375\212 */ + "tironnienne", /* \375\213 */ + "tit", /* \375\214 */ + "tiwaz", /* \375\215 */ + "tix", /* \375\216 */ + "tja", /* \375\217 */ + "tle", /* \375\220 */ + "tlhe", /* \375\221 */ + "tlhou", /* \375\222 */ + "tlËn", /* \375\223 */ + "toandakhiat", /* \375\224 */ + "toit", /* \375\225 */ + "tonne", /* \375\226 */ + "tonnerre", /* \375\227 */ + "top", /* \375\230 */ + "tort", /* \375\231 */ + "tot", /* \375\232 */ + "totale", /* \375\233 */ + "tou", /* \375\234 */ + "touffe", /* \375\235 */ + "tougrik", /* \375\236 */ + "tous", /* \375\237 */ + "tout", /* \375\240 */ + "tox", /* \375\241 */ + "traces", /* \375\242 */ + "train", /* \375\243 */ + "trait-d'union", /* \375\244 */ + "tranche", /* \375\245 */ + "transpercés", /* \375\246 */ + "trappu", /* \375\247 */ + "trappue", /* \375\250 */ + "traversé", /* \375\251 */ + "traçage", /* \375\252 */ + "trente-et-un", /* \375\253 */ + "tri", /* \375\254 */ + "triangulaires", /* \375\255 */ + "tripode", /* \375\256 */ + "troisième", /* \375\257 */ + "tronqué", /* \375\260 */ + "tréflée", /* \375\261 */ + "trîsap", /* \375\262 */ + "ts'", /* \375\263 */ + "tshugs", /* \375\264 */ + "tsinor", /* \375\265 */ + "tswa", /* \375\266 */ + "tsÄ", /* \375\267 */ + "tsËn", /* \375\270 */ + "tsérè", /* \375\271 */ + "ttcha", /* \375\272 */ + "ttche", /* \375\273 */ + "ttchi", /* \375\274 */ + "ttcho", /* \375\275 */ + "ttchou", /* \375\276 */ + "ttchwa", /* \375\277 */ + "ttchÄ", /* \375\300 */ + "ttché", /* \375\301 */ + "tte", /* \375\302 */ + "tth", /* \375\303 */ + "tthi", /* \375\304 */ + "tthé", /* \375\305 */ + "ttou", /* \375\306 */ + "ttsa", /* \375\307 */ + "ttse", /* \375\310 */ + "ttsi", /* \375\311 */ + "ttso", /* \375\312 */ + "ttsou", /* \375\313 */ + "ttsé", /* \375\314 */ + "ttâ", /* \375\315 */ + "tuile", /* \375\316 */ + "tuo", /* \375\317 */ + "tuop", /* \375\320 */ + "tuot", /* \375\321 */ + "tuox", /* \375\322 */ + "tup", /* \375\323 */ + "tur", /* \375\324 */ + "turx", /* \375\325 */ + "tut", /* \375\326 */ + "tux", /* \375\327 */ + "tvimadur", /* \375\330 */ + "twa", /* \375\331 */ + "tya", /* \375\332 */ + "tyi", /* \375\333 */ + "tyo", /* \375\334 */ + "type-h", /* \375\335 */ + "type-l", /* \375\336 */ + "tyr", /* \375\337 */ + "tyr-à-ramille", /* \375\340 */ + "tyé", /* \375\341 */ + "tz", /* \375\342 */ + "tz'", /* \375\343 */ + "tza", /* \375\344 */ + "tze", /* \375\345 */ + "tzi", /* \375\346 */ + "tzo", /* \375\347 */ + "tzou", /* \375\350 */ + "tzÄ", /* \375\351 */ + "tzé", /* \375\352 */ + "tÄ", /* \375\353 */ + "tâ", /* \375\354 */ + "tâmé", /* \375\355 */ + "tâï", /* \375\356 */ + "téléphonique", /* \375\357 */ + "têtard", /* \375\360 */ + "tî", /* \375\361 */ + "uath", /* \375\362 */ + "ubjointe", /* \375\363 */ + "uilleann", /* \375\364 */ + "ukrainien", /* \375\365 */ + "ukrainienne", /* \375\366 */ + "ultra-fine", /* \375\367 */ + "una", /* \375\370 */ + "une", /* \375\371 */ + "uo", /* \375\372 */ + "uon", /* \375\373 */ + "uop", /* \375\374 */ + "uox", /* \375\375 */ + "ur", /* \375\376 */ + "uranus", /* \375\377 */ + "uruz", /* \376\001 */ + "utiliser", /* \376\002 */ + "uu", /* \376\003 */ + "vaisselle", /* \376\004 */ + "vallée", /* \376\005 */ + "vap", /* \376\006 */ + "vapeur", /* \376\007 */ + "variant", /* \376\010 */ + "varika", /* \376\011 */ + "vat", /* \376\012 */ + "vax", /* \376\013 */ + "vayanna", /* \376\014 */ + "verrou", /* \376\015 */ + "verseau", /* \376\016 */ + "versicule", /* \376\017 */ + "vex", /* \376\020 */ + "victoire", /* \376\021 */ + "vide", /* \376\022 */ + "vidée", /* \376\023 */ + "vie", /* \376\024 */ + "viep", /* \376\025 */ + "vierge", /* \376\026 */ + "viet", /* \376\027 */ + "viex", /* \376\030 */ + "ville", /* \376\031 */ + "vingt-cinq", /* \376\032 */ + "vingt-huit", /* \376\033 */ + "vingt-neuf", /* \376\034 */ + "vingt-sept", /* \376\035 */ + "vingt-six", /* \376\036 */ + "vip", /* \376\037 */ + "virages", /* \376\040 */ + "viriam", /* \376\041 */ + "virtuelle", /* \376\042 */ + "visargaya", /* \376\043 */ + "visualisation", /* \376\044 */ + "visuel", /* \376\045 */ + "vit", /* \376\046 */ + "vix", /* \376\047 */ + "volume", /* \376\050 */ + "vop", /* \376\051 */ + "vot", /* \376\052 */ + "vou", /* \376\053 */ + "vox", /* \376\054 */ + "voyelles", /* \376\055 */ + "vup", /* \376\056 */ + "vurx", /* \376\057 */ + "vut", /* \376\060 */ + "vux", /* \376\061 */ + "vwa", /* \376\062 */ + "vy", /* \376\063 */ + "vyp", /* \376\064 */ + "vyr", /* \376\065 */ + "vyrx", /* \376\066 */ + "vyt", /* \376\067 */ + "vyx", /* \376\070 */ + "vÄ", /* \376\071 */ + "vâvou", /* \376\072 */ + "wap", /* \376\073 */ + "wat", /* \376\074 */ + "watto", /* \376\075 */ + "wax", /* \376\076 */ + "wb", /* \376\077 */ + "weierstrass", /* \376\100 */ + "wep", /* \376\101 */ + "wex", /* \376\102 */ + "wop", /* \376\103 */ + "wox", /* \376\104 */ + "wu", /* \376\105 */ + "wunjo", /* \376\106 */ + "wuo", /* \376\107 */ + "wuop", /* \376\110 */ + "wuox", /* \376\111 */ + "wÄ", /* \376\112 */ + "wâvou", /* \376\113 */ + "xa", /* \376\114 */ + "xe", /* \376\115 */ + "xie", /* \376\116 */ + "xiep", /* \376\117 */ + "xiet", /* \376\120 */ + "xiex", /* \376\121 */ + "xip", /* \376\122 */ + "xit", /* \376\123 */ + "xix", /* \376\124 */ + "xop", /* \376\125 */ + "xot", /* \376\126 */ + "xou", /* \376\127 */ + "xox", /* \376\130 */ + "xuo", /* \376\131 */ + "xuox", /* \376\132 */ + "xwa", /* \376\133 */ + "xwe", /* \376\134 */ + "xwi", /* \376\135 */ + "xwÄ", /* \376\136 */ + "xwé", /* \376\137 */ + "xy", /* \376\140 */ + "xyp", /* \376\141 */ + "xyr", /* \376\142 */ + "xyrx", /* \376\143 */ + "xyt", /* \376\144 */ + "xyx", /* \376\145 */ + "xÄ", /* \376\146 */ + "xé", /* \376\147 */ + "ya-yô", /* \376\150 */ + "ya-ô", /* \376\151 */ + "yak", /* \376\152 */ + "yamakkan", /* \376\153 */ + "yar", /* \376\154 */ + "yaréah", /* \376\155 */ + "yayanna", /* \376\156 */ + "yetiv", /* \376\157 */ + "yie", /* \376\160 */ + "yiep", /* \376\161 */ + "yiet", /* \376\162 */ + "yiex", /* \376\163 */ + "ying", /* \376\164 */ + "yip", /* \376\165 */ + "yix", /* \376\166 */ + "yo-ou", /* \376\167 */ + "yo-ô", /* \376\170 */ + "yomo", /* \376\171 */ + "yop", /* \376\172 */ + "you-a", /* \376\173 */ + "you-o", /* \376\174 */ + "you-ou", /* \376\175 */ + "you-é", /* \376\176 */ + "yox", /* \376\177 */ + "yoûkaléapintou", /* \376\200 */ + "yr-islandais", /* \376\201 */ + "yr-à-longue-branche", /* \376\202 */ + "yr-à-ramille", /* \376\203 */ + "yuan", /* \376\204 */ + "yuo", /* \376\205 */ + "yuop", /* \376\206 */ + "yuot", /* \376\207 */ + "yuox", /* \376\210 */ + "yup", /* \376\211 */ + "yur", /* \376\212 */ + "yurx", /* \376\213 */ + "yut", /* \376\214 */ + "yux", /* \376\215 */ + "yy", /* \376\216 */ + "yyp", /* \376\217 */ + "yyr", /* \376\220 */ + "yyrx", /* \376\221 */ + "yyt", /* \376\222 */ + "yyx", /* \376\223 */ + "yÄ", /* \376\224 */ + "yËn", /* \376\225 */ + "yâdo", /* \376\226 */ + "yâru", /* \376\227 */ + "yâï", /* \376\230 */ + "yî", /* \376\231 */ + "yô-yo", /* \376\232 */ + "yô-ô", /* \376\233 */ + "zap", /* \376\234 */ + "zarqa", /* \376\235 */ + "zat", /* \376\236 */ + "zaviyani", /* \376\237 */ + "zax", /* \376\240 */ + "zep", /* \376\241 */ + "zex", /* \376\242 */ + "zhap", /* \376\243 */ + "zhat", /* \376\244 */ + "zhax", /* \376\245 */ + "zhe", /* \376\246 */ + "zhep", /* \376\247 */ + "zhet", /* \376\250 */ + "zhex", /* \376\251 */ + "zho", /* \376\252 */ + "zhop", /* \376\253 */ + "zhot", /* \376\254 */ + "zhox", /* \376\255 */ + "zhu", /* \376\256 */ + "zhuo", /* \376\257 */ + "zhuop", /* \376\260 */ + "zhuox", /* \376\261 */ + "zhup", /* \376\262 */ + "zhur", /* \376\263 */ + "zhurx", /* \376\264 */ + "zhut", /* \376\265 */ + "zhux", /* \376\266 */ + "zhy", /* \376\267 */ + "zhyp", /* \376\270 */ + "zhyr", /* \376\271 */ + "zhyrx", /* \376\272 */ + "zhyt", /* \376\273 */ + "zhyx", /* \376\274 */ + "zie", /* \376\275 */ + "ziep", /* \376\276 */ + "ziex", /* \376\277 */ + "zigzag", /* \376\300 */ + "zilde", /* \376\301 */ + "zip", /* \376\302 */ + "zit", /* \376\303 */ + "zix", /* \376\304 */ + "zop", /* \376\305 */ + "zox", /* \376\306 */ + "zra", /* \376\307 */ + "zuo", /* \376\310 */ + "zuop", /* \376\311 */ + "zuox", /* \376\312 */ + "zup", /* \376\313 */ + "zurx", /* \376\314 */ + "zut", /* \376\315 */ + "zux", /* \376\316 */ + "zwa", /* \376\317 */ + "zy", /* \376\320 */ + "zyp", /* \376\321 */ + "zyr", /* \376\322 */ + "zyrx", /* \376\323 */ + "zyt", /* \376\324 */ + "zyx", /* \376\325 */ + "zza", /* \376\326 */ + "zzap", /* \376\327 */ + "zzat", /* \376\330 */ + "zzax", /* \376\331 */ + "zze", /* \376\332 */ + "zzep", /* \376\333 */ + "zzex", /* \376\334 */ + "zzi", /* \376\335 */ + "zzie", /* \376\336 */ + "zziep", /* \376\337 */ + "zziex", /* \376\340 */ + "zzit", /* \376\341 */ + "zzix", /* \376\342 */ + "zzo", /* \376\343 */ + "zzop", /* \376\344 */ + "zzox", /* \376\345 */ + "zzu", /* \376\346 */ + "zzup", /* \376\347 */ + "zzur", /* \376\350 */ + "zzurx", /* \376\351 */ + "zzux", /* \376\352 */ + "zzy", /* \376\353 */ + "zzyp", /* \376\354 */ + "zzyr", /* \376\355 */ + "zzyrx", /* \376\356 */ + "zzyt", /* \376\357 */ + "zzyx", /* \376\360 */ + "zÄ", /* \376\361 */ + "zâ", /* \376\362 */ + "Æsc", /* \376\363 */ + "Æyanna", /* \376\364 */ + "ÆÆyanna", /* \376\365 */ + "Ë", /* \376\366 */ + "Ën", /* \376\367 */ + "Ór", /* \376\370 */ + "Úr", /* \376\371 */ + "Ü", /* \376\372 */ + "܌", /* \376\373 */ + "ÜÜ", /* \376\374 */ + "âbâfili", /* \376\375 */ + "âcre", /* \376\376 */ + "âdi", /* \376\377 */ + "âru", /* \377\001 */ + "âyanna", /* \377\002 */ + "âï", /* \377\003 */ + "çad", /* \377\004 */ + "çakti", /* \377\005 */ + "çayanna", /* \377\006 */ + "çe", /* \377\007 */ + "çi", /* \377\010 */ + "ço", /* \377\011 */ + "çou", /* \377\012 */ + "çwa", /* \377\013 */ + "çÄ", /* \377\014 */ + "çé", /* \377\015 */ + "èn", /* \377\016 */ + "èni", /* \377\017 */ + "éabhadh", /* \377\020 */ + "ébéfili", /* \377\021 */ + "éclair", /* \377\022 */ + "écrasé", /* \377\023 */ + "écriture", /* \377\024 */ + "écu", /* \377\025 */ + "égalité", /* \377\026 */ + "ék", /* \377\027 */ + "électrique", /* \377\030 */ + "éleveuse", /* \377\031 */ + "épaisse", /* \377\032 */ + "épaulement", /* \377\033 */ + "équiangulaire", /* \377\034 */ + "étagère", /* \377\035 */ + "étiré", /* \377\036 */ + "étrangler", /* \377\037 */ + "étroite", /* \377\040 */ + "éyanna", /* \377\041 */ + "êbêfili", /* \377\042 */ + "êkâ", /* \377\043 */ + "êyanna", /* \377\044 */ + "îbîfili", /* \377\045 */ + "îl", /* \377\046 */ + "îyanna", /* \377\047 */ + "ñasubjointe", /* \377\050 */ + "ñe", /* \377\051 */ + "ñou", /* \377\052 */ + "ñwa", /* \377\053 */ + "ñÄ", /* \377\054 */ + "ñña", /* \377\055 */ + "ô-o", /* \377\056 */ + "ô-ou", /* \377\057 */ + "ô-yé", /* \377\060 */ + "ô-é", /* \377\061 */ + "ô-ô", /* \377\062 */ + "ôbôfili", /* \377\063 */ + "ômu", /* \377\064 */ + "ôyanna", /* \377\065 */ + "û-ou", /* \377\066 */ + "û-û", /* \377\067 */ + "ûi-ou", /* \377\070 */ }; struct charname @@ -2042,6373 +4917,10620 @@ struct charname static const struct charname charname[NUMBER_OF_CHARNAMES] = { - {0x0000, "\373\326\374\226"}, - {0x0001, "\371\142\373\111\374\245"}, - {0x0002, "\371\142\012\372\166\374\254"}, - {0x0003, "\070\012\372\166\374\210"}, - {0x0004, "\070\012\371\255\374\204"}, - {0x0005, "\373\123\374\203"}, - {0x0006, "\373\024\012\372\147\371\312\374\161"}, - {0x0007, "\374\051\374\163"}, - {0x0008, "\371\026\373\034\374\165"}, - {0x0009, "\372\163\372\263\374\215"}, - {0x000A, "\372\267\374\221"}, - {0x000B, "\372\163\224\374\260"}, - {0x000C, "\373\346\377\127\374\211"}, - {0x000D, "\374\023\012\373\067\374\170"}, - {0x000E, "\373\230\372\047\374\244"}, - {0x000F, "\007\372\047\374\243"}, - {0x0010, "\373\016\371\255\374\200"}, - {0x0011, "\371\024\371\345\132\374\172"}, - {0x0012, "\371\024\371\345\154\374\173"}, - {0x0013, "\371\024\371\345\131\374\174"}, - {0x0014, "\371\024\371\345\200\374\175"}, - {0x0015, "\373\024\012\372\147\223\374\223"}, - {0x0016, "\374\065\374\256"}, - {0x0017, "\070\012\371\255\012\304\374\207"}, - {0x0018, "\373\032\374\166"}, - {0x0019, "\070\012\374\061\374\202"}, - {0x001A, "\074\012\374\057\374\255"}, - {0x001B, "\373\016\374\206"}, - {0x001C, "\371\007\012\373\164\374\212"}, - {0x001D, "\371\007\012\373\216\374\213"}, - {0x001E, "\371\007\375\105\374\237"}, - {0x001F, "\371\007\012\377\120\374\257"}, - {0x0020, "\371\026"}, - {0x0021, "\027\371\132"}, - {0x0022, "\371\014\372\037"}, - {0x0023, "\372\227"}, - {0x0024, "\015\372\243"}, - {0x0025, "\015\335\371\223"}, - {0x0026, "\372\327"}, - {0x0027, "\371\216"}, - {0x0028, "\371\004\042"}, - {0x0029, "\371\004\037"}, - {0x002A, "\371\011"}, - {0x002B, "\134\162"}, - {0x002C, "\331"}, - {0x002D, "\371\072"}, - {0x002E, "\027"}, - {0x002F, "\210\361"}, - {0x0030, "\017\311"}, - {0x0031, "\017\132"}, - {0x0032, "\017\154"}, - {0x0033, "\017\131"}, - {0x0034, "\017\200"}, - {0x0035, "\017\203"}, - {0x0036, "\017\233"}, - {0x0037, "\017\221"}, - {0x0038, "\017\204"}, - {0x0039, "\017\235"}, - {0x003A, "\371\350"}, - {0x003B, "\372\010"}, - {0x003C, "\134\300\040"}, - {0x003D, "\134\142\040"}, - {0x003E, "\134\326\040"}, - {0x003F, "\027\371\225"}, - {0x0040, "\372\206"}, - {0x0041, "\001\005\004\046"}, - {0x0042, "\001\005\004\275"}, - {0x0043, "\001\005\004\241"}, - {0x0044, "\001\005\004\225"}, - {0x0045, "\001\005\004\060"}, - {0x0046, "\001\005\004\355"}, - {0x0047, "\001\005\004\227"}, - {0x0048, "\001\005\004\230"}, - {0x0049, "\001\005\004\072"}, - {0x004A, "\001\005\004\344"}, - {0x004B, "\001\005\004\301"}, - {0x004C, "\001\005\004\167"}, - {0x004D, "\001\005\004\256"}, - {0x004E, "\001\005\004\213"}, - {0x004F, "\001\005\004\050"}, - {0x0050, "\001\005\004\351"}, - {0x0051, "\001\005\004\371\066"}, - {0x0052, "\001\005\004\150"}, - {0x0053, "\001\005\004\207"}, - {0x0054, "\001\005\004\236"}, - {0x0055, "\001\005\004\107"}, - {0x0056, "\001\005\004\324"}, - {0x0057, "\001\005\004\273"}, - {0x0058, "\001\005\004\310"}, - {0x0059, "\001\005\004\240"}, - {0x005A, "\001\005\004\243"}, - {0x005B, "\100\042"}, - {0x005C, "\210\361\371\275"}, - {0x005D, "\100\173"}, - {0x005E, "\026\117"}, - {0x005F, "\264\061"}, - {0x0060, "\026\151"}, - {0x0061, "\001\003\004\046"}, - {0x0062, "\001\003\004\275"}, - {0x0063, "\001\003\004\241"}, - {0x0064, "\001\003\004\225"}, - {0x0065, "\001\003\004\060"}, - {0x0066, "\001\003\004\355"}, - {0x0067, "\001\003\004\227"}, - {0x0068, "\001\003\004\230"}, - {0x0069, "\001\003\004\072"}, - {0x006A, "\001\003\004\344"}, - {0x006B, "\001\003\004\301"}, - {0x006C, "\001\003\004\167"}, - {0x006D, "\001\003\004\256"}, - {0x006E, "\001\003\004\213"}, - {0x006F, "\001\003\004\050"}, - {0x0070, "\001\003\004\351"}, - {0x0071, "\001\003\004\371\066"}, - {0x0072, "\001\003\004\150"}, - {0x0073, "\001\003\004\207"}, - {0x0074, "\001\003\004\236"}, - {0x0075, "\001\003\004\107"}, - {0x0076, "\001\003\004\324"}, - {0x0077, "\001\003\004\273"}, - {0x0078, "\001\003\004\310"}, - {0x0079, "\001\003\004\240"}, - {0x007A, "\001\003\004\243"}, - {0x007B, "\371\261\042"}, - {0x007C, "\210\224"}, - {0x007D, "\371\261\037"}, - {0x007E, "\143"}, - {0x007F, "\374\062\374\177"}, - {0x0080, "\074\012\371\341\374\230"}, - {0x0081, "\376\235\326\376\360\374\214"}, - {0x0082, "\372\041\376\306\373\233\374\164"}, - {0x0083, "\374\342\372\041\373\233\374\224"}, - {0x0084, "\371\151\374\220"}, - {0x0085, "\040\022\212\374\225"}, - {0x0086, "\371\142\012\372\200\374\070\374\251"}, - {0x0087, "\070\012\372\200\374\070\374\205"}, - {0x0088, "\372\041\012\372\366\211\374\217"}, - {0x0089, "\372\366\211\130\375\376\374\216"}, - {0x008A, "\372\041\012\372\366\145\374\261"}, - {0x008B, "\372\267\373\351\013\373\023\061\374\231"}, - {0x008C, "\372\267\373\351\013\373\023\065\374\232"}, - {0x008D, "\371\151\375\352\374\236"}, - {0x008E, "\372\340\372\171\154\374\247"}, - {0x008F, "\372\340\372\171\131\374\250"}, - {0x0090, "\372\214\012\371\024\371\345\374\176"}, - {0x0091, "\374\112\372\332\132\374\234"}, - {0x0092, "\374\112\372\332\154\374\235"}, - {0x0093, "\376\132\007\376\141\371\255\374\253"}, - {0x0094, "\373\032\226\074\376\356\374\167"}, - {0x0095, "\373\275\007\374\340\374\222"}, - {0x0096, "\371\142\012\372\200\374\002\374\241"}, - {0x0097, "\070\012\372\200\374\002\374\201"}, - {0x0098, "\371\142\012\372\214\374\246"}, - {0x0099, "\372\271\012\074\375\261\372\171\374\242"}, - {0x009A, "\372\271\012\074\372\171\374\240"}, - {0x009B, "\372\271\012\377\140\012\371\024\374\171"}, - {0x009C, "\070\012\372\214\374\252"}, - {0x009D, "\371\024\012\377\137\375\112\374\227"}, - {0x009E, "\373\275\372\332\374\233"}, - {0x009F, "\371\024\012\376\352\374\162"}, - {0x00A0, "\371\026\373\240"}, - {0x00A1, "\027\371\132\371\016"}, - {0x00A2, "\015\372\212"}, - {0x00A3, "\015\373\267"}, - {0x00A4, "\015\371\162"}, - {0x00A5, "\015\374\134"}, - {0x00A6, "\210\224\375\347"}, - {0x00A7, "\372\324"}, - {0x00A8, "\141"}, - {0x00A9, "\015\373\077"}, - {0x00AA, "\372\265\373\340\375\243"}, - {0x00AB, "\371\014\042"}, - {0x00AC, "\134\372\116"}, - {0x00AD, "\264\371\226\377\266"}, - {0x00AE, "\015\153\375\165"}, - {0x00AF, "\161"}, - {0x00B0, "\015\372\236"}, - {0x00B1, "\134\376\335"}, - {0x00B2, "\347\154"}, - {0x00B3, "\347\131"}, - {0x00B4, "\026\102"}, - {0x00B5, "\015\376\123"}, - {0x00B6, "\373\354\012\373\304"}, - {0x00B7, "\027\371\040"}, - {0x00B8, "\246"}, - {0x00B9, "\347\132"}, - {0x00BA, "\372\265\373\340\376\110"}, - {0x00BB, "\371\014\173"}, - {0x00BC, "\356\132\372\141"}, - {0x00BD, "\356\132\375\130"}, - {0x00BE, "\356\131\372\334"}, - {0x00BF, "\027\371\225\371\016"}, - {0x00C0, "\001\005\004\046\026\151"}, - {0x00C1, "\001\005\004\046\026\102"}, - {0x00C2, "\001\005\004\046\026\117"}, - {0x00C3, "\001\005\004\046\143"}, - {0x00C4, "\001\005\004\046\141"}, - {0x00C5, "\001\005\004\046\231\007\025"}, - {0x00C7, "\001\005\004\241\246"}, - {0x00C8, "\001\005\004\060\026\151"}, - {0x00C9, "\001\005\004\060\026\102"}, - {0x00CA, "\001\005\004\060\026\117"}, - {0x00CB, "\001\005\004\060\141"}, - {0x00CC, "\001\005\004\072\026\151"}, - {0x00CD, "\001\005\004\072\026\102"}, - {0x00CE, "\001\005\004\072\026\117"}, - {0x00CF, "\001\005\004\072\141"}, - {0x00D0, "\001\005\004\373\145"}, - {0x00D1, "\001\005\004\213\143"}, - {0x00D2, "\001\005\004\050\026\151"}, - {0x00D3, "\001\005\004\050\026\102"}, - {0x00D4, "\001\005\004\050\026\117"}, - {0x00D5, "\001\005\004\050\143"}, - {0x00D6, "\001\005\004\050\141"}, - {0x00D7, "\134\372\112"}, - {0x00D8, "\001\005\004\050\175\373\332"}, - {0x00D9, "\001\005\004\107\026\151"}, - {0x00DA, "\001\005\004\107\026\102"}, - {0x00DB, "\001\005\004\107\026\117"}, - {0x00DC, "\001\005\004\107\141"}, - {0x00DD, "\001\005\004\240\026\102"}, - {0x00DE, "\001\005\004\374\076"}, - {0x00DF, "\001\003\004\207\372\246"}, - {0x00E0, "\001\003\004\046\026\151"}, - {0x00E1, "\001\003\004\046\026\102"}, - {0x00E2, "\001\003\004\046\026\117"}, - {0x00E3, "\001\003\004\046\143"}, - {0x00E4, "\001\003\004\046\141"}, - {0x00E5, "\001\003\004\046\231\007\025"}, - {0x00E7, "\001\003\004\241\246"}, - {0x00E8, "\001\003\004\060\026\151"}, - {0x00E9, "\001\003\004\060\026\102"}, - {0x00EA, "\001\003\004\060\026\117"}, - {0x00EB, "\001\003\004\060\141"}, - {0x00EC, "\001\003\004\072\026\151"}, - {0x00ED, "\001\003\004\072\026\102"}, - {0x00EE, "\001\003\004\072\026\117"}, - {0x00EF, "\001\003\004\072\141"}, - {0x00F0, "\001\003\004\373\145"}, - {0x00F1, "\001\003\004\213\143"}, - {0x00F2, "\001\003\004\050\026\151"}, - {0x00F3, "\001\003\004\050\026\102"}, - {0x00F4, "\001\003\004\050\026\117"}, - {0x00F5, "\001\003\004\050\143"}, - {0x00F6, "\001\003\004\050\141"}, - {0x00F7, "\134\372\242"}, - {0x00F8, "\001\003\004\050\175\373\332"}, - {0x00F9, "\001\003\004\107\026\151"}, - {0x00FA, "\001\003\004\107\026\102"}, - {0x00FB, "\001\003\004\107\026\117"}, - {0x00FC, "\001\003\004\107\141"}, - {0x00FD, "\001\003\004\240\026\102"}, - {0x00FE, "\001\003\004\374\076"}, - {0x00FF, "\001\003\004\240\141"}, - {0x0100, "\001\005\004\046\161"}, - {0x0101, "\001\003\004\046\161"}, - {0x0102, "\001\005\004\046\160"}, - {0x0103, "\001\003\004\046\160"}, - {0x0104, "\001\005\004\046\371\003"}, - {0x0105, "\001\003\004\046\371\003"}, - {0x0106, "\001\005\004\241\026\102"}, - {0x0107, "\001\003\004\241\026\102"}, - {0x0108, "\001\005\004\241\026\117"}, - {0x0109, "\001\003\004\241\026\117"}, - {0x010A, "\001\005\004\241\027\007\025"}, - {0x010B, "\001\003\004\241\027\007\025"}, - {0x010C, "\001\005\004\241\172"}, - {0x010D, "\001\003\004\241\172"}, - {0x010E, "\001\005\004\225\172"}, - {0x010F, "\001\003\004\225\172"}, - {0x0110, "\001\005\004\225\175"}, - {0x0111, "\001\003\004\225\175"}, - {0x0112, "\001\005\004\060\161"}, - {0x0113, "\001\003\004\060\161"}, - {0x0114, "\001\005\004\060\160"}, - {0x0115, "\001\003\004\060\160"}, - {0x0116, "\001\005\004\060\027\007\025"}, - {0x0117, "\001\003\004\060\027\007\025"}, - {0x0118, "\001\005\004\060\371\003"}, - {0x0119, "\001\003\004\060\371\003"}, - {0x011A, "\001\005\004\060\172"}, - {0x011B, "\001\003\004\060\172"}, - {0x011C, "\001\005\004\227\026\117"}, - {0x011D, "\001\003\004\227\026\117"}, - {0x011E, "\001\005\004\227\160"}, - {0x011F, "\001\003\004\227\160"}, - {0x0120, "\001\005\004\227\027\007\025"}, - {0x0121, "\001\003\004\227\027\007\025"}, - {0x0122, "\001\005\004\227\246"}, - {0x0123, "\001\003\004\227\246"}, - {0x0124, "\001\005\004\230\026\117"}, - {0x0125, "\001\003\004\230\026\117"}, - {0x0126, "\001\005\004\230\175"}, - {0x0127, "\001\003\004\230\175"}, - {0x0128, "\001\005\004\072\143"}, - {0x0129, "\001\003\004\072\143"}, - {0x012A, "\001\005\004\072\161"}, - {0x012B, "\001\003\004\072\161"}, - {0x012C, "\001\005\004\072\160"}, - {0x012D, "\001\003\004\072\160"}, - {0x012E, "\001\005\004\072\371\003"}, - {0x012F, "\001\003\004\072\371\003"}, - {0x0130, "\001\005\004\072\027\007\025"}, - {0x0131, "\001\003\004\072\232\027"}, - {0x0132, "\371\055\372\155\005\372\102\373\235"}, - {0x0133, "\371\055\372\155\003\372\102\373\235"}, - {0x0134, "\001\005\004\344\026\117"}, - {0x0135, "\001\003\004\344\026\117"}, - {0x0136, "\001\005\004\301\246"}, - {0x0137, "\001\003\004\301\246"}, - {0x0138, "\001\003\004\376\035"}, - {0x0139, "\001\005\004\167\026\102"}, - {0x013A, "\001\003\004\167\026\102"}, - {0x013B, "\001\005\004\167\246"}, - {0x013C, "\001\003\004\167\246"}, - {0x013D, "\001\005\004\167\172"}, - {0x013E, "\001\003\004\167\172"}, - {0x013F, "\001\005\004\167\027\371\040"}, - {0x0140, "\001\003\004\167\027\371\040"}, - {0x0141, "\001\005\004\167\175"}, - {0x0142, "\001\003\004\167\175"}, - {0x0143, "\001\005\004\213\026\102"}, - {0x0144, "\001\003\004\213\026\102"}, - {0x0145, "\001\005\004\213\246"}, - {0x0146, "\001\003\004\213\246"}, - {0x0147, "\001\005\004\213\172"}, - {0x0148, "\001\003\004\213\172"}, - {0x0149, "\001\003\004\213\376\357\373\114\371\216"}, - {0x014A, "\001\005\004\372\060"}, - {0x014B, "\001\003\004\372\060"}, - {0x014C, "\001\005\004\050\161"}, - {0x014D, "\001\003\004\050\161"}, - {0x014E, "\001\005\004\050\160"}, - {0x014F, "\001\003\004\050\160"}, - {0x0150, "\001\005\004\050\051\026\102"}, - {0x0151, "\001\003\004\050\051\026\102"}, - {0x0152, "\371\055\372\155\005\372\102\371\041"}, - {0x0153, "\371\055\372\155\003\372\102\371\041"}, - {0x0154, "\001\005\004\150\026\102"}, - {0x0155, "\001\003\004\150\026\102"}, - {0x0156, "\001\005\004\150\246"}, - {0x0157, "\001\003\004\150\246"}, - {0x0158, "\001\005\004\150\172"}, - {0x0159, "\001\003\004\150\172"}, - {0x015A, "\001\005\004\207\026\102"}, - {0x015B, "\001\003\004\207\026\102"}, - {0x015C, "\001\005\004\207\026\117"}, - {0x015D, "\001\003\004\207\026\117"}, - {0x015E, "\001\005\004\207\246"}, - {0x015F, "\001\003\004\207\246"}, - {0x0160, "\001\005\004\207\172"}, - {0x0161, "\001\003\004\207\172"}, - {0x0162, "\001\005\004\236\246"}, - {0x0163, "\001\003\004\236\246"}, - {0x0164, "\001\005\004\236\172"}, - {0x0165, "\001\003\004\236\172"}, - {0x0166, "\001\005\004\236\175"}, - {0x0167, "\001\003\004\236\175"}, - {0x0168, "\001\005\004\107\143"}, - {0x0169, "\001\003\004\107\143"}, - {0x016A, "\001\005\004\107\161"}, - {0x016B, "\001\003\004\107\161"}, - {0x016C, "\001\005\004\107\160"}, - {0x016D, "\001\003\004\107\160"}, - {0x016E, "\001\005\004\107\231\007\025"}, - {0x016F, "\001\003\004\107\231\007\025"}, - {0x0170, "\001\005\004\107\051\026\102"}, - {0x0171, "\001\003\004\107\051\026\102"}, - {0x0172, "\001\005\004\107\371\003"}, - {0x0173, "\001\003\004\107\371\003"}, - {0x0174, "\001\005\004\273\026\117"}, - {0x0175, "\001\003\004\273\026\117"}, - {0x0176, "\001\005\004\240\026\117"}, - {0x0177, "\001\003\004\240\026\117"}, - {0x0178, "\001\005\004\240\141"}, - {0x0179, "\001\005\004\243\026\102"}, - {0x017A, "\001\003\004\243\026\102"}, - {0x017B, "\001\005\004\243\027\007\025"}, - {0x017C, "\001\003\004\243\027\007\025"}, - {0x017D, "\001\005\004\243\172"}, - {0x017E, "\001\003\004\243\172"}, - {0x017F, "\001\003\004\207\372\306"}, - {0x0180, "\001\003\004\275\175"}, - {0x0181, "\001\005\004\275\254"}, - {0x0182, "\001\005\004\275\372\133"}, - {0x0183, "\001\003\004\275\372\133"}, - {0x0184, "\001\005\004\372\154\272"}, - {0x0185, "\001\003\004\372\154\272"}, - {0x0186, "\001\005\004\050\371\307"}, - {0x0187, "\001\005\004\241\254"}, - {0x0188, "\001\003\004\241\254"}, - {0x0189, "\001\005\004\225\374\274"}, - {0x018A, "\001\005\004\225\254"}, - {0x018B, "\001\005\004\225\372\133"}, - {0x018C, "\001\003\004\225\372\133"}, - {0x018D, "\001\003\004\371\270\371\344"}, - {0x018E, "\001\005\004\060\336"}, - {0x018F, "\001\005\004\371\247"}, - {0x0190, "\001\005\004\060\371\307"}, - {0x0191, "\001\005\004\355\342"}, - {0x0192, "\001\003\004\355\342"}, - {0x0193, "\001\005\004\227\254"}, - {0x0194, "\001\005\004\371\274"}, - {0x0195, "\001\003\004\375\326"}, - {0x0196, "\001\005\004\055"}, - {0x0197, "\001\005\004\072\175"}, - {0x0198, "\001\005\004\301\254"}, - {0x0199, "\001\003\004\301\254"}, - {0x019A, "\001\003\004\167\376\377"}, - {0x019B, "\001\003\004\372\077\175"}, - {0x019C, "\001\005\004\256\260"}, - {0x019D, "\001\005\004\213\342"}, - {0x019E, "\001\003\004\213\040\372\306\320\173"}, - {0x019F, "\001\005\004\050\143\371\040"}, - {0x01A0, "\001\005\004\050\253"}, - {0x01A1, "\001\003\004\050\253"}, - {0x01A2, "\001\005\004\373\344"}, - {0x01A3, "\001\003\004\373\344"}, - {0x01A4, "\001\005\004\351\254"}, - {0x01A5, "\001\003\004\351\254"}, - {0x01A6, "\001\004\377\316"}, - {0x01A7, "\001\005\004\373\130\272"}, - {0x01A8, "\001\003\004\373\130\272"}, - {0x01A9, "\001\005\004\372\201"}, - {0x01AA, "\001\004\372\201\336\371\221"}, - {0x01AB, "\001\003\004\236\342\372\322"}, - {0x01AC, "\001\005\004\236\254"}, - {0x01AD, "\001\003\004\236\254"}, - {0x01AE, "\001\005\004\236\342\371\067"}, - {0x01AF, "\001\005\004\107\253"}, - {0x01B0, "\001\003\004\107\253"}, - {0x01B1, "\001\005\004\214"}, - {0x01B2, "\001\005\004\324\254"}, - {0x01B3, "\001\005\004\240\254"}, - {0x01B4, "\001\003\004\240\254"}, - {0x01B5, "\001\005\004\243\175"}, - {0x01B6, "\001\003\004\243\175"}, - {0x01B7, "\001\005\004\371\143"}, - {0x01B8, "\001\005\004\371\143\336"}, - {0x01B9, "\001\003\004\371\143\336"}, - {0x01BA, "\001\003\004\371\143\342"}, - {0x01BB, "\001\004\154\175"}, - {0x01BC, "\001\005\004\372\217\272"}, - {0x01BD, "\001\003\004\372\217\272"}, - {0x01BE, "\001\004\371\076\012\371\102\175\371\016"}, - {0x01BF, "\001\004\377\275"}, - {0x01C0, "\001\004\371\343\375\133"}, - {0x01C1, "\001\004\371\343\376\051"}, - {0x01C2, "\001\004\371\343\374\304"}, - {0x01C3, "\001\004\371\343\371\067"}, - {0x01C4, "\001\005\004\371\272\172"}, - {0x01C5, "\001\005\004\225\130\001\003\243\172"}, - {0x01C6, "\001\003\004\371\272\172"}, - {0x01C7, "\001\005\004\373\270"}, - {0x01C8, "\001\005\004\167\130\001\003\344"}, - {0x01C9, "\001\003\004\373\270"}, - {0x01CA, "\001\005\004\373\321"}, - {0x01CB, "\001\005\004\213\130\001\003\344"}, - {0x01CC, "\001\003\004\373\321"}, - {0x01CD, "\001\005\004\046\172"}, - {0x01CE, "\001\003\004\046\172"}, - {0x01CF, "\001\005\004\072\172"}, - {0x01D0, "\001\003\004\072\172"}, - {0x01D1, "\001\005\004\050\172"}, - {0x01D2, "\001\003\004\050\172"}, - {0x01D3, "\001\005\004\107\172"}, - {0x01D4, "\001\003\004\107\172"}, - {0x01D5, "\001\005\004\107\141\011\161"}, - {0x01D6, "\001\003\004\107\141\011\161"}, - {0x01D7, "\001\005\004\107\141\011\026\102"}, - {0x01D8, "\001\003\004\107\141\011\026\102"}, - {0x01D9, "\001\005\004\107\141\011\172"}, - {0x01DA, "\001\003\004\107\141\011\172"}, - {0x01DB, "\001\005\004\107\141\011\026\151"}, - {0x01DC, "\001\003\004\107\141\011\026\151"}, - {0x01DD, "\001\003\004\060\260"}, - {0x01DE, "\001\005\004\046\141\011\161"}, - {0x01DF, "\001\003\004\046\141\011\161"}, - {0x01E0, "\001\005\004\046\027\007\025\011\161"}, - {0x01E1, "\001\003\004\046\027\007\025\011\161"}, - {0x01E4, "\001\005\004\227\175"}, - {0x01E5, "\001\003\004\227\175"}, - {0x01E6, "\001\005\004\227\172"}, - {0x01E7, "\001\003\004\227\172"}, - {0x01E8, "\001\005\004\301\172"}, - {0x01E9, "\001\003\004\301\172"}, - {0x01EA, "\001\005\004\050\371\003"}, - {0x01EB, "\001\003\004\050\371\003"}, - {0x01EC, "\001\005\004\050\371\003\011\161"}, - {0x01ED, "\001\003\004\050\371\003\011\161"}, - {0x01EE, "\001\005\004\371\143\172"}, - {0x01EF, "\001\003\004\371\143\172"}, - {0x01F0, "\001\003\004\344\172"}, - {0x01F1, "\001\005\004\371\272"}, - {0x01F2, "\001\005\004\225\130\001\003\243"}, - {0x01F3, "\001\003\004\371\272"}, - {0x01F4, "\001\005\004\227\026\102"}, - {0x01F5, "\001\003\004\227\026\102"}, - {0x01FA, "\001\005\004\046\231\007\025\011\026\102"}, - {0x01FB, "\001\003\004\046\231\007\025\011\026\102"}, - {0x01FE, "\001\005\004\050\175\026\102"}, - {0x01FF, "\001\003\004\050\175\026\102"}, - {0x0200, "\001\005\004\046\051\026\151"}, - {0x0201, "\001\003\004\046\051\026\151"}, - {0x0202, "\001\005\004\046\160\352"}, - {0x0203, "\001\003\004\046\160\352"}, - {0x0204, "\001\005\004\060\051\026\151"}, - {0x0205, "\001\003\004\060\051\026\151"}, - {0x0206, "\001\005\004\060\160\352"}, - {0x0207, "\001\003\004\060\160\352"}, - {0x0208, "\001\005\004\072\051\026\151"}, - {0x0209, "\001\003\004\072\051\026\151"}, - {0x020A, "\001\005\004\072\160\352"}, - {0x020B, "\001\003\004\072\160\352"}, - {0x020C, "\001\005\004\050\051\026\151"}, - {0x020D, "\001\003\004\050\051\026\151"}, - {0x020E, "\001\005\004\050\160\352"}, - {0x020F, "\001\003\004\050\160\352"}, - {0x0210, "\001\005\004\150\051\026\151"}, - {0x0211, "\001\003\004\150\051\026\151"}, - {0x0212, "\001\005\004\150\160\352"}, - {0x0213, "\001\003\004\150\160\352"}, - {0x0214, "\001\005\004\107\051\026\151"}, - {0x0215, "\001\003\004\107\051\026\151"}, - {0x0216, "\001\005\004\107\160\352"}, - {0x0217, "\001\003\004\107\160\352"}, - {0x0250, "\001\003\004\046\260"}, - {0x0251, "\001\003\004\152"}, - {0x0252, "\001\003\004\152\260"}, - {0x0253, "\001\003\004\275\254"}, - {0x0254, "\001\003\004\050\371\307"}, - {0x0255, "\001\003\004\241\371\221"}, - {0x0256, "\001\003\004\225\342\371\067"}, - {0x0257, "\001\003\004\225\254"}, - {0x0258, "\001\003\004\060\336"}, - {0x0259, "\001\003\004\371\247"}, - {0x025A, "\001\003\004\371\247\100"}, - {0x025B, "\001\003\004\247"}, - {0x025C, "\001\003\004\247\336"}, - {0x025D, "\001\003\004\247\336\100"}, - {0x025E, "\001\003\004\247\336\372\252"}, - {0x025F, "\001\003\004\344\232\027\175"}, - {0x0260, "\001\003\004\227\254"}, - {0x0261, "\001\003\004\227\375\101"}, - {0x0262, "\001\004\371\033\005\227"}, - {0x0263, "\001\003\004\371\274"}, - {0x0264, "\001\003\004\144\371\274"}, - {0x0265, "\001\003\004\230\260"}, - {0x0266, "\001\003\004\230\254"}, - {0x0267, "\001\003\004\372\060\254"}, - {0x0268, "\001\003\004\072\175"}, - {0x0269, "\001\003\004\055"}, - {0x026A, "\001\004\371\033\005\072"}, - {0x026B, "\001\003\004\167\143\371\040"}, - {0x026C, "\001\003\004\167\377\051"}, - {0x026D, "\001\003\004\167\342\371\067"}, - {0x026E, "\001\003\004\376\053"}, - {0x026F, "\001\003\004\256\260"}, - {0x0270, "\001\003\004\256\372\260\260"}, - {0x0271, "\001\003\004\256\342\372\322"}, - {0x0272, "\001\003\004\213\342\040\042"}, - {0x0273, "\001\003\004\213\342\371\067"}, - {0x0274, "\001\004\371\033\005\213"}, - {0x0275, "\001\003\004\050\175"}, - {0x0276, "\001\004\371\033\005\371\041"}, - {0x0277, "\001\003\004\147\372\252"}, - {0x0278, "\001\003\004\372\123"}, - {0x0279, "\001\003\004\150\260"}, - {0x027A, "\001\003\004\150\372\134\260"}, - {0x027B, "\001\003\004\150\254\260"}, - {0x027C, "\001\003\004\150\372\134"}, - {0x027D, "\001\003\004\150\342\371\067"}, - {0x027E, "\001\003\004\150\232\372\257"}, - {0x027F, "\001\003\004\150\232\372\257\336"}, - {0x0280, "\001\004\371\033\005\150"}, - {0x0281, "\001\004\371\033\005\150\371\016"}, - {0x0282, "\001\003\004\207\342\371\067"}, - {0x0283, "\001\003\004\375\205"}, - {0x0284, "\001\003\004\344\232\027\175\254"}, - {0x0285, "\001\003\004\372\201\377\217\371\016"}, - {0x0286, "\001\003\004\372\201\371\221"}, - {0x0287, "\001\003\004\236\260"}, - {0x0288, "\001\003\004\236\342\371\067"}, - {0x0289, "\001\003\004\107\175"}, - {0x028A, "\001\003\004\214"}, - {0x028B, "\001\003\004\324\012\371\005"}, - {0x028C, "\001\003\004\324\260"}, - {0x028D, "\001\003\004\273\260"}, - {0x028E, "\001\003\004\240\260"}, - {0x028F, "\001\004\371\033\005\240"}, - {0x0290, "\001\003\004\243\342\371\067"}, - {0x0291, "\001\003\004\243\371\221"}, - {0x0292, "\001\003\004\371\143"}, - {0x0293, "\001\003\004\371\143\371\221"}, - {0x0294, "\001\004\371\076\012\371\102"}, - {0x0295, "\001\004\371\076\012\371\102\336"}, - {0x0296, "\001\004\371\076\012\371\102\371\016"}, - {0x0297, "\001\004\241\377\335"}, - {0x0298, "\001\004\371\343\374\364"}, - {0x0299, "\001\004\371\033\005\275"}, - {0x029A, "\001\003\004\247\372\252"}, - {0x029B, "\001\004\371\033\005\227\254"}, - {0x029C, "\001\004\371\033\005\230"}, - {0x029D, "\001\003\004\344\372\142\375\076"}, - {0x029E, "\001\003\004\301\260"}, - {0x029F, "\001\004\371\033\005\167"}, - {0x02A0, "\001\003\004\371\066\254"}, - {0x02A1, "\001\004\371\076\012\371\102\175"}, - {0x02A2, "\001\004\371\076\012\371\102\175\336"}, - {0x02A3, "\001\003\004\371\055\371\272"}, - {0x02A4, "\001\003\004\371\055\375\125"}, - {0x02A5, "\001\003\004\371\055\371\272\371\221"}, - {0x02A6, "\001\003\004\371\055\377\230"}, - {0x02A7, "\001\003\004\371\055\377\232"}, - {0x02A8, "\001\003\004\371\055\377\147\371\221"}, - {0x02B0, "\001\157\003\230"}, - {0x02B1, "\001\157\003\230\254"}, - {0x02B2, "\001\157\003\344"}, - {0x02B3, "\001\157\003\150"}, - {0x02B4, "\001\157\003\150\260"}, - {0x02B5, "\001\157\003\150\254\260"}, - {0x02B6, "\001\157\371\033\005\150\371\016"}, - {0x02B7, "\001\157\003\273"}, - {0x02B8, "\001\157\003\240"}, - {0x02B9, "\001\157\371\065"}, - {0x02BA, "\001\157\377\060"}, - {0x02BB, "\001\157\331\371\344"}, - {0x02BC, "\001\157\371\216"}, - {0x02BD, "\001\157\331\374\033"}, - {0x02BE, "\001\157\373\124\040\037"}, - {0x02BF, "\001\157\373\124\040\042"}, - {0x02C0, "\001\157\371\076\012\371\102"}, - {0x02C1, "\001\157\371\076\012\371\102\336"}, - {0x02C2, "\001\157\302\012\043\013\022\042"}, - {0x02C3, "\001\157\302\012\043\013\022\037"}, - {0x02C4, "\001\157\302\012\043\013\035\065"}, - {0x02C5, "\001\157\302\012\043\013\035\061"}, - {0x02C6, "\001\157\026\117"}, - {0x02C7, "\172"}, - {0x02C8, "\001\157\212\224"}, - {0x02C9, "\001\157\161"}, - {0x02CA, "\001\157\026\102"}, - {0x02CB, "\001\157\026\151"}, - {0x02CC, "\001\157\212\224\061"}, - {0x02CD, "\001\157\161\061"}, - {0x02CE, "\001\157\026\151\061"}, - {0x02CF, "\001\157\026\102\061"}, - {0x02D0, "\001\157\154\220\377\225"}, - {0x02D1, "\001\157\027\371\326"}, - {0x02D2, "\001\157\371\271\040\037\373\063"}, - {0x02D3, "\001\157\371\271\040\042\373\063"}, - {0x02D4, "\001\157\307\065"}, - {0x02D5, "\001\157\307\061"}, - {0x02D6, "\001\157\134\162"}, - {0x02D7, "\001\157\134\371\037"}, - {0x02D8, "\160"}, - {0x02D9, "\027\007\025"}, - {0x02DA, "\231\007\025"}, - {0x02DB, "\371\003"}, - {0x02DC, "\144\143"}, - {0x02DD, "\051\026\102"}, - {0x02DE, "\001\157\100\012\377\006"}, - {0x02E0, "\001\157\371\274\003"}, - {0x02E1, "\001\157\167\003"}, - {0x02E2, "\001\157\207\003"}, - {0x02E3, "\001\157\310\003"}, - {0x02E4, "\001\157\371\076\012\371\102\336\003"}, - {0x02E5, "\001\157\210\012\272\374\110\065"}, - {0x02E6, "\001\157\210\012\272\065"}, - {0x02E7, "\001\157\210\012\272\376\155"}, - {0x02E8, "\001\157\210\012\272\061"}, - {0x02E9, "\001\157\210\012\272\374\110\061"}, - {0x0300, "\023\026\151"}, - {0x0301, "\023\026\102"}, - {0x0302, "\023\026\117"}, - {0x0303, "\023\143"}, - {0x0304, "\023\161"}, - {0x0305, "\023\264\065"}, - {0x0306, "\023\160"}, - {0x0307, "\023\027\007\025"}, - {0x0308, "\023\141"}, - {0x0309, "\023\100\007\025"}, - {0x030A, "\023\231\007\025"}, - {0x030B, "\023\051\026\102"}, - {0x030C, "\023\172"}, - {0x030D, "\023\212\224\007\025"}, - {0x030E, "\023\051\212\224\007\025"}, - {0x030F, "\023\051\026\151"}, - {0x0310, "\023\371\264"}, - {0x0311, "\023\160\352"}, - {0x0312, "\023\331\371\344\007\025"}, - {0x0313, "\023\331\007\025"}, - {0x0314, "\023\331\374\033\007\025"}, - {0x0315, "\023\331\007\025\040\037"}, - {0x0316, "\023\026\151\032"}, - {0x0317, "\023\026\102\032"}, - {0x0318, "\023\307\042\032"}, - {0x0319, "\023\307\173\032"}, - {0x031A, "\023\371\263\042\007\025"}, - {0x031B, "\023\253"}, - {0x031C, "\023\371\271\042\032"}, - {0x031D, "\023\307\065\032"}, - {0x031E, "\023\307\061\032"}, - {0x031F, "\023\134\162\032"}, - {0x0320, "\023\134\371\037\032"}, - {0x0321, "\023\342\372\322\032"}, - {0x0322, "\023\342\371\067\032"}, - {0x0323, "\023\027\032"}, - {0x0324, "\023\141\032"}, - {0x0325, "\023\231\032"}, - {0x0326, "\023\331\271"}, - {0x0327, "\023\246"}, - {0x0328, "\023\371\003"}, - {0x0329, "\023\212\224\271"}, - {0x032A, "\023\373\375\032"}, - {0x032B, "\023\147\032"}, - {0x032C, "\023\172\032"}, - {0x032D, "\023\026\117\032"}, - {0x032E, "\023\160\271"}, - {0x032F, "\023\160\352\271"}, - {0x0330, "\023\143\032"}, - {0x0331, "\023\161\032"}, - {0x0332, "\023\264\032"}, - {0x0333, "\023\051\264\032"}, - {0x0334, "\023\143\372\050"}, - {0x0335, "\023\210\372\225\371\267"}, - {0x0336, "\023\210\372\103\371\267"}, - {0x0337, "\023\210\361\372\225\371\267"}, - {0x0338, "\023\210\361\372\103\371\267"}, - {0x0339, "\023\371\271\040\037\032"}, - {0x033A, "\023\373\375\371\016\032"}, - {0x033B, "\023\021\032"}, - {0x033C, "\023\376\154\271"}, - {0x033D, "\023\310\007\025"}, - {0x033E, "\023\143\145"}, - {0x033F, "\023\051\264\007\025"}, - {0x0340, "\023\153\012\272\151"}, - {0x0341, "\023\153\012\272\102"}, - {0x0342, "\023\277\165"}, - {0x0343, "\023\277\373\101"}, - {0x0344, "\023\277\341\330"}, - {0x0345, "\023\277\055\032"}, - {0x0360, "\023\051\143"}, - {0x0361, "\023\051\160\352"}, - {0x0374, "\134\373\327\277"}, - {0x0375, "\134\373\327\032\277"}, - {0x037A, "\074\277\055\032"}, - {0x037E, "\027\371\225\277"}, - {0x0384, "\074\277\330"}, - {0x0385, "\074\277\341\330"}, - {0x0386, "\001\005\014\152\330"}, - {0x0387, "\074\277\374\312\377\174"}, - {0x0388, "\001\005\014\247\330"}, - {0x0389, "\001\005\014\166\330"}, - {0x038A, "\001\005\014\055\330"}, - {0x038C, "\001\005\014\321\330"}, - {0x038E, "\001\005\014\214\330"}, - {0x038F, "\001\005\014\147\330"}, - {0x0390, "\001\003\014\055\341\011\330"}, - {0x0391, "\001\005\014\152"}, - {0x0392, "\001\005\014\372\211"}, - {0x0393, "\001\005\014\371\274"}, - {0x0394, "\001\005\014\371\270"}, - {0x0395, "\001\005\014\247"}, - {0x0396, "\001\005\014\373\142"}, - {0x0397, "\001\005\014\166"}, - {0x0398, "\001\005\014\372\371"}, - {0x0399, "\001\005\014\055"}, - {0x039A, "\001\005\014\372\274"}, - {0x039B, "\001\005\014\372\077"}, - {0x039C, "\001\005\014\371\001"}, - {0x039D, "\001\005\014\371\305"}, - {0x039E, "\001\005\014\374\132"}, - {0x039F, "\001\005\014\321"}, - {0x03A0, "\001\005\014\371\310"}, - {0x03A1, "\001\005\014\371\171"}, - {0x03A3, "\001\005\014\372\153"}, - {0x03A4, "\001\005\014\374\073"}, - {0x03A5, "\001\005\014\214"}, - {0x03A6, "\001\005\014\372\123"}, - {0x03A7, "\001\005\014\372\301"}, - {0x03A8, "\001\005\014\372\135"}, - {0x03A9, "\001\005\014\147"}, - {0x03AA, "\001\005\014\055\341"}, - {0x03AB, "\001\005\014\214\341"}, - {0x03AC, "\001\003\014\152\330"}, - {0x03AD, "\001\003\014\247\330"}, - {0x03AE, "\001\003\014\166\330"}, - {0x03AF, "\001\003\014\055\330"}, - {0x03B0, "\001\003\014\214\341\011\330"}, - {0x03B1, "\001\003\014\152"}, - {0x03B2, "\001\003\014\372\211"}, - {0x03B3, "\001\003\014\371\274"}, - {0x03B4, "\001\003\014\371\270"}, - {0x03B5, "\001\003\014\247"}, - {0x03B6, "\001\003\014\373\142"}, - {0x03B7, "\001\003\014\166"}, - {0x03B8, "\001\003\014\372\371"}, - {0x03B9, "\001\003\014\055"}, - {0x03BA, "\001\003\014\372\274"}, - {0x03BB, "\001\003\014\372\077"}, - {0x03BC, "\001\003\014\371\001"}, - {0x03BD, "\001\003\014\371\305"}, - {0x03BE, "\001\003\014\374\132"}, - {0x03BF, "\001\003\014\321"}, - {0x03C0, "\001\003\014\371\310"}, - {0x03C1, "\001\003\014\371\171"}, - {0x03C2, "\001\003\014\372\153\016"}, - {0x03C3, "\001\003\014\372\153"}, - {0x03C4, "\001\003\014\374\073"}, - {0x03C5, "\001\003\014\214"}, - {0x03C6, "\001\003\014\372\123"}, - {0x03C7, "\001\003\014\372\301"}, - {0x03C8, "\001\003\014\372\135"}, - {0x03C9, "\001\003\014\147"}, - {0x03CA, "\001\003\014\055\341"}, - {0x03CB, "\001\003\014\214\341"}, - {0x03CC, "\001\003\014\321\330"}, - {0x03CD, "\001\003\014\214\330"}, - {0x03CE, "\001\003\014\147\330"}, - {0x03D0, "\015\277\372\211"}, - {0x03D1, "\015\277\372\371"}, - {0x03D2, "\015\277\214\100"}, - {0x03D3, "\015\277\214\026\102\011\100"}, - {0x03D4, "\015\277\214\141\011\100"}, - {0x03D5, "\015\277\372\123"}, - {0x03D6, "\015\277\371\310"}, - {0x03DA, "\001\014\377\125"}, - {0x03DC, "\001\014\375\144"}, - {0x03DE, "\001\014\372\303"}, - {0x03E0, "\001\014\377\050"}, - {0x03E2, "\001\005\366\374\037\372\203"}, - {0x03E3, "\001\003\366\374\037"}, - {0x03E4, "\001\005\366\373\161"}, - {0x03E5, "\001\003\366\373\161"}, - {0x03E6, "\001\005\366\373\253"}, - {0x03E7, "\001\003\366\373\253"}, - {0x03E8, "\001\005\366\373\227"}, - {0x03E9, "\001\003\366\373\227"}, - {0x03EA, "\001\005\366\373\212\372\203"}, - {0x03EB, "\001\003\366\373\212"}, - {0x03EC, "\001\005\366\374\040\372\203"}, - {0x03ED, "\001\003\366\374\040"}, - {0x03EE, "\001\005\366\373\122"}, - {0x03EF, "\001\003\366\373\122"}, - {0x03F0, "\015\277\372\274"}, - {0x03F1, "\015\277\371\171"}, - {0x03F2, "\015\277\376\070\372\153"}, - {0x03F3, "\001\014\377\311"}, - {0x0401, "\001\005\024\373\241"}, - {0x0402, "\001\005\024\372\056\372\151"}, - {0x0403, "\001\005\024\373\214"}, - {0x0404, "\001\005\024\375\337\374\111"}, - {0x0405, "\001\005\024\372\057"}, - {0x0406, "\001\005\024\072\373\053"}, - {0x0407, "\001\005\024\372\174"}, - {0x0408, "\001\005\024\372\056"}, - {0x0409, "\001\005\024\376\052"}, - {0x040A, "\001\005\024\376\176"}, - {0x040B, "\001\005\024\353\372\151"}, - {0x040C, "\001\005\024\373\256"}, - {0x040E, "\001\005\024\114\371\130\373\052"}, - {0x040F, "\001\005\024\373\121"}, - {0x0410, "\001\005\024\046"}, - {0x0411, "\001\005\024\373\056"}, - {0x0412, "\001\005\024\374\126"}, - {0x0413, "\001\005\024\371\060"}, - {0x0414, "\001\005\024\373\143"}, - {0x0415, "\001\005\024\371\235"}, - {0x0416, "\001\005\024\371\153"}, - {0x0417, "\001\005\024\371\333"}, - {0x0418, "\001\005\024\072"}, - {0x0419, "\001\005\024\072\371\130"}, - {0x041A, "\001\005\024\244"}, - {0x041B, "\001\005\024\373\150"}, - {0x041C, "\001\005\024\373\151"}, - {0x041D, "\001\005\024\371\144"}, - {0x041E, "\001\005\024\050"}, - {0x041F, "\001\005\024\372\137"}, - {0x0420, "\001\005\024\373\155"}, - {0x0421, "\001\005\024\371\360"}, - {0x0422, "\001\005\024\371\327"}, - {0x0423, "\001\005\024\114"}, - {0x0424, "\001\005\024\373\146"}, - {0x0425, "\001\005\024\371\062"}, - {0x0426, "\001\005\024\372\167"}, - {0x0427, "\001\005\024\353"}, - {0x0428, "\001\005\024\371\020"}, - {0x0429, "\001\005\024\373\071"}, - {0x042A, "\134\005\024\372\246"}, - {0x042B, "\001\005\024\372\176"}, - {0x042C, "\134\005\024\012\373\306\012\373\076"}, - {0x042D, "\001\005\024\371\260"}, - {0x042E, "\001\005\024\373\242"}, - {0x042F, "\001\005\024\373\232"}, - {0x0430, "\001\003\024\046"}, - {0x0431, "\001\003\024\373\056"}, - {0x0432, "\001\003\024\374\126"}, - {0x0433, "\001\003\024\371\060"}, - {0x0434, "\001\003\024\373\143"}, - {0x0435, "\001\003\024\371\235"}, - {0x0436, "\001\003\024\371\153"}, - {0x0437, "\001\003\024\371\333"}, - {0x0438, "\001\003\024\072"}, - {0x0439, "\001\003\024\072\371\130"}, - {0x043A, "\001\003\024\244"}, - {0x043B, "\001\003\024\373\150"}, - {0x043C, "\001\003\024\373\151"}, - {0x043D, "\001\003\024\371\144"}, - {0x043E, "\001\003\024\050"}, - {0x043F, "\001\003\024\372\137"}, - {0x0440, "\001\003\024\373\155"}, - {0x0441, "\001\003\024\371\360"}, - {0x0442, "\001\003\024\371\327"}, - {0x0443, "\001\003\024\114"}, - {0x0444, "\001\003\024\373\146"}, - {0x0445, "\001\003\024\371\062"}, - {0x0446, "\001\003\024\372\167"}, - {0x0447, "\001\003\024\353"}, - {0x0448, "\001\003\024\371\020"}, - {0x0449, "\001\003\024\373\071"}, - {0x044A, "\134\003\024\372\246"}, - {0x044B, "\001\003\024\372\176"}, - {0x044C, "\134\003\024\012\373\306\012\373\076"}, - {0x044D, "\001\003\024\371\260"}, - {0x044E, "\001\003\024\373\242"}, - {0x044F, "\001\003\024\373\232"}, - {0x0451, "\001\003\024\373\241"}, - {0x0452, "\001\003\024\372\056\372\151"}, - {0x0453, "\001\003\024\373\214"}, - {0x0454, "\001\003\024\371\235\374\111"}, - {0x0455, "\001\003\024\372\057"}, - {0x0456, "\001\003\024\072\373\053"}, - {0x0457, "\001\003\024\372\174"}, - {0x0458, "\001\003\024\372\056"}, - {0x0459, "\001\003\024\376\061"}, - {0x045A, "\001\003\024\376\207"}, - {0x045B, "\001\003\024\353\372\151"}, - {0x045C, "\001\003\024\373\256"}, - {0x045E, "\001\003\024\114\371\130\373\052"}, - {0x045F, "\001\003\024\373\121"}, - {0x0460, "\001\005\024\147"}, - {0x0461, "\001\003\024\147"}, - {0x0462, "\001\005\024\374\133"}, - {0x0463, "\001\003\024\374\133"}, - {0x0464, "\001\005\024\371\260\371\276"}, - {0x0465, "\001\003\024\371\260\371\276"}, - {0x0466, "\001\005\024\144\371\211"}, - {0x0467, "\001\003\024\144\371\211"}, - {0x0468, "\001\005\024\144\371\211\371\276"}, - {0x0469, "\001\003\024\144\371\211\371\276"}, - {0x046A, "\001\005\024\262\371\211"}, - {0x046B, "\001\003\024\262\371\211"}, - {0x046C, "\001\005\024\262\371\211\371\276"}, - {0x046D, "\001\003\024\262\371\211\371\276"}, - {0x046E, "\001\005\024\373\257"}, - {0x046F, "\001\003\024\373\257"}, - {0x0470, "\001\005\024\372\135"}, - {0x0471, "\001\003\024\372\135"}, - {0x0472, "\001\005\024\373\167"}, - {0x0473, "\001\003\024\373\167"}, - {0x0474, "\001\005\024\372\071"}, - {0x0475, "\001\003\024\372\071"}, - {0x0476, "\001\005\024\372\071\051\026\151"}, - {0x0477, "\001\003\024\372\071\051\026\151"}, - {0x0478, "\001\005\024\373\343"}, - {0x0479, "\001\003\024\373\343"}, - {0x047A, "\001\005\024\147\231"}, - {0x047B, "\001\003\024\147\231"}, - {0x047C, "\001\005\024\147\372\373"}, - {0x047D, "\001\003\024\147\372\373"}, - {0x047E, "\001\005\024\373\342"}, - {0x047F, "\001\003\024\373\342"}, - {0x0480, "\001\005\024\372\303"}, - {0x0481, "\001\003\024\372\303"}, - {0x0482, "\134\024\373\277"}, - {0x0483, "\023\024\372\373"}, - {0x0484, "\023\024\012\376\266"}, - {0x0485, "\023\024\101\373\373"}, - {0x0486, "\023\024\115\373\373"}, - {0x0490, "\001\005\024\371\060\372\260"}, - {0x0491, "\001\003\024\371\060\372\260"}, - {0x0492, "\001\005\024\371\060\175"}, - {0x0493, "\001\003\024\371\060\175"}, - {0x0494, "\001\005\024\371\060\100\371\040"}, - {0x0495, "\001\003\024\371\060\100\371\040"}, - {0x0496, "\001\005\024\371\153\320"}, - {0x0497, "\001\003\024\371\153\320"}, - {0x0498, "\001\005\024\371\333\320"}, - {0x0499, "\001\003\024\371\333\320"}, - {0x049A, "\001\005\024\244\320"}, - {0x049B, "\001\003\024\244\320"}, - {0x049C, "\001\005\024\244\210\224"}, - {0x049D, "\001\003\024\244\210\224"}, - {0x049E, "\001\005\024\244\175"}, - {0x049F, "\001\003\024\244\175"}, - {0x04A0, "\001\005\024\244\373\044"}, - {0x04A1, "\001\003\024\244\373\044"}, - {0x04A2, "\001\005\024\371\144\320"}, - {0x04A3, "\001\003\024\371\144\320"}, - {0x04A4, "\006\024\005\371\144\371\060"}, - {0x04A5, "\006\024\003\371\144\371\060"}, - {0x04A6, "\001\005\024\372\137\100\371\040"}, - {0x04A7, "\001\003\024\372\137\100\371\040"}, - {0x04A8, "\001\005\024\333\371\126"}, - {0x04A9, "\001\003\024\333\371\126"}, - {0x04AA, "\001\005\024\371\360\320"}, - {0x04AB, "\001\003\024\371\360\320"}, - {0x04AC, "\001\005\024\371\327\320"}, - {0x04AD, "\001\003\024\371\327\320"}, - {0x04AE, "\001\005\024\114\173"}, - {0x04AF, "\001\003\024\114\173"}, - {0x04B0, "\001\005\024\114\173\175"}, - {0x04B1, "\001\003\024\114\173\175"}, - {0x04B2, "\001\005\024\333\320"}, - {0x04B3, "\001\003\024\333\320"}, - {0x04B4, "\006\005\024\371\327\372\167"}, - {0x04B5, "\006\003\024\371\327\372\167"}, - {0x04B6, "\001\005\024\353\320"}, - {0x04B7, "\001\003\024\353\320"}, - {0x04B8, "\001\005\024\353\210\224"}, - {0x04B9, "\001\003\024\353\210\224"}, - {0x04BA, "\001\005\024\374\045"}, - {0x04BB, "\001\003\024\374\045"}, - {0x04BC, "\001\005\024\353\371\126"}, - {0x04BD, "\001\003\024\353\371\126"}, - {0x04BE, "\001\005\024\353\371\126\320"}, - {0x04BF, "\001\003\024\353\371\126\320"}, - {0x04C0, "\001\024\376\267"}, - {0x04C1, "\001\005\024\371\153\160"}, - {0x04C2, "\001\003\024\371\153\160"}, - {0x04C3, "\001\005\024\244\100"}, - {0x04C4, "\001\003\024\244\100"}, - {0x04C7, "\001\005\024\371\144\100"}, - {0x04C8, "\001\003\024\371\144\100"}, - {0x04CB, "\001\005\024\353\373\252"}, - {0x04CC, "\001\003\024\353\373\252"}, - {0x04D0, "\001\005\024\046\160"}, - {0x04D1, "\001\003\024\046\160"}, - {0x04D2, "\001\005\024\046\141"}, - {0x04D3, "\001\003\024\046\141"}, - {0x04D4, "\006\005\024\046\371\235"}, - {0x04D5, "\006\003\024\046\371\235"}, - {0x04D6, "\001\005\024\371\235\160"}, - {0x04D7, "\001\003\024\371\235\160"}, - {0x04D8, "\001\005\024\371\247"}, - {0x04D9, "\001\003\024\371\247"}, - {0x04DA, "\001\005\024\371\247\141"}, - {0x04DB, "\001\003\024\371\247\141"}, - {0x04DC, "\001\005\024\371\153\141"}, - {0x04DD, "\001\003\024\371\153\141"}, - {0x04DE, "\001\005\024\371\333\141"}, - {0x04DF, "\001\003\024\371\333\141"}, - {0x04E0, "\001\005\024\372\057\371\126"}, - {0x04E1, "\001\003\024\372\057\371\126"}, - {0x04E2, "\001\005\024\072\161"}, - {0x04E3, "\001\003\024\072\161"}, - {0x04E4, "\001\005\024\072\141"}, - {0x04E5, "\001\003\024\072\141"}, - {0x04E6, "\001\005\024\050\141"}, - {0x04E7, "\001\003\024\050\141"}, - {0x04E8, "\001\005\024\050\175"}, - {0x04E9, "\001\003\024\050\175"}, - {0x04EA, "\001\005\024\050\175\141"}, - {0x04EB, "\001\003\024\050\175\141"}, - {0x04EE, "\001\005\024\114\161"}, - {0x04EF, "\001\003\024\114\161"}, - {0x04F0, "\001\005\024\114\141"}, - {0x04F1, "\001\003\024\114\141"}, - {0x04F2, "\001\005\024\114\051\026\102"}, - {0x04F3, "\001\003\024\114\051\026\102"}, - {0x04F4, "\001\005\024\353\141"}, - {0x04F5, "\001\003\024\353\141"}, - {0x04F8, "\001\005\024\372\176\141"}, - {0x04F9, "\001\003\024\372\176\141"}, - {0x0531, "\001\005\076\373\026"}, - {0x0532, "\001\005\076\373\051"}, - {0x0533, "\001\005\076\373\213"}, - {0x0534, "\001\005\076\371\013"}, - {0x0535, "\001\005\076\372\072"}, - {0x0536, "\001\005\076\364"}, - {0x0537, "\001\005\076\060"}, - {0x0538, "\001\005\076\373\246"}, - {0x0539, "\001\005\076\374\077"}, - {0x053A, "\001\005\076\373\245"}, - {0x053B, "\001\005\076\072"}, - {0x053C, "\001\005\076\373\266"}, - {0x053D, "\001\005\076\372\215"}, - {0x053E, "\001\005\076\373\141"}, - {0x053F, "\001\005\076\373\255"}, - {0x0540, "\001\005\076\373\231"}, - {0x0541, "\001\005\076\373\140"}, - {0x0542, "\001\005\076\373\205"}, - {0x0543, "\001\005\076\374\074"}, - {0x0544, "\001\005\076\371\303"}, - {0x0545, "\001\005\076\372\174"}, - {0x0546, "\001\005\076\372\115"}, - {0x0547, "\001\005\076\371\054"}, - {0x0548, "\001\005\076\373\002"}, - {0x0549, "\001\005\076\371\020"}, - {0x054A, "\001\005\076\371\116"}, - {0x054B, "\001\005\076\373\136"}, - {0x054C, "\001\005\076\345"}, - {0x054D, "\001\005\076\371\320"}, - {0x054E, "\001\005\076\372\377"}, - {0x054F, "\001\005\076\374\103"}, - {0x0550, "\001\005\076\371\315"}, - {0x0551, "\001\005\076\372\222"}, - {0x0552, "\001\005\076\373\007"}, - {0x0553, "\001\005\076\373\356"}, - {0x0554, "\001\005\076\371\236"}, - {0x0555, "\001\005\076\373\334"}, - {0x0556, "\001\005\076\373\160"}, - {0x0559, "\001\157\076\371\271\042"}, - {0x055A, "\371\216\076"}, - {0x055B, "\134\372\230\371\336"}, - {0x055C, "\027\371\132\371\336"}, - {0x055D, "\331\076"}, - {0x055E, "\027\371\225\371\336"}, - {0x055F, "\015\375\104\371\336"}, - {0x0561, "\001\003\076\373\026"}, - {0x0562, "\001\003\076\373\051"}, - {0x0563, "\001\003\076\373\213"}, - {0x0564, "\001\003\076\371\013"}, - {0x0565, "\001\003\076\372\072"}, - {0x0566, "\001\003\076\364"}, - {0x0567, "\001\003\076\060"}, - {0x0568, "\001\003\076\373\246"}, - {0x0569, "\001\003\076\374\077"}, - {0x056A, "\001\003\076\373\245"}, - {0x056B, "\001\003\076\072"}, - {0x056C, "\001\003\076\373\266"}, - {0x056D, "\001\003\076\372\215"}, - {0x056E, "\001\003\076\373\141"}, - {0x056F, "\001\003\076\373\255"}, - {0x0570, "\001\003\076\373\231"}, - {0x0571, "\001\003\076\373\140"}, - {0x0572, "\001\003\076\373\205"}, - {0x0573, "\001\003\076\374\074"}, - {0x0574, "\001\003\076\371\303"}, - {0x0575, "\001\003\076\372\174"}, - {0x0576, "\001\003\076\372\115"}, - {0x0577, "\001\003\076\371\054"}, - {0x0578, "\001\003\076\373\002"}, - {0x0579, "\001\003\076\371\020"}, - {0x057A, "\001\003\076\371\116"}, - {0x057B, "\001\003\076\373\136"}, - {0x057C, "\001\003\076\345"}, - {0x057D, "\001\003\076\371\320"}, - {0x057E, "\001\003\076\372\377"}, - {0x057F, "\001\003\076\374\103"}, - {0x0580, "\001\003\076\371\315"}, - {0x0581, "\001\003\076\372\222"}, - {0x0582, "\001\003\076\373\007"}, - {0x0583, "\001\003\076\373\356"}, - {0x0584, "\001\003\076\371\236"}, - {0x0585, "\001\003\076\373\334"}, - {0x0586, "\001\003\076\373\160"}, - {0x0587, "\006\003\076\372\072\373\007"}, - {0x0589, "\027\371\336"}, - {0x05B0, "\027\343\375\031"}, - {0x05B1, "\027\343\372\261\374\042"}, - {0x05B2, "\027\343\372\261\372\122"}, - {0x05B3, "\027\343\372\261\372\333"}, - {0x05B4, "\027\343\375\304"}, - {0x05B5, "\027\343\377\231"}, - {0x05B6, "\027\343\374\042"}, - {0x05B7, "\027\343\372\122"}, - {0x05B8, "\027\343\372\333"}, - {0x05B9, "\027\343\373\226"}, - {0x05BB, "\027\343\376\033"}, - {0x05BC, "\027\343\276\114\372\307"}, - {0x05BD, "\027\343\376\120"}, - {0x05BE, "\371\311\110\376\104"}, - {0x05BF, "\027\343\372\143"}, - {0x05C0, "\371\311\110\376\275"}, - {0x05C1, "\027\343\371\074"}, - {0x05C2, "\027\343\372\353"}, - {0x05C3, "\371\311\110\377\110\376\277"}, - {0x05D0, "\001\110\371\262"}, - {0x05D1, "\001\110\372\044"}, - {0x05D2, "\001\110\373\220"}, - {0x05D3, "\001\110\372\052"}, - {0x05D4, "\001\110\371\104"}, - {0x05D5, "\001\110\372\030"}, - {0x05D6, "\001\110\374\145"}, - {0x05D7, "\001\110\375\302"}, - {0x05D8, "\001\110\374\075"}, - {0x05D9, "\001\110\371\332"}, - {0x05DA, "\001\110\205\016"}, - {0x05DB, "\001\110\205"}, - {0x05DC, "\001\110\372\100"}, - {0x05DD, "\001\110\372\107\016"}, - {0x05DE, "\001\110\372\107"}, - {0x05DF, "\001\110\372\320\016"}, - {0x05E0, "\001\110\372\320"}, - {0x05E1, "\001\110\377\046"}, - {0x05E2, "\001\110\373\042"}, - {0x05E3, "\001\110\371\116\016"}, - {0x05E4, "\001\110\371\116"}, - {0x05E5, "\001\110\372\375\016"}, - {0x05E6, "\001\110\372\375"}, - {0x05E7, "\001\110\374\005"}, - {0x05E8, "\001\110\372\337"}, - {0x05E9, "\001\110\371\074"}, - {0x05EA, "\001\110\372\367"}, - {0x05F0, "\006\110\372\175\051\372\030"}, - {0x05F1, "\006\110\372\175\372\030\371\332"}, - {0x05F2, "\006\110\372\175\051\371\332"}, - {0x05F3, "\371\311\110\375\251"}, - {0x05F4, "\371\311\110\375\250"}, - {0x060C, "\331\002"}, - {0x061B, "\372\010\002"}, - {0x061F, "\027\371\225\002"}, - {0x0621, "\001\002\126"}, - {0x0622, "\001\002\054\371\302\007\025"}, - {0x0623, "\001\002\054\126\007\025"}, - {0x0624, "\001\002\371\035\126\007\025"}, - {0x0625, "\001\002\054\126\032"}, - {0x0626, "\001\002\041\126\007\025"}, - {0x0627, "\001\002\054"}, - {0x0628, "\001\002\251"}, - {0x0629, "\001\002\174\372\105"}, - {0x062A, "\001\002\174"}, - {0x062B, "\001\002\337"}, - {0x062C, "\001\002\066"}, - {0x062D, "\001\002\064"}, - {0x062E, "\001\002\137"}, - {0x062F, "\001\002\371\134"}, - {0x0630, "\001\002\372\054"}, - {0x0631, "\001\002\257"}, - {0x0632, "\001\002\371\124"}, - {0x0633, "\001\002\201"}, - {0x0634, "\001\002\206"}, - {0x0635, "\001\002\263"}, - {0x0636, "\001\002\266"}, - {0x0637, "\001\002\327"}, - {0x0638, "\001\002\371\212"}, - {0x0639, "\001\002\312"}, - {0x063A, "\001\002\350"}, - {0x0640, "\374\072\002"}, - {0x0641, "\001\002\261"}, - {0x0642, "\001\002\323"}, - {0x0643, "\001\002\205"}, - {0x0644, "\001\002\155"}, - {0x0645, "\001\002\033"}, - {0x0646, "\001\002\164"}, - {0x0647, "\001\002\171"}, - {0x0648, "\001\002\371\035"}, - {0x0649, "\001\002\054\124"}, - {0x064A, "\001\002\041"}, - {0x064B, "\371\363\002"}, - {0x064C, "\372\233\002"}, - {0x064D, "\372\300\002"}, - {0x064E, "\371\362\002"}, - {0x064F, "\371\347\002"}, - {0x0650, "\371\372\002"}, - {0x0651, "\375\025\002"}, - {0x0652, "\372\360\002"}, - {0x0660, "\017\314\311"}, - {0x0661, "\017\314\132"}, - {0x0662, "\017\314\154"}, - {0x0663, "\017\314\131"}, - {0x0664, "\017\314\200"}, - {0x0665, "\017\314\203"}, - {0x0666, "\017\314\233"}, - {0x0667, "\017\314\221"}, - {0x0668, "\017\314\204"}, - {0x0669, "\017\314\235"}, - {0x066A, "\015\335\371\223\002"}, - {0x066B, "\371\007\375\161\002"}, - {0x066C, "\371\007\373\277\002"}, - {0x066D, "\303\040\203\365\002"}, - {0x0670, "\001\002\054\007\025"}, - {0x0671, "\001\002\054\373\003"}, - {0x0672, "\001\002\054\126\373\337\007\025"}, - {0x0673, "\001\002\054\126\373\337\032"}, - {0x0674, "\001\002\126\372\035"}, - {0x0675, "\001\002\054\126\372\035"}, - {0x0676, "\001\002\371\035\126\372\035"}, - {0x0677, "\001\002\114\126\372\035"}, - {0x0678, "\001\002\041\126\372\035"}, - {0x0679, "\001\002\372\025"}, - {0x067A, "\001\002\372\026"}, - {0x067B, "\001\002\371\337"}, - {0x067C, "\001\002\174\231"}, - {0x067D, "\001\002\174\131\220\007\025\245\013\035\061"}, - {0x067E, "\001\002\372\005"}, - {0x067F, "\001\002\372\021"}, - {0x0680, "\001\002\371\340"}, - {0x0681, "\001\002\064\126\007\025"}, - {0x0682, "\001\002\064\154\220\374\300\373\001\371\217\373\127"}, - {0x0683, "\001\002\372\001"}, - {0x0684, "\001\002\371\356"}, - {0x0685, "\001\002\064\131\220\007\025"}, - {0x0686, "\001\002\372\020"}, - {0x0687, "\001\002\372\017"}, - {0x0688, "\001\002\372\235"}, - {0x0689, "\001\002\371\134\231"}, - {0x068A, "\001\002\371\134\027\032"}, - {0x068B, "\001\002\371\134\027\032\011\144\377\143"}, - {0x068C, "\001\002\372\232"}, - {0x068D, "\001\002\372\234"}, - {0x068E, "\001\002\372\245"}, - {0x068F, "\001\002\371\134\131\220\007\025\245\013\035\061"}, - {0x0690, "\001\002\371\134\200\220\007\025"}, - {0x0691, "\001\002\372\351"}, - {0x0692, "\001\002\257\144\324"}, - {0x0693, "\001\002\257\231"}, - {0x0694, "\001\002\257\027\032"}, - {0x0695, "\001\002\257\144\324\032"}, - {0x0696, "\001\002\257\027\032\011\027\007\025"}, - {0x0697, "\001\002\257\154\220\007\025"}, - {0x0698, "\001\002\372\272"}, - {0x0699, "\001\002\257\200\220\007\025"}, - {0x069A, "\001\002\201\027\032\011\027\007\025"}, - {0x069B, "\001\002\201\131\220\371\251"}, - {0x069C, "\001\002\201\131\220\371\251\011\131\220\007\025"}, - {0x069D, "\001\002\263\154\220\371\251"}, - {0x069E, "\001\002\263\131\220\007\025"}, - {0x069F, "\001\002\327\131\220\007\025"}, - {0x06A0, "\001\002\312\131\220\007\025"}, - {0x06A1, "\001\002\261\232\027"}, - {0x06A2, "\001\002\261\027\375\136"}, - {0x06A3, "\001\002\261\027\032"}, - {0x06A4, "\001\002\372\027"}, - {0x06A5, "\001\002\261\131\220\371\251"}, - {0x06A6, "\001\002\372\006"}, - {0x06A7, "\001\002\323\027\007\025"}, - {0x06A8, "\001\002\323\131\220\007\025"}, - {0x06A9, "\001\002\371\373"}, - {0x06AA, "\001\002\205\377\326"}, - {0x06AB, "\001\002\205\231"}, - {0x06AC, "\001\002\205\027\007\025"}, - {0x06AD, "\001\002\371\304"}, - {0x06AE, "\001\002\205\131\220\371\251"}, - {0x06AF, "\001\002\371\145"}, - {0x06B0, "\001\002\371\145\231"}, - {0x06B1, "\001\002\371\375"}, - {0x06B2, "\001\002\371\145\154\220\371\251"}, - {0x06B3, "\001\002\371\365"}, - {0x06B4, "\001\002\371\145\131\220\007\025"}, - {0x06B5, "\001\002\155\144\324"}, - {0x06B6, "\001\002\155\027\007\025"}, - {0x06B7, "\001\002\155\131\220\007\025"}, - {0x06BA, "\001\002\164\372\256"}, - {0x06BB, "\001\002\372\014"}, - {0x06BC, "\001\002\164\231"}, - {0x06BD, "\001\002\164\131\220\007\025"}, - {0x06BE, "\001\002\171\371\355"}, - {0x06C0, "\001\002\171\041\007\025"}, - {0x06C1, "\001\002\171\371\232"}, - {0x06C2, "\001\002\171\371\232\126\007\025"}, - {0x06C3, "\372\105\371\232"}, - {0x06C4, "\001\002\371\035\231"}, - {0x06C5, "\001\002\371\036\371\041"}, - {0x06C6, "\001\002\371\041"}, - {0x06C7, "\001\002\107"}, - {0x06C8, "\001\002\371\051"}, - {0x06C9, "\001\002\371\036\371\051"}, - {0x06CA, "\001\002\371\035\154\220\007\025"}, - {0x06CB, "\001\002\372\172"}, - {0x06CC, "\001\002\371\273\041"}, - {0x06CD, "\001\002\041\372\142"}, - {0x06CE, "\001\002\041\144\324"}, - {0x06D0, "\001\002\060"}, - {0x06D1, "\001\002\041\131\220\371\251"}, - {0x06D2, "\001\002\041\175"}, - {0x06D3, "\001\002\041\175\126\007\025"}, - {0x06D4, "\027\002"}, - {0x06D5, "\001\002\372\036"}, - {0x06D6, "\006\002\003\263\007\025\155\054\124"}, - {0x06D7, "\006\002\003\323\007\025\155\054\124"}, - {0x06D8, "\001\002\003\033\007\025\036"}, - {0x06D9, "\001\002\003\054\155\007\025"}, - {0x06DA, "\001\002\003\066\007\025"}, - {0x06DB, "\131\220\007\025\002"}, - {0x06DC, "\001\002\003\201\007\025"}, - {0x06DD, "\070\012\374\347\002"}, - {0x06DE, "\371\142\012\377\024\375\175\375\305\002"}, - {0x06DF, "\311\374\322\007\025\002"}, - {0x06E0, "\311\377\001\007\025\002"}, - {0x06E1, "\376\272\375\275\012\137\232\027\007\025\002"}, - {0x06E2, "\001\002\003\033\007\025\020"}, - {0x06E3, "\001\002\003\201\032"}, - {0x06E4, "\001\002\003\371\302\007\025"}, - {0x06E5, "\001\002\003\371\035"}, - {0x06E6, "\001\002\003\041"}, - {0x06E7, "\001\002\003\041\007\025"}, - {0x06E8, "\001\002\003\164\007\025"}, - {0x06E9, "\376\334\012\377\041\002"}, - {0x06EA, "\027\371\012\032\002"}, - {0x06EB, "\027\371\012\007\025\002"}, - {0x06EC, "\027\373\371\032\002"}, - {0x06ED, "\001\002\003\033\032"}, - {0x06F0, "\017\314\371\073\311"}, - {0x06F1, "\017\314\371\073\132"}, - {0x06F2, "\017\314\371\073\154"}, - {0x06F3, "\017\314\371\073\131"}, - {0x06F4, "\017\314\371\073\200"}, - {0x06F5, "\017\314\371\073\203"}, - {0x06F6, "\017\314\371\073\233"}, - {0x06F7, "\017\314\371\073\221"}, - {0x06F8, "\017\314\371\073\204"}, - {0x06F9, "\017\314\371\073\235"}, - {0x0901, "\015\057\371\264"}, - {0x0902, "\015\057\374\313"}, - {0x0903, "\015\057\371\210"}, - {0x0905, "\001\057\046"}, - {0x0906, "\001\057\313"}, - {0x0907, "\001\057\072"}, - {0x0908, "\001\057\317"}, - {0x0909, "\001\057\114"}, - {0x090A, "\001\057\322"}, - {0x090B, "\001\057\150\176"}, - {0x090C, "\001\057\167\176"}, - {0x090D, "\001\057\060\371\131"}, - {0x090E, "\001\057\060\371\130"}, - {0x090F, "\001\057\060"}, - {0x0910, "\001\057\250"}, - {0x0911, "\001\057\050\371\131"}, - {0x0912, "\001\057\050\371\130"}, - {0x0913, "\001\057\050"}, - {0x0914, "\001\057\274"}, - {0x0915, "\001\057\244"}, - {0x0916, "\001\057\371\062"}, - {0x0917, "\001\057\371\057"}, - {0x0918, "\001\057\371\146"}, - {0x0919, "\001\057\371\114"}, - {0x091A, "\001\057\371\020"}, - {0x091B, "\001\057\371\202"}, - {0x091C, "\001\057\371\100"}, - {0x091D, "\001\057\371\227"}, - {0x091E, "\001\057\371\125"}, - {0x091F, "\001\057\371\120"}, - {0x0920, "\001\057\371\206"}, - {0x0921, "\001\057\371\135"}, - {0x0922, "\001\057\371\136"}, - {0x0923, "\001\057\371\115"}, - {0x0924, "\001\057\371\017"}, - {0x0925, "\001\057\371\203"}, - {0x0926, "\001\057\371\013"}, - {0x0927, "\001\057\371\140"}, - {0x0928, "\001\057\371\002"}, - {0x0929, "\001\057\373\322"}, - {0x092A, "\001\057\371\015"}, - {0x092B, "\001\057\371\167"}, - {0x092C, "\001\057\371\053"}, - {0x092D, "\001\057\371\127"}, - {0x092E, "\001\057\360"}, - {0x092F, "\001\057\332"}, - {0x0930, "\001\057\345"}, - {0x0931, "\001\057\371\173"}, - {0x0932, "\001\057\022"}, - {0x0933, "\001\057\371\157"}, - {0x0934, "\001\057\372\305"}, - {0x0935, "\001\057\371\207"}, - {0x0936, "\001\057\371\054"}, - {0x0937, "\001\057\371\176"}, - {0x0938, "\001\057\364"}, - {0x0939, "\001\057\333"}, - {0x093C, "\015\057\371\377"}, - {0x093D, "\015\057\372\207"}, - {0x093E, "\044\023\057\313"}, - {0x093F, "\044\023\057\072"}, - {0x0940, "\044\023\057\317"}, - {0x0941, "\044\023\057\114"}, - {0x0942, "\044\023\057\322"}, - {0x0943, "\044\023\057\150\176"}, - {0x0944, "\044\023\057\371\034\176"}, - {0x0945, "\044\023\057\060\371\131"}, - {0x0946, "\044\023\057\060\371\130"}, - {0x0947, "\044\023\057\060"}, - {0x0948, "\044\023\057\250"}, - {0x0949, "\044\023\057\050\371\131"}, - {0x094A, "\044\023\057\050\371\130"}, - {0x094B, "\044\023\057\050"}, - {0x094C, "\044\023\057\274"}, - {0x094D, "\015\057\371\121"}, - {0x0950, "\373\335\057"}, - {0x0951, "\134\372\230\057\377\235"}, - {0x0952, "\134\372\230\057\374\316"}, - {0x0953, "\026\151\057"}, - {0x0954, "\026\102\057"}, - {0x0958, "\001\057\376\364"}, - {0x0959, "\001\057\373\254"}, - {0x095A, "\001\057\373\206"}, - {0x095B, "\001\057\372\177"}, - {0x095C, "\001\057\375\124"}, - {0x095D, "\001\057\372\341"}, - {0x095E, "\001\057\372\062"}, - {0x095F, "\001\057\373\011"}, - {0x0960, "\001\057\371\034\176"}, - {0x0961, "\001\057\371\156\176"}, - {0x0962, "\044\023\057\167\176"}, - {0x0963, "\044\023\057\371\156\176"}, - {0x0964, "\373\117\057"}, - {0x0965, "\051\373\117\057"}, - {0x0966, "\017\057\311"}, - {0x0967, "\017\057\132"}, - {0x0968, "\017\057\154"}, - {0x0969, "\017\057\131"}, - {0x096A, "\017\057\200"}, - {0x096B, "\017\057\203"}, - {0x096C, "\017\057\233"}, - {0x096D, "\017\057\221"}, - {0x096E, "\017\057\204"}, - {0x096F, "\017\057\235"}, - {0x0970, "\015\057\375\103"}, - {0x0981, "\015\071\371\264"}, - {0x0982, "\015\071\371\215"}, - {0x0983, "\015\071\371\210"}, - {0x0985, "\001\071\046"}, - {0x0986, "\001\071\313"}, - {0x0987, "\001\071\072"}, - {0x0988, "\001\071\317"}, - {0x0989, "\001\071\114"}, - {0x098A, "\001\071\322"}, - {0x098B, "\001\071\150\176"}, - {0x098C, "\001\071\167\176"}, - {0x098F, "\001\071\060"}, - {0x0990, "\001\071\250"}, - {0x0993, "\001\071\050"}, - {0x0994, "\001\071\274"}, - {0x0995, "\001\071\244"}, - {0x0996, "\001\071\371\062"}, - {0x0997, "\001\071\371\057"}, - {0x0998, "\001\071\371\146"}, - {0x0999, "\001\071\371\114"}, - {0x099A, "\001\071\371\020"}, - {0x099B, "\001\071\371\202"}, - {0x099C, "\001\071\371\100"}, - {0x099D, "\001\071\371\227"}, - {0x099E, "\001\071\371\125"}, - {0x099F, "\001\071\371\120"}, - {0x09A0, "\001\071\371\206"}, - {0x09A1, "\001\071\371\135"}, - {0x09A2, "\001\071\371\136"}, - {0x09A3, "\001\071\371\115"}, - {0x09A4, "\001\071\371\017"}, - {0x09A5, "\001\071\371\203"}, - {0x09A6, "\001\071\371\013"}, - {0x09A7, "\001\071\371\140"}, - {0x09A8, "\001\071\371\002"}, - {0x09AA, "\001\071\371\015"}, - {0x09AB, "\001\071\371\167"}, - {0x09AC, "\001\071\371\053"}, - {0x09AD, "\001\071\371\127"}, - {0x09AE, "\001\071\360"}, - {0x09AF, "\001\071\332"}, - {0x09B0, "\001\071\345"}, - {0x09B2, "\001\071\022"}, - {0x09B6, "\001\071\371\054"}, - {0x09B7, "\001\071\371\176"}, - {0x09B8, "\001\071\364"}, - {0x09B9, "\001\071\333"}, - {0x09BC, "\015\071\371\377"}, - {0x09BE, "\044\023\071\313"}, - {0x09BF, "\044\023\071\072"}, - {0x09C0, "\044\023\071\317"}, - {0x09C1, "\044\023\071\114"}, - {0x09C2, "\044\023\071\322"}, - {0x09C3, "\044\023\071\150\176"}, - {0x09C4, "\044\023\071\371\034\176"}, - {0x09C7, "\044\023\071\060"}, - {0x09C8, "\044\023\071\250"}, - {0x09CB, "\044\023\071\050"}, - {0x09CC, "\044\023\071\274"}, - {0x09CD, "\015\071\371\121"}, - {0x09D7, "\134\012\371\110\071\274"}, - {0x09DC, "\001\071\371\173"}, - {0x09DD, "\001\071\372\341"}, - {0x09DF, "\001\071\373\011"}, - {0x09E0, "\001\071\371\034\176"}, - {0x09E1, "\001\071\371\156\176"}, - {0x09E2, "\044\023\071\167\176"}, - {0x09E3, "\044\023\071\371\156\176"}, - {0x09E6, "\017\071\311"}, - {0x09E7, "\017\071\132"}, - {0x09E8, "\017\071\154"}, - {0x09E9, "\017\071\131"}, - {0x09EA, "\017\071\200"}, - {0x09EB, "\017\071\203"}, - {0x09EC, "\017\071\233"}, - {0x09ED, "\017\071\221"}, - {0x09EE, "\017\071\204"}, - {0x09EF, "\017\071\235"}, - {0x09F0, "\001\071\345\130\210\361\376\162"}, - {0x09F1, "\001\071\345\130\210\361\271"}, - {0x09F2, "\134\071\372\350"}, - {0x09F3, "\015\071\372\350"}, - {0x09F4, "\371\306\371\162\071\132"}, - {0x09F5, "\371\306\371\162\071\154"}, - {0x09F6, "\371\306\371\162\071\131"}, - {0x09F7, "\371\306\371\162\071\200"}, - {0x09F8, "\371\306\371\162\071\373\144\371\037\132"}, - {0x09F9, "\373\144\371\162\071\371\250"}, - {0x09FA, "\373\243\071"}, - {0x0A02, "\015\120\374\365"}, - {0x0A05, "\001\120\046"}, - {0x0A06, "\001\120\313"}, - {0x0A07, "\001\120\072"}, - {0x0A08, "\001\120\317"}, - {0x0A09, "\001\120\114"}, - {0x0A0A, "\001\120\322"}, - {0x0A0F, "\001\120\371\056"}, - {0x0A10, "\001\120\250"}, - {0x0A13, "\001\120\371\064"}, - {0x0A14, "\001\120\274"}, - {0x0A15, "\001\120\244"}, - {0x0A16, "\001\120\371\062"}, - {0x0A17, "\001\120\371\057"}, - {0x0A18, "\001\120\371\146"}, - {0x0A19, "\001\120\371\114"}, - {0x0A1A, "\001\120\371\020"}, - {0x0A1B, "\001\120\371\202"}, - {0x0A1C, "\001\120\371\100"}, - {0x0A1D, "\001\120\377\205"}, - {0x0A1E, "\001\120\371\125"}, - {0x0A1F, "\001\120\371\120"}, - {0x0A20, "\001\120\371\206"}, - {0x0A21, "\001\120\371\135"}, - {0x0A22, "\001\120\371\136"}, - {0x0A23, "\001\120\371\115"}, - {0x0A24, "\001\120\371\017"}, - {0x0A25, "\001\120\371\203"}, - {0x0A26, "\001\120\371\013"}, - {0x0A27, "\001\120\371\140"}, - {0x0A28, "\001\120\371\002"}, - {0x0A2A, "\001\120\371\015"}, - {0x0A2B, "\001\120\371\167"}, - {0x0A2C, "\001\120\371\053"}, - {0x0A2D, "\001\120\371\127"}, - {0x0A2E, "\001\120\360"}, - {0x0A2F, "\001\120\332"}, - {0x0A30, "\001\120\345"}, - {0x0A32, "\001\120\022"}, - {0x0A33, "\001\120\371\157"}, - {0x0A35, "\001\120\371\207"}, - {0x0A36, "\001\120\371\054"}, - {0x0A38, "\001\120\364"}, - {0x0A39, "\001\120\333"}, - {0x0A3C, "\015\120\371\377"}, - {0x0A3E, "\044\023\120\313"}, - {0x0A3F, "\044\023\120\072"}, - {0x0A40, "\044\023\120\317"}, - {0x0A41, "\044\023\120\114"}, - {0x0A42, "\044\023\120\322"}, - {0x0A47, "\044\023\120\371\056"}, - {0x0A48, "\044\023\120\250"}, - {0x0A4B, "\044\023\120\371\064"}, - {0x0A4C, "\044\023\120\274"}, - {0x0A4D, "\015\120\371\121"}, - {0x0A59, "\001\120\373\254"}, - {0x0A5A, "\001\120\373\206"}, - {0x0A5B, "\001\120\372\177"}, - {0x0A5C, "\001\120\371\173"}, - {0x0A5E, "\001\120\372\062"}, - {0x0A66, "\017\120\311"}, - {0x0A67, "\017\120\132"}, - {0x0A68, "\017\120\154"}, - {0x0A69, "\017\120\131"}, - {0x0A6A, "\017\120\200"}, - {0x0A6B, "\017\120\203"}, - {0x0A6C, "\017\120\233"}, - {0x0A6D, "\017\120\221"}, - {0x0A6E, "\017\120\204"}, - {0x0A6F, "\017\120\235"}, - {0x0A70, "\377\204\120"}, - {0x0A71, "\374\272\120"}, - {0x0A72, "\375\353\120"}, - {0x0A73, "\377\242\120"}, - {0x0A74, "\372\250\376\240\120"}, - {0x0A81, "\015\112\371\264"}, - {0x0A82, "\015\112\371\215"}, - {0x0A83, "\015\112\371\210"}, - {0x0A85, "\001\112\046"}, - {0x0A86, "\001\112\313"}, - {0x0A87, "\001\112\072"}, - {0x0A88, "\001\112\317"}, - {0x0A89, "\001\112\114"}, - {0x0A8A, "\001\112\322"}, - {0x0A8B, "\001\112\150\176"}, - {0x0A8D, "\044\112\060\371\131"}, - {0x0A8F, "\001\112\060"}, - {0x0A90, "\001\112\250"}, - {0x0A91, "\044\112\050\371\131"}, - {0x0A93, "\001\112\050"}, - {0x0A94, "\001\112\274"}, - {0x0A95, "\001\112\244"}, - {0x0A96, "\001\112\371\062"}, - {0x0A97, "\001\112\371\057"}, - {0x0A98, "\001\112\371\146"}, - {0x0A99, "\001\112\371\114"}, - {0x0A9A, "\001\112\371\020"}, - {0x0A9B, "\001\112\371\202"}, - {0x0A9C, "\001\112\371\100"}, - {0x0A9D, "\001\112\371\227"}, - {0x0A9E, "\001\112\371\125"}, - {0x0A9F, "\001\112\371\120"}, - {0x0AA0, "\001\112\371\206"}, - {0x0AA1, "\001\112\371\135"}, - {0x0AA2, "\001\112\371\136"}, - {0x0AA3, "\001\112\371\115"}, - {0x0AA4, "\001\112\371\017"}, - {0x0AA5, "\001\112\371\203"}, - {0x0AA6, "\001\112\371\013"}, - {0x0AA7, "\001\112\371\140"}, - {0x0AA8, "\001\112\371\002"}, - {0x0AAA, "\001\112\371\015"}, - {0x0AAB, "\001\112\371\167"}, - {0x0AAC, "\001\112\371\053"}, - {0x0AAD, "\001\112\371\127"}, - {0x0AAE, "\001\112\360"}, - {0x0AAF, "\001\112\332"}, - {0x0AB0, "\001\112\345"}, - {0x0AB2, "\001\112\022"}, - {0x0AB3, "\001\112\371\157"}, - {0x0AB5, "\001\112\371\207"}, - {0x0AB6, "\001\112\371\054"}, - {0x0AB7, "\001\112\371\176"}, - {0x0AB8, "\001\112\364"}, - {0x0AB9, "\001\112\333"}, - {0x0ABC, "\015\112\371\377"}, - {0x0ABD, "\015\112\372\207"}, - {0x0ABE, "\044\023\112\313"}, - {0x0ABF, "\044\023\112\072"}, - {0x0AC0, "\044\023\112\317"}, - {0x0AC1, "\044\023\112\114"}, - {0x0AC2, "\044\023\112\322"}, - {0x0AC3, "\044\023\112\150\176"}, - {0x0AC4, "\044\023\112\371\034\176"}, - {0x0AC5, "\044\023\112\060\371\131"}, - {0x0AC7, "\044\023\112\060"}, - {0x0AC8, "\044\023\112\250"}, - {0x0AC9, "\044\023\112\050\371\131"}, - {0x0ACB, "\044\023\112\050"}, - {0x0ACC, "\044\023\112\274"}, - {0x0ACD, "\015\112\371\121"}, - {0x0AD0, "\373\335\112"}, - {0x0AE0, "\001\112\371\034\176"}, - {0x0AE6, "\375\034\112\311"}, - {0x0AE7, "\017\112\132"}, - {0x0AE8, "\017\112\154"}, - {0x0AE9, "\017\112\131"}, - {0x0AEA, "\017\112\200"}, - {0x0AEB, "\017\112\203"}, - {0x0AEC, "\017\112\233"}, - {0x0AED, "\017\112\221"}, - {0x0AEE, "\017\112\204"}, - {0x0AEF, "\017\112\235"}, - {0x0B01, "\015\111\371\264"}, - {0x0B02, "\015\111\371\215"}, - {0x0B03, "\015\111\371\210"}, - {0x0B05, "\001\111\046"}, - {0x0B06, "\001\111\313"}, - {0x0B07, "\001\111\072"}, - {0x0B08, "\001\111\317"}, - {0x0B09, "\001\111\114"}, - {0x0B0A, "\001\111\322"}, - {0x0B0B, "\001\111\150\176"}, - {0x0B0C, "\001\111\167\176"}, - {0x0B0F, "\001\111\060"}, - {0x0B10, "\001\111\250"}, - {0x0B13, "\001\111\050"}, - {0x0B14, "\001\111\274"}, - {0x0B15, "\001\111\244"}, - {0x0B16, "\001\111\371\062"}, - {0x0B17, "\001\111\371\057"}, - {0x0B18, "\001\111\371\146"}, - {0x0B19, "\001\111\371\114"}, - {0x0B1A, "\001\111\371\020"}, - {0x0B1B, "\001\111\371\202"}, - {0x0B1C, "\001\111\371\100"}, - {0x0B1D, "\001\111\371\227"}, - {0x0B1E, "\001\111\371\125"}, - {0x0B1F, "\001\111\371\120"}, - {0x0B20, "\001\111\371\206"}, - {0x0B21, "\001\111\371\135"}, - {0x0B22, "\001\111\371\136"}, - {0x0B23, "\001\111\371\115"}, - {0x0B24, "\001\111\371\017"}, - {0x0B25, "\001\111\371\203"}, - {0x0B26, "\001\111\371\013"}, - {0x0B27, "\001\111\371\140"}, - {0x0B28, "\001\111\371\002"}, - {0x0B2A, "\001\111\371\015"}, - {0x0B2B, "\001\111\371\167"}, - {0x0B2C, "\001\111\371\053"}, - {0x0B2D, "\001\111\371\127"}, - {0x0B2E, "\001\111\360"}, - {0x0B2F, "\001\111\332"}, - {0x0B30, "\001\111\345"}, - {0x0B32, "\001\111\022"}, - {0x0B33, "\001\111\371\157"}, - {0x0B36, "\001\111\371\054"}, - {0x0B37, "\001\111\371\176"}, - {0x0B38, "\001\111\364"}, - {0x0B39, "\001\111\333"}, - {0x0B3C, "\015\111\371\377"}, - {0x0B3D, "\015\111\372\207"}, - {0x0B3E, "\044\023\111\313"}, - {0x0B3F, "\044\023\111\072"}, - {0x0B40, "\044\023\111\317"}, - {0x0B41, "\044\023\111\114"}, - {0x0B42, "\044\023\111\322"}, - {0x0B43, "\044\023\111\150\176"}, - {0x0B47, "\044\023\111\060"}, - {0x0B48, "\044\023\111\250"}, - {0x0B4B, "\044\023\111\050"}, - {0x0B4C, "\044\023\111\274"}, - {0x0B4D, "\015\111\371\121"}, - {0x0B56, "\134\012\371\110\111\250"}, - {0x0B57, "\134\012\371\110\111\274"}, - {0x0B5C, "\001\111\371\173"}, - {0x0B5D, "\001\111\372\341"}, - {0x0B5F, "\001\111\373\011"}, - {0x0B60, "\001\111\371\034\176"}, - {0x0B61, "\001\111\371\156\176"}, - {0x0B66, "\017\111\311"}, - {0x0B67, "\017\111\132"}, - {0x0B68, "\017\111\154"}, - {0x0B69, "\017\111\131"}, - {0x0B6A, "\017\111\200"}, - {0x0B6B, "\017\111\203"}, - {0x0B6C, "\017\111\233"}, - {0x0B6D, "\017\111\221"}, - {0x0B6E, "\017\111\204"}, - {0x0B6F, "\017\111\235"}, - {0x0B70, "\373\243\111"}, - {0x0B82, "\015\140\371\215"}, - {0x0B83, "\015\140\371\210"}, - {0x0B85, "\001\140\046"}, - {0x0B86, "\001\140\313"}, - {0x0B87, "\001\140\072"}, - {0x0B88, "\001\140\317"}, - {0x0B89, "\001\140\114"}, - {0x0B8A, "\001\140\322"}, - {0x0B8E, "\001\140\060"}, - {0x0B8F, "\001\140\371\056"}, - {0x0B90, "\001\140\250"}, - {0x0B92, "\001\140\050"}, - {0x0B93, "\001\140\371\064"}, - {0x0B94, "\001\140\274"}, - {0x0B95, "\001\140\244"}, - {0x0B99, "\001\140\371\114"}, - {0x0B9A, "\001\140\371\020"}, - {0x0B9C, "\001\140\371\100"}, - {0x0B9E, "\001\140\371\125"}, - {0x0B9F, "\001\140\371\120"}, - {0x0BA3, "\001\140\371\115"}, - {0x0BA4, "\001\140\371\017"}, - {0x0BA8, "\001\140\371\002"}, - {0x0BA9, "\001\140\373\322"}, - {0x0BAA, "\001\140\371\015"}, - {0x0BAE, "\001\140\360"}, - {0x0BAF, "\001\140\332"}, - {0x0BB0, "\001\140\345"}, - {0x0BB1, "\001\140\371\173"}, - {0x0BB2, "\001\140\022"}, - {0x0BB3, "\001\140\371\157"}, - {0x0BB4, "\001\140\372\305"}, - {0x0BB5, "\001\140\371\207"}, - {0x0BB7, "\001\140\371\176"}, - {0x0BB8, "\001\140\364"}, - {0x0BB9, "\001\140\333"}, - {0x0BBE, "\044\023\140\313"}, - {0x0BBF, "\044\023\140\072"}, - {0x0BC0, "\044\023\140\317"}, - {0x0BC1, "\044\023\140\114"}, - {0x0BC2, "\044\023\140\322"}, - {0x0BC6, "\044\023\140\060"}, - {0x0BC7, "\044\023\140\371\056"}, - {0x0BC8, "\044\023\140\250"}, - {0x0BCA, "\044\023\140\050"}, - {0x0BCB, "\044\023\140\371\064"}, - {0x0BCC, "\044\023\140\274"}, - {0x0BCD, "\015\140\371\121"}, - {0x0BD7, "\134\012\371\110\140\274"}, - {0x0BE7, "\017\140\132"}, - {0x0BE8, "\017\140\154"}, - {0x0BE9, "\017\140\131"}, - {0x0BEA, "\017\140\200"}, - {0x0BEB, "\017\140\203"}, - {0x0BEC, "\017\140\233"}, - {0x0BED, "\017\140\221"}, - {0x0BEE, "\017\140\204"}, - {0x0BEF, "\017\140\235"}, - {0x0BF0, "\163\140\354"}, - {0x0BF1, "\163\140\371\223"}, - {0x0BF2, "\163\140\371\160"}, - {0x0C01, "\015\106\371\264"}, - {0x0C02, "\015\106\371\215"}, - {0x0C03, "\015\106\371\210"}, - {0x0C05, "\001\106\046"}, - {0x0C06, "\001\106\313"}, - {0x0C07, "\001\106\072"}, - {0x0C08, "\001\106\317"}, - {0x0C09, "\001\106\114"}, - {0x0C0A, "\001\106\322"}, - {0x0C0B, "\001\106\150\176"}, - {0x0C0C, "\001\106\167\176"}, - {0x0C0E, "\001\106\060"}, - {0x0C0F, "\001\106\371\056"}, - {0x0C10, "\001\106\250"}, - {0x0C12, "\001\106\050"}, - {0x0C13, "\001\106\371\064"}, - {0x0C14, "\001\106\274"}, - {0x0C15, "\001\106\244"}, - {0x0C16, "\001\106\371\062"}, - {0x0C17, "\001\106\371\057"}, - {0x0C18, "\001\106\371\146"}, - {0x0C19, "\001\106\371\114"}, - {0x0C1A, "\001\106\371\020"}, - {0x0C1B, "\001\106\371\202"}, - {0x0C1C, "\001\106\371\100"}, - {0x0C1D, "\001\106\371\227"}, - {0x0C1E, "\001\106\371\125"}, - {0x0C1F, "\001\106\371\120"}, - {0x0C20, "\001\106\371\206"}, - {0x0C21, "\001\106\371\135"}, - {0x0C22, "\001\106\371\136"}, - {0x0C23, "\001\106\371\115"}, - {0x0C24, "\001\106\371\017"}, - {0x0C25, "\001\106\371\203"}, - {0x0C26, "\001\106\371\013"}, - {0x0C27, "\001\106\371\140"}, - {0x0C28, "\001\106\371\002"}, - {0x0C2A, "\001\106\371\015"}, - {0x0C2B, "\001\106\371\167"}, - {0x0C2C, "\001\106\371\053"}, - {0x0C2D, "\001\106\371\127"}, - {0x0C2E, "\001\106\360"}, - {0x0C2F, "\001\106\332"}, - {0x0C30, "\001\106\345"}, - {0x0C31, "\001\106\371\173"}, - {0x0C32, "\001\106\022"}, - {0x0C33, "\001\106\371\157"}, - {0x0C35, "\001\106\371\207"}, - {0x0C36, "\001\106\371\054"}, - {0x0C37, "\001\106\371\176"}, - {0x0C38, "\001\106\364"}, - {0x0C39, "\001\106\333"}, - {0x0C3E, "\044\023\106\313"}, - {0x0C3F, "\044\023\106\072"}, - {0x0C40, "\044\023\106\317"}, - {0x0C41, "\044\023\106\114"}, - {0x0C42, "\044\023\106\322"}, - {0x0C43, "\044\023\106\150\176"}, - {0x0C44, "\044\023\106\371\034\176"}, - {0x0C46, "\044\023\106\060"}, - {0x0C47, "\044\023\106\371\056"}, - {0x0C48, "\044\023\106\250"}, - {0x0C4A, "\044\023\106\050"}, - {0x0C4B, "\044\023\106\371\064"}, - {0x0C4C, "\044\023\106\274"}, - {0x0C4D, "\015\106\371\121"}, - {0x0C55, "\134\012\371\110\106"}, - {0x0C56, "\134\012\371\110\106\250"}, - {0x0C60, "\001\106\371\034\176"}, - {0x0C61, "\001\106\371\156\176"}, - {0x0C66, "\017\106\311"}, - {0x0C67, "\017\106\132"}, - {0x0C68, "\017\106\154"}, - {0x0C69, "\017\106\131"}, - {0x0C6A, "\017\106\200"}, - {0x0C6B, "\017\106\203"}, - {0x0C6C, "\017\106\233"}, - {0x0C6D, "\017\106\221"}, - {0x0C6E, "\017\106\204"}, - {0x0C6F, "\017\106\235"}, - {0x0C82, "\015\104\371\215"}, - {0x0C83, "\015\104\371\210"}, - {0x0C85, "\001\104\046"}, - {0x0C86, "\001\104\313"}, - {0x0C87, "\001\104\072"}, - {0x0C88, "\001\104\317"}, - {0x0C89, "\001\104\114"}, - {0x0C8A, "\001\104\322"}, - {0x0C8B, "\001\104\150\176"}, - {0x0C8C, "\001\104\167\176"}, - {0x0C8E, "\001\104\060"}, - {0x0C8F, "\001\104\371\056"}, - {0x0C90, "\001\104\250"}, - {0x0C92, "\001\104\050"}, - {0x0C93, "\001\104\371\064"}, - {0x0C94, "\001\104\274"}, - {0x0C95, "\001\104\244"}, - {0x0C96, "\001\104\371\062"}, - {0x0C97, "\001\104\371\057"}, - {0x0C98, "\001\104\371\146"}, - {0x0C99, "\001\104\371\114"}, - {0x0C9A, "\001\104\371\020"}, - {0x0C9B, "\001\104\371\202"}, - {0x0C9C, "\001\104\371\100"}, - {0x0C9D, "\001\104\371\227"}, - {0x0C9E, "\001\104\371\125"}, - {0x0C9F, "\001\104\371\120"}, - {0x0CA0, "\001\104\371\206"}, - {0x0CA1, "\001\104\371\135"}, - {0x0CA2, "\001\104\371\136"}, - {0x0CA3, "\001\104\371\115"}, - {0x0CA4, "\001\104\371\017"}, - {0x0CA5, "\001\104\371\203"}, - {0x0CA6, "\001\104\371\013"}, - {0x0CA7, "\001\104\371\140"}, - {0x0CA8, "\001\104\371\002"}, - {0x0CAA, "\001\104\371\015"}, - {0x0CAB, "\001\104\371\167"}, - {0x0CAC, "\001\104\371\053"}, - {0x0CAD, "\001\104\371\127"}, - {0x0CAE, "\001\104\360"}, - {0x0CAF, "\001\104\332"}, - {0x0CB0, "\001\104\345"}, - {0x0CB1, "\001\104\371\173"}, - {0x0CB2, "\001\104\022"}, - {0x0CB3, "\001\104\371\157"}, - {0x0CB5, "\001\104\371\207"}, - {0x0CB6, "\001\104\371\054"}, - {0x0CB7, "\001\104\371\176"}, - {0x0CB8, "\001\104\364"}, - {0x0CB9, "\001\104\333"}, - {0x0CBE, "\044\023\104\313"}, - {0x0CBF, "\044\023\104\072"}, - {0x0CC0, "\044\023\104\317"}, - {0x0CC1, "\044\023\104\114"}, - {0x0CC2, "\044\023\104\322"}, - {0x0CC3, "\044\023\104\150\176"}, - {0x0CC4, "\044\023\104\371\034\176"}, - {0x0CC6, "\044\023\104\060"}, - {0x0CC7, "\044\023\104\371\056"}, - {0x0CC8, "\044\023\104\250"}, - {0x0CCA, "\044\023\104\050"}, - {0x0CCB, "\044\023\104\371\064"}, - {0x0CCC, "\044\023\104\274"}, - {0x0CCD, "\015\104\371\121"}, - {0x0CD5, "\134\012\371\110\104"}, - {0x0CD6, "\134\012\371\110\104\250"}, - {0x0CDE, "\001\104\372\062"}, - {0x0CE0, "\001\104\371\034\176"}, - {0x0CE1, "\001\104\371\156\176"}, - {0x0CE6, "\017\104\311"}, - {0x0CE7, "\017\104\132"}, - {0x0CE8, "\017\104\154"}, - {0x0CE9, "\017\104\131"}, - {0x0CEA, "\017\104\200"}, - {0x0CEB, "\017\104\203"}, - {0x0CEC, "\017\104\233"}, - {0x0CED, "\017\104\221"}, - {0x0CEE, "\017\104\204"}, - {0x0CEF, "\017\104\235"}, - {0x0D02, "\015\113\371\215"}, - {0x0D03, "\015\113\371\210"}, - {0x0D05, "\001\113\046"}, - {0x0D06, "\001\113\313"}, - {0x0D07, "\001\113\072"}, - {0x0D08, "\001\113\317"}, - {0x0D09, "\001\113\114"}, - {0x0D0A, "\001\113\322"}, - {0x0D0B, "\001\113\150\176"}, - {0x0D0C, "\001\113\167\176"}, - {0x0D0E, "\001\113\060"}, - {0x0D0F, "\001\113\371\056"}, - {0x0D10, "\001\113\250"}, - {0x0D12, "\001\113\050"}, - {0x0D13, "\001\113\371\064"}, - {0x0D14, "\001\113\274"}, - {0x0D15, "\001\113\244"}, - {0x0D16, "\001\113\371\062"}, - {0x0D17, "\001\113\371\057"}, - {0x0D18, "\001\113\371\146"}, - {0x0D19, "\001\113\371\114"}, - {0x0D1A, "\001\113\371\020"}, - {0x0D1B, "\001\113\371\202"}, - {0x0D1C, "\001\113\371\100"}, - {0x0D1D, "\001\113\371\227"}, - {0x0D1E, "\001\113\371\125"}, - {0x0D1F, "\001\113\371\120"}, - {0x0D20, "\001\113\371\206"}, - {0x0D21, "\001\113\371\135"}, - {0x0D22, "\001\113\371\136"}, - {0x0D23, "\001\113\371\115"}, - {0x0D24, "\001\113\371\017"}, - {0x0D25, "\001\113\371\203"}, - {0x0D26, "\001\113\371\013"}, - {0x0D27, "\001\113\371\140"}, - {0x0D28, "\001\113\371\002"}, - {0x0D2A, "\001\113\371\015"}, - {0x0D2B, "\001\113\371\167"}, - {0x0D2C, "\001\113\371\053"}, - {0x0D2D, "\001\113\371\127"}, - {0x0D2E, "\001\113\360"}, - {0x0D2F, "\001\113\332"}, - {0x0D30, "\001\113\345"}, - {0x0D31, "\001\113\371\173"}, - {0x0D32, "\001\113\022"}, - {0x0D33, "\001\113\371\157"}, - {0x0D34, "\001\113\372\305"}, - {0x0D35, "\001\113\371\207"}, - {0x0D36, "\001\113\371\054"}, - {0x0D37, "\001\113\371\176"}, - {0x0D38, "\001\113\364"}, - {0x0D39, "\001\113\333"}, - {0x0D3E, "\044\023\113\313"}, - {0x0D3F, "\044\023\113\072"}, - {0x0D40, "\044\023\113\317"}, - {0x0D41, "\044\023\113\114"}, - {0x0D42, "\044\023\113\322"}, - {0x0D43, "\044\023\113\150\176"}, - {0x0D46, "\044\023\113\060"}, - {0x0D47, "\044\023\113\371\056"}, - {0x0D48, "\044\023\113\250"}, - {0x0D4A, "\044\023\113\050"}, - {0x0D4B, "\044\023\113\371\064"}, - {0x0D4C, "\044\023\113\274"}, - {0x0D4D, "\015\113\371\121"}, - {0x0D57, "\134\012\371\110\113\274"}, - {0x0D60, "\001\113\371\034\176"}, - {0x0D61, "\001\113\371\156\176"}, - {0x0D66, "\017\113\311"}, - {0x0D67, "\017\113\132"}, - {0x0D68, "\017\113\154"}, - {0x0D69, "\017\113\131"}, - {0x0D6A, "\017\113\200"}, - {0x0D6B, "\017\113\203"}, - {0x0D6C, "\017\113\233"}, - {0x0D6D, "\017\113\221"}, - {0x0D6E, "\017\113\204"}, - {0x0D6F, "\017\113\235"}, - {0x0E01, "\074\073\371\240\376\001"}, - {0x0E02, "\074\073\371\237\376\012"}, - {0x0E03, "\074\073\371\237\376\015"}, - {0x0E04, "\074\073\371\237\376\016"}, - {0x0E05, "\074\073\371\237\376\014"}, - {0x0E06, "\074\073\371\237\376\373"}, - {0x0E07, "\074\073\373\315\376\202"}, - {0x0E08, "\074\073\377\206\377\160"}, - {0x0E09, "\074\073\372\164\377\163"}, - {0x0E0A, "\074\073\372\164\377\161"}, - {0x0E0B, "\074\073\371\046\371\046"}, - {0x0E0C, "\074\073\372\164\377\165"}, - {0x0E0D, "\074\073\371\021\377\306"}, - {0x0E0E, "\074\073\371\354\377\157"}, - {0x0E0F, "\074\073\371\254\376\300"}, - {0x0E10, "\074\073\371\071\372\370"}, - {0x0E11, "\074\073\371\071\376\173"}, - {0x0E12, "\074\073\371\071\376\320"}, - {0x0E13, "\074\073\371\164\376\177"}, - {0x0E14, "\074\073\371\354\375\126"}, - {0x0E15, "\074\073\371\254\377\145"}, - {0x0E16, "\074\073\371\071\377\201"}, - {0x0E17, "\074\073\371\071\377\176"}, - {0x0E18, "\074\073\371\071\377\200"}, - {0x0E19, "\074\073\371\164\376\220"}, - {0x0E1A, "\074\073\372\045\374\352"}, - {0x0E1B, "\074\073\372\126\376\333"}, - {0x0E1C, "\074\073\372\007\376\317"}, - {0x0E1D, "\074\073\372\064\372\062"}, - {0x0E1E, "\074\073\372\007\376\314"}, - {0x0E1F, "\074\073\372\064\375\222"}, - {0x0E20, "\074\073\372\007\377\047"}, - {0x0E21, "\074\073\371\241\360"}, - {0x0E22, "\074\073\371\021\377\302"}, - {0x0E23, "\074\073\372\015\377\023"}, - {0x0E24, "\074\073\377\022"}, - {0x0E25, "\074\073\371\374\373\265"}, - {0x0E26, "\074\073\376\066"}, - {0x0E27, "\074\073\371\123\377\272"}, - {0x0E28, "\074\073\371\046\377\042"}, - {0x0E29, "\074\073\371\046\377\026"}, - {0x0E2A, "\074\073\371\046\377\115"}, - {0x0E2B, "\074\073\371\061\375\303"}, - {0x0E2C, "\074\073\371\374\377\173"}, - {0x0E2D, "\074\073\050\373\031"}, - {0x0E2E, "\074\073\371\061\376\212"}, - {0x0E2F, "\074\073\376\265"}, - {0x0E30, "\074\073\371\006\046"}, - {0x0E31, "\074\073\371\031\375\274\374\275"}, - {0x0E32, "\074\073\371\006\313"}, - {0x0E33, "\074\073\371\006\372\204"}, - {0x0E34, "\074\073\371\006\072"}, - {0x0E35, "\074\073\371\006\317"}, - {0x0E36, "\074\073\371\006\376\256"}, - {0x0E37, "\074\073\371\006\376\257"}, - {0x0E38, "\074\073\371\006\114"}, - {0x0E39, "\074\073\371\006\322"}, - {0x0E3A, "\074\073\376\315"}, - {0x0E3F, "\015\371\162\073\374\351"}, - {0x0E40, "\074\073\371\006\060"}, - {0x0E41, "\074\073\371\006\372\036"}, - {0x0E42, "\074\073\371\006\050"}, - {0x0E43, "\074\073\371\006\250\376\075"}, - {0x0E44, "\074\073\371\006\250\376\074"}, - {0x0E45, "\074\073\376\047"}, - {0x0E46, "\074\073\376\100"}, - {0x0E47, "\074\073\376\077"}, - {0x0E48, "\074\073\371\031\372\250"}, - {0x0E49, "\074\073\371\031\371\071"}, - {0x0E4A, "\074\073\371\031\377\224"}, - {0x0E4B, "\074\073\371\031\377\162"}, - {0x0E4C, "\074\073\377\177"}, - {0x0E4D, "\074\073\376\204"}, - {0x0E4E, "\074\073\377\303"}, - {0x0E4F, "\074\073\375\236"}, - {0x0E50, "\017\073\311"}, - {0x0E51, "\017\073\132"}, - {0x0E52, "\017\073\154"}, - {0x0E53, "\017\073\131"}, - {0x0E54, "\017\073\200"}, - {0x0E55, "\017\073\203"}, - {0x0E56, "\017\073\233"}, - {0x0E57, "\017\073\221"}, - {0x0E58, "\017\073\204"}, - {0x0E59, "\017\073\235"}, - {0x0E5A, "\074\073\374\307"}, - {0x0E5B, "\074\073\376\013"}, - {0x0E81, "\001\170\371\240"}, - {0x0E82, "\001\170\371\237\371\321"}, - {0x0E84, "\001\170\371\237\371\325"}, - {0x0E87, "\001\170\373\315"}, - {0x0E88, "\001\170\372\164"}, - {0x0E8A, "\001\170\371\046\371\325"}, - {0x0E8D, "\001\170\374\160"}, - {0x0E94, "\001\170\371\354"}, - {0x0E95, "\001\170\371\254"}, - {0x0E96, "\001\170\371\071\371\321"}, - {0x0E97, "\001\170\371\071\371\325"}, - {0x0E99, "\001\170\371\164"}, - {0x0E9A, "\001\170\372\045"}, - {0x0E9B, "\001\170\372\126"}, - {0x0E9C, "\001\170\372\007\371\321"}, - {0x0E9D, "\001\170\372\064\371\325"}, - {0x0E9E, "\001\170\372\007\371\325"}, - {0x0E9F, "\001\170\372\064\371\321"}, - {0x0EA1, "\001\170\371\241"}, - {0x0EA2, "\001\170\371\021"}, - {0x0EA3, "\001\170\371\374\373\265"}, - {0x0EA5, "\001\170\371\374\376\067"}, - {0x0EA7, "\001\170\371\123"}, - {0x0EAA, "\001\170\371\046\371\321"}, - {0x0EAB, "\001\170\371\061\371\321"}, - {0x0EAD, "\001\170\050"}, - {0x0EAE, "\001\170\371\061\371\325"}, - {0x0EAF, "\220\012\374\063\376\050"}, - {0x0EB0, "\044\023\170\046"}, - {0x0EB1, "\044\023\170\371\031\372\273"}, - {0x0EB2, "\044\023\170\313"}, - {0x0EB3, "\044\023\170\372\204"}, - {0x0EB4, "\044\023\170\072"}, - {0x0EB5, "\044\023\170\317"}, - {0x0EB6, "\044\023\170\107"}, - {0x0EB7, "\044\023\170\377\244"}, - {0x0EB8, "\044\023\170\114"}, - {0x0EB9, "\044\023\170\322"}, - {0x0EBB, "\044\023\170\371\031\376\030"}, - {0x0EBC, "\373\126\023\170\371\374"}, - {0x0EBD, "\373\126\023\170\374\160"}, - {0x0EC0, "\044\023\170\060"}, - {0x0EC1, "\044\023\170\373\147"}, - {0x0EC2, "\044\023\170\050"}, - {0x0EC3, "\044\023\170\374\346"}, - {0x0EC4, "\044\023\170\250"}, - {0x0EC6, "\371\240\022\325"}, - {0x0EC8, "\153\012\272\325\371\031\372\250"}, - {0x0EC9, "\153\012\272\325\371\031\371\071"}, - {0x0ECA, "\153\012\272\325\371\031\372\023"}, - {0x0ECB, "\153\012\272\325\371\031\375\016"}, - {0x0ECC, "\134\373\107\325"}, - {0x0ECD, "\376\203\325"}, - {0x0ED0, "\017\325\311"}, - {0x0ED1, "\017\325\132"}, - {0x0ED2, "\017\325\154"}, - {0x0ED3, "\017\325\131"}, - {0x0ED4, "\017\325\200"}, - {0x0ED5, "\017\325\203"}, - {0x0ED6, "\017\325\233"}, - {0x0ED7, "\017\325\221"}, - {0x0ED8, "\017\325\204"}, - {0x0ED9, "\017\325\235"}, - {0x0EDC, "\371\061\371\164\325"}, - {0x0EDD, "\371\061\371\241\325"}, - {0x10A0, "\001\202\116\372\205"}, - {0x10A1, "\001\202\116\373\043"}, - {0x10A2, "\001\202\116\373\204"}, - {0x10A3, "\001\202\116\373\137"}, - {0x10A4, "\001\202\116\007"}, - {0x10A5, "\001\202\116\374\115"}, - {0x10A6, "\001\202\116\374\066"}, - {0x10A7, "\001\202\116\372\370"}, - {0x10A8, "\001\202\116\372\264"}, - {0x10A9, "\001\202\116\373\065"}, - {0x10AA, "\001\202\116\373\263"}, - {0x10AB, "\001\202\116\373\272"}, - {0x10AC, "\001\202\116\373\314"}, - {0x10AD, "\001\202\116\373\336"}, - {0x10AE, "\001\202\116\371\042"}, - {0x10AF, "\001\202\116\374\044"}, - {0x10B0, "\001\202\116\374\012"}, - {0x10B1, "\001\202\116\374\035"}, - {0x10B2, "\001\202\116\374\071"}, - {0x10B3, "\001\202\116\132"}, - {0x10B4, "\001\202\116\373\157"}, - {0x10B5, "\001\202\116\372\273"}, - {0x10B6, "\001\202\116\373\207"}, - {0x10B7, "\001\202\116\373\103"}, - {0x10B8, "\001\202\116\374\041"}, - {0x10B9, "\001\202\116\373\072"}, - {0x10BA, "\001\202\116\374\153"}, - {0x10BB, "\001\202\116\374\150"}, - {0x10BC, "\001\202\116\374\154"}, - {0x10BD, "\001\202\116\373\061"}, - {0x10BE, "\001\202\116\373\070"}, - {0x10BF, "\001\202\116\373\211"}, - {0x10C0, "\001\202\116\373\222"}, - {0x10C1, "\001\202\116\371\104"}, - {0x10C2, "\001\202\116\373\225"}, - {0x10C3, "\001\202\116\372\034"}, - {0x10C4, "\001\202\116\373\223"}, - {0x10C5, "\001\202\116\373\224"}, - {0x10D0, "\001\116\372\205"}, - {0x10D1, "\001\116\373\043"}, - {0x10D2, "\001\116\373\204"}, - {0x10D3, "\001\116\373\137"}, - {0x10D4, "\001\116\007"}, - {0x10D5, "\001\116\374\115"}, - {0x10D6, "\001\116\374\066"}, - {0x10D7, "\001\116\372\370"}, - {0x10D8, "\001\116\372\264"}, - {0x10D9, "\001\116\373\065"}, - {0x10DA, "\001\116\373\263"}, - {0x10DB, "\001\116\373\272"}, - {0x10DC, "\001\116\373\314"}, - {0x10DD, "\001\116\373\336"}, - {0x10DE, "\001\116\371\042"}, - {0x10DF, "\001\116\374\044"}, - {0x10E0, "\001\116\374\012"}, - {0x10E1, "\001\116\374\035"}, - {0x10E2, "\001\116\374\071"}, - {0x10E3, "\001\116\132"}, - {0x10E4, "\001\116\373\157"}, - {0x10E5, "\001\116\372\273"}, - {0x10E6, "\001\116\373\207"}, - {0x10E7, "\001\116\373\103"}, - {0x10E8, "\001\116\374\041"}, - {0x10E9, "\001\116\373\072"}, - {0x10EA, "\001\116\374\153"}, - {0x10EB, "\001\116\374\150"}, - {0x10EC, "\001\116\374\154"}, - {0x10ED, "\001\116\373\061"}, - {0x10EE, "\001\116\373\070"}, - {0x10EF, "\001\116\373\211"}, - {0x10F0, "\001\116\373\222"}, - {0x10F1, "\001\116\371\104"}, - {0x10F2, "\001\116\373\225"}, - {0x10F3, "\001\116\372\034"}, - {0x10F4, "\001\116\373\223"}, - {0x10F5, "\001\116\373\224"}, - {0x10F6, "\001\116\373\163"}, - {0x10FB, "\371\007\012\372\324\375\271"}, - {0x1100, "\010\067\371\155"}, - {0x1101, "\010\067\372\157"}, - {0x1102, "\010\067\371\163"}, - {0x1103, "\010\067\371\204"}, - {0x1104, "\010\067\372\364"}, - {0x1105, "\010\067\371\172"}, - {0x1106, "\010\067\371\161"}, - {0x1107, "\010\067\371\170"}, - {0x1108, "\010\067\372\362"}, - {0x1109, "\010\067\371\174"}, - {0x110A, "\010\067\372\160"}, - {0x110B, "\010\067\371\152"}, - {0x110C, "\010\067\371\117"}, - {0x110D, "\010\067\372\363"}, - {0x110E, "\010\067\371\201"}, - {0x110F, "\010\067\371\154"}, - {0x1110, "\010\067\371\200"}, - {0x1111, "\010\067\371\166"}, - {0x1112, "\010\067\371\150"}, - {0x1113, "\010\067\373\316"}, - {0x1114, "\010\067\374\055"}, - {0x1115, "\010\067\372\317"}, - {0x1116, "\010\067\376\205"}, - {0x1117, "\010\067\374\100"}, - {0x1118, "\010\067\374\025"}, - {0x1119, "\010\067\374\056"}, - {0x111A, "\010\067\372\145"}, - {0x111B, "\010\067\376\003"}, - {0x111C, "\010\067\372\310"}, - {0x111D, "\010\067\372\275"}, - {0x111E, "\010\067\373\357"}, - {0x111F, "\010\067\376\325"}, - {0x1120, "\010\067\373\365"}, - {0x1121, "\010\067\372\125"}, - {0x1122, "\010\067\373\361"}, - {0x1123, "\010\067\373\362"}, - {0x1124, "\010\067\376\327"}, - {0x1125, "\010\067\376\331"}, - {0x1126, "\010\067\376\330"}, - {0x1127, "\010\067\373\364"}, - {0x1128, "\010\067\376\332"}, - {0x1129, "\010\067\373\363"}, - {0x112A, "\010\067\373\360"}, - {0x112B, "\010\067\372\277"}, - {0x112C, "\010\067\373\247"}, - {0x112D, "\010\067\372\354"}, - {0x112E, "\010\067\374\046"}, - {0x112F, "\010\067\372\356"}, - {0x1130, "\010\067\374\047"}, - {0x1131, "\010\067\377\102"}, - {0x1132, "\010\067\372\355"}, - {0x1133, "\010\067\377\104"}, - {0x1134, "\010\067\377\105"}, - {0x1135, "\010\067\377\100"}, - {0x1136, "\010\067\374\050"}, - {0x1137, "\010\067\377\107"}, - {0x1138, "\010\067\377\101"}, - {0x1139, "\010\067\377\106"}, - {0x113A, "\010\067\377\103"}, - {0x113B, "\010\067\377\077"}, - {0x113C, "\010\067\377\150"}, - {0x113D, "\010\067\377\151"}, - {0x113E, "\010\067\377\166"}, - {0x113F, "\010\067\377\167"}, - {0x1140, "\010\067\372\323"}, - {0x1141, "\010\067\373\244"}, - {0x1142, "\010\067\375\367"}, - {0x1143, "\010\067\375\356"}, - {0x1144, "\010\067\375\361"}, - {0x1145, "\010\067\375\362"}, - {0x1146, "\010\067\375\360"}, - {0x1147, "\010\067\372\361"}, - {0x1148, "\010\067\375\366"}, - {0x1149, "\010\067\375\365"}, - {0x114A, "\010\067\375\364"}, - {0x114B, "\010\067\375\357"}, - {0x114C, "\010\067\373\006"}, - {0x114D, "\010\067\377\164"}, - {0x114E, "\010\067\377\154"}, - {0x114F, "\010\067\377\152"}, - {0x1150, "\010\067\377\172"}, - {0x1151, "\010\067\377\170"}, - {0x1152, "\010\067\377\156"}, - {0x1153, "\010\067\377\155"}, - {0x1154, "\010\067\377\153"}, - {0x1155, "\010\067\377\171"}, - {0x1156, "\010\067\373\345"}, - {0x1157, "\010\067\372\276"}, - {0x1158, "\010\067\374\054"}, - {0x1159, "\010\067\373\010"}, - {0x115F, "\371\341\010\067"}, - {0x1160, "\371\341\010\127"}, - {0x1161, "\010\127\046"}, - {0x1162, "\010\127\373\015"}, - {0x1163, "\010\127\332"}, - {0x1164, "\010\127\373\012"}, - {0x1165, "\010\127\050"}, - {0x1166, "\010\127\371\260"}, - {0x1167, "\010\127\371\021"}, - {0x1168, "\010\127\373\013"}, - {0x1169, "\010\127\373\020"}, - {0x116A, "\010\127\371\122"}, - {0x116B, "\010\127\373\004"}, - {0x116C, "\010\127\372\251"}, - {0x116D, "\010\127\373\014"}, - {0x116E, "\010\127\114"}, - {0x116F, "\010\127\371\123"}, - {0x1170, "\010\127\373\005"}, - {0x1171, "\010\127\371\331"}, - {0x1172, "\010\127\371\051"}, - {0x1173, "\010\127\373\021"}, - {0x1174, "\010\127\373\022"}, - {0x1175, "\010\127\072"}, - {0x1176, "\010\127\374\263"}, - {0x1177, "\010\127\374\262"}, - {0x1178, "\010\127\377\277"}, - {0x1179, "\010\127\377\276"}, - {0x117A, "\010\127\376\232"}, - {0x117B, "\010\127\376\231"}, - {0x117C, "\010\127\376\233"}, - {0x117D, "\010\127\377\310"}, - {0x117E, "\010\127\377\307"}, - {0x117F, "\010\127\377\336"}, - {0x1180, "\010\127\377\341"}, - {0x1181, "\010\127\377\340"}, - {0x1182, "\010\127\377\342"}, - {0x1183, "\010\127\377\337"}, - {0x1184, "\010\127\374\143"}, - {0x1185, "\010\127\374\144"}, - {0x1186, "\010\127\377\320"}, - {0x1187, "\010\127\377\321"}, - {0x1188, "\010\127\374\142"}, - {0x1189, "\010\127\376\251"}, - {0x118A, "\010\127\376\255"}, - {0x118B, "\010\127\376\252"}, - {0x118C, "\010\127\376\254"}, - {0x118D, "\010\127\376\253"}, - {0x118E, "\010\127\377\312"}, - {0x118F, "\010\127\377\313"}, - {0x1190, "\010\127\377\315"}, - {0x1191, "\010\127\374\140"}, - {0x1192, "\010\127\374\141"}, - {0x1193, "\010\127\377\314"}, - {0x1194, "\010\127\374\137"}, - {0x1195, "\010\127\377\343"}, - {0x1196, "\010\127\377\344"}, - {0x1197, "\010\127\377\345"}, - {0x1198, "\010\127\375\330"}, - {0x1199, "\010\127\375\333"}, - {0x119A, "\010\127\375\334"}, - {0x119B, "\010\127\375\332"}, - {0x119C, "\010\127\375\335"}, - {0x119D, "\010\127\375\331"}, - {0x119E, "\010\127\373\035"}, - {0x119F, "\010\127\374\330"}, - {0x11A0, "\010\127\374\331"}, - {0x11A1, "\010\127\374\327"}, - {0x11A2, "\010\127\377\123"}, - {0x11A8, "\010\103\371\155"}, - {0x11A9, "\010\103\372\157"}, - {0x11AA, "\010\103\372\302"}, - {0x11AB, "\010\103\371\163"}, - {0x11AC, "\010\103\372\316"}, - {0x11AD, "\010\103\372\315"}, - {0x11AE, "\010\103\371\204"}, - {0x11AF, "\010\103\371\172"}, - {0x11B0, "\010\103\372\342"}, - {0x11B1, "\010\103\372\343"}, - {0x11B2, "\010\103\372\345"}, - {0x11B3, "\010\103\372\346"}, - {0x11B4, "\010\103\372\347"}, - {0x11B5, "\010\103\372\344"}, - {0x11B6, "\010\103\372\145"}, - {0x11B7, "\010\103\371\161"}, - {0x11B8, "\010\103\371\170"}, - {0x11B9, "\010\103\372\125"}, - {0x11BA, "\010\103\371\174"}, - {0x11BB, "\010\103\372\160"}, - {0x11BC, "\010\103\371\152"}, - {0x11BD, "\010\103\371\117"}, - {0x11BE, "\010\103\371\201"}, - {0x11BF, "\010\103\371\154"}, - {0x11C0, "\010\103\371\200"}, - {0x11C1, "\010\103\371\166"}, - {0x11C2, "\010\103\371\150"}, - {0x11C3, "\010\103\376\024"}, - {0x11C4, "\010\103\376\025"}, - {0x11C5, "\010\103\373\316"}, - {0x11C6, "\010\103\372\317"}, - {0x11C7, "\010\103\373\320"}, - {0x11C8, "\010\103\373\317"}, - {0x11C9, "\010\103\376\206"}, - {0x11CA, "\010\103\374\100"}, - {0x11CB, "\010\103\377\203"}, - {0x11CC, "\010\103\374\024"}, - {0x11CD, "\010\103\374\025"}, - {0x11CE, "\010\103\374\030"}, - {0x11CF, "\010\103\377\021"}, - {0x11D0, "\010\103\374\056"}, - {0x11D1, "\010\103\377\015"}, - {0x11D2, "\010\103\377\016"}, - {0x11D3, "\010\103\374\027"}, - {0x11D4, "\010\103\377\017"}, - {0x11D5, "\010\103\377\014"}, - {0x11D6, "\010\103\377\020"}, - {0x11D7, "\010\103\374\026"}, - {0x11D8, "\010\103\377\013"}, - {0x11D9, "\010\103\374\031"}, - {0x11DA, "\010\103\376\134"}, - {0x11DB, "\010\103\376\135"}, - {0x11DC, "\010\103\372\310"}, - {0x11DD, "\010\103\373\302"}, - {0x11DE, "\010\103\376\136"}, - {0x11DF, "\010\103\373\301"}, - {0x11E0, "\010\103\376\137"}, - {0x11E1, "\010\103\376\133"}, - {0x11E2, "\010\103\372\275"}, - {0x11E3, "\010\103\376\326"}, - {0x11E4, "\010\103\373\360"}, - {0x11E5, "\010\103\376\324"}, - {0x11E6, "\010\103\372\277"}, - {0x11E7, "\010\103\372\354"}, - {0x11E8, "\010\103\372\356"}, - {0x11E9, "\010\103\374\047"}, - {0x11EA, "\010\103\372\355"}, - {0x11EB, "\010\103\372\323"}, - {0x11EC, "\010\103\373\244"}, - {0x11ED, "\010\103\375\363"}, - {0x11EE, "\010\103\372\361"}, - {0x11EF, "\010\103\375\355"}, - {0x11F0, "\010\103\373\006"}, - {0x11F1, "\010\103\374\136"}, - {0x11F2, "\010\103\374\135"}, - {0x11F3, "\010\103\373\345"}, - {0x11F4, "\010\103\372\276"}, - {0x11F5, "\010\103\375\307"}, - {0x11F6, "\010\103\375\311"}, - {0x11F7, "\010\103\375\306"}, - {0x11F8, "\010\103\375\310"}, - {0x11F9, "\010\103\373\010"}, - {0x1E00, "\001\005\004\046\231\032"}, - {0x1E01, "\001\003\004\046\231\032"}, - {0x1E02, "\001\005\004\275\027\007\025"}, - {0x1E03, "\001\003\004\275\027\007\025"}, - {0x1E04, "\001\005\004\275\027\032"}, - {0x1E05, "\001\003\004\275\027\032"}, - {0x1E06, "\001\005\004\275\212\271"}, - {0x1E07, "\001\003\004\275\212\271"}, - {0x1E08, "\001\005\004\241\246\011\026\102"}, - {0x1E09, "\001\003\004\241\246\011\026\102"}, - {0x1E0A, "\001\005\004\225\027\007\025"}, - {0x1E0B, "\001\003\004\225\027\007\025"}, - {0x1E0C, "\001\005\004\225\027\032"}, - {0x1E0D, "\001\003\004\225\027\032"}, - {0x1E0E, "\001\005\004\225\212\271"}, - {0x1E0F, "\001\003\004\225\212\271"}, - {0x1E10, "\001\005\004\225\246"}, - {0x1E11, "\001\003\004\225\246"}, - {0x1E12, "\001\005\004\225\026\117\032"}, - {0x1E13, "\001\003\004\225\026\117\032"}, - {0x1E14, "\001\005\004\060\161\011\026\151"}, - {0x1E15, "\001\003\004\060\161\011\026\151"}, - {0x1E16, "\001\005\004\060\161\011\026\102"}, - {0x1E17, "\001\003\004\060\161\011\026\102"}, - {0x1E18, "\001\005\004\060\026\117\032"}, - {0x1E19, "\001\003\004\060\026\117\032"}, - {0x1E1A, "\001\005\004\060\143\032"}, - {0x1E1B, "\001\003\004\060\143\032"}, - {0x1E1C, "\001\005\004\060\246\011\160"}, - {0x1E1D, "\001\003\004\060\246\011\160"}, - {0x1E1E, "\001\005\004\355\027\007\025"}, - {0x1E1F, "\001\003\004\355\027\007\025"}, - {0x1E20, "\001\005\004\227\161"}, - {0x1E21, "\001\003\004\227\161"}, - {0x1E22, "\001\005\004\230\027\007\025"}, - {0x1E23, "\001\003\004\230\027\007\025"}, - {0x1E24, "\001\005\004\230\027\032"}, - {0x1E25, "\001\003\004\230\027\032"}, - {0x1E26, "\001\005\004\230\141"}, - {0x1E27, "\001\003\004\230\141"}, - {0x1E28, "\001\005\004\230\246"}, - {0x1E29, "\001\003\004\230\246"}, - {0x1E2A, "\001\005\004\230\160\032"}, - {0x1E2B, "\001\003\004\230\160\032"}, - {0x1E2C, "\001\005\004\072\143\032"}, - {0x1E2D, "\001\003\004\072\143\032"}, - {0x1E2E, "\001\005\004\072\141\011\026\102"}, - {0x1E2F, "\001\003\004\072\141\011\026\102"}, - {0x1E30, "\001\005\004\301\026\102"}, - {0x1E31, "\001\003\004\301\026\102"}, - {0x1E32, "\001\005\004\301\027\032"}, - {0x1E33, "\001\003\004\301\027\032"}, - {0x1E34, "\001\005\004\301\212\271"}, - {0x1E35, "\001\003\004\301\212\271"}, - {0x1E36, "\001\005\004\167\027\032"}, - {0x1E37, "\001\003\004\167\027\032"}, - {0x1E38, "\001\005\004\167\027\032\011\161"}, - {0x1E39, "\001\003\004\167\027\032\011\161"}, - {0x1E3A, "\001\005\004\167\212\271"}, - {0x1E3B, "\001\003\004\167\212\271"}, - {0x1E3C, "\001\005\004\167\026\117\032"}, - {0x1E3D, "\001\003\004\167\026\117\032"}, - {0x1E3E, "\001\005\004\256\026\102"}, - {0x1E3F, "\001\003\004\256\026\102"}, - {0x1E40, "\001\005\004\256\027\007\025"}, - {0x1E41, "\001\003\004\256\027\007\025"}, - {0x1E42, "\001\005\004\256\027\032"}, - {0x1E43, "\001\003\004\256\027\032"}, - {0x1E44, "\001\005\004\213\027\007\025"}, - {0x1E45, "\001\003\004\213\027\007\025"}, - {0x1E46, "\001\005\004\213\027\032"}, - {0x1E47, "\001\003\004\213\027\032"}, - {0x1E48, "\001\005\004\213\212\271"}, - {0x1E49, "\001\003\004\213\212\271"}, - {0x1E4A, "\001\005\004\213\026\117\032"}, - {0x1E4B, "\001\003\004\213\026\117\032"}, - {0x1E4C, "\001\005\004\050\143\011\026\102"}, - {0x1E4D, "\001\003\004\050\143\011\026\102"}, - {0x1E4E, "\001\005\004\050\143\011\141"}, - {0x1E4F, "\001\003\004\050\143\011\141"}, - {0x1E50, "\001\005\004\050\161\011\026\151"}, - {0x1E51, "\001\003\004\050\161\011\026\151"}, - {0x1E52, "\001\005\004\050\161\011\026\102"}, - {0x1E53, "\001\003\004\050\161\011\026\102"}, - {0x1E54, "\001\005\004\351\026\102"}, - {0x1E55, "\001\003\004\351\026\102"}, - {0x1E56, "\001\005\004\351\027\007\025"}, - {0x1E57, "\001\003\004\351\027\007\025"}, - {0x1E58, "\001\005\004\150\027\007\025"}, - {0x1E59, "\001\003\004\150\027\007\025"}, - {0x1E5A, "\001\005\004\150\027\032"}, - {0x1E5B, "\001\003\004\150\027\032"}, - {0x1E5C, "\001\005\004\150\027\032\011\161"}, - {0x1E5D, "\001\003\004\150\027\032\011\161"}, - {0x1E5E, "\001\005\004\150\212\271"}, - {0x1E5F, "\001\003\004\150\212\271"}, - {0x1E60, "\001\005\004\207\027\007\025"}, - {0x1E61, "\001\003\004\207\027\007\025"}, - {0x1E62, "\001\005\004\207\027\032"}, - {0x1E63, "\001\003\004\207\027\032"}, - {0x1E64, "\001\005\004\207\026\102\011\027\007\025"}, - {0x1E65, "\001\003\004\207\026\102\011\027\007\025"}, - {0x1E66, "\001\005\004\207\172\011\027\007\025"}, - {0x1E67, "\001\003\004\207\172\011\027\007\025"}, - {0x1E68, "\001\005\004\207\027\032\011\027\007\025"}, - {0x1E69, "\001\003\004\207\027\032\011\027\007\025"}, - {0x1E6A, "\001\005\004\236\027\007\025"}, - {0x1E6B, "\001\003\004\236\027\007\025"}, - {0x1E6C, "\001\005\004\236\027\032"}, - {0x1E6D, "\001\003\004\236\027\032"}, - {0x1E6E, "\001\005\004\236\212\271"}, - {0x1E6F, "\001\003\004\236\212\271"}, - {0x1E70, "\001\005\004\236\026\117\032"}, - {0x1E71, "\001\003\004\236\026\117\032"}, - {0x1E72, "\001\005\004\107\141\032"}, - {0x1E73, "\001\003\004\107\141\032"}, - {0x1E74, "\001\005\004\107\143\032"}, - {0x1E75, "\001\003\004\107\143\032"}, - {0x1E76, "\001\005\004\107\026\117\032"}, - {0x1E77, "\001\003\004\107\026\117\032"}, - {0x1E78, "\001\005\004\107\143\011\026\102"}, - {0x1E79, "\001\003\004\107\143\011\026\102"}, - {0x1E7A, "\001\005\004\107\161\011\141"}, - {0x1E7B, "\001\003\004\107\161\011\141"}, - {0x1E7C, "\001\005\004\324\143"}, - {0x1E7D, "\001\003\004\324\143"}, - {0x1E7E, "\001\005\004\324\027\032"}, - {0x1E7F, "\001\003\004\324\027\032"}, - {0x1E80, "\001\005\004\273\026\151"}, - {0x1E81, "\001\003\004\273\026\151"}, - {0x1E82, "\001\005\004\273\026\102"}, - {0x1E83, "\001\003\004\273\026\102"}, - {0x1E84, "\001\005\004\273\141"}, - {0x1E85, "\001\003\004\273\141"}, - {0x1E86, "\001\005\004\273\027\007\025"}, - {0x1E87, "\001\003\004\273\027\007\025"}, - {0x1E88, "\001\005\004\273\027\032"}, - {0x1E89, "\001\003\004\273\027\032"}, - {0x1E8A, "\001\005\004\310\027\007\025"}, - {0x1E8B, "\001\003\004\310\027\007\025"}, - {0x1E8C, "\001\005\004\310\141"}, - {0x1E8D, "\001\003\004\310\141"}, - {0x1E8E, "\001\005\004\240\027\007\025"}, - {0x1E8F, "\001\003\004\240\027\007\025"}, - {0x1E90, "\001\005\004\243\026\117"}, - {0x1E91, "\001\003\004\243\026\117"}, - {0x1E92, "\001\005\004\243\027\032"}, - {0x1E93, "\001\003\004\243\027\032"}, - {0x1E94, "\001\005\004\243\212\271"}, - {0x1E95, "\001\003\004\243\212\271"}, - {0x1E96, "\001\003\004\230\212\271"}, - {0x1E97, "\001\003\004\236\141"}, - {0x1E98, "\001\003\004\273\231\007\025"}, - {0x1E99, "\001\003\004\240\231\007\025"}, - {0x1E9A, "\001\003\004\046\371\271\040\037"}, - {0x1EA0, "\001\005\004\046\027\032"}, - {0x1EA1, "\001\003\004\046\027\032"}, - {0x1EA2, "\001\005\004\046\100\007\025"}, - {0x1EA3, "\001\003\004\046\100\007\025"}, - {0x1EA4, "\001\005\004\046\026\117\011\026\102"}, - {0x1EA5, "\001\003\004\046\026\117\011\026\102"}, - {0x1EA6, "\001\005\004\046\026\117\011\026\151"}, - {0x1EA7, "\001\003\004\046\026\117\011\026\151"}, - {0x1EA8, "\001\005\004\046\026\117\011\100\007\025"}, - {0x1EA9, "\001\003\004\046\026\117\011\100\007\025"}, - {0x1EAA, "\001\005\004\046\026\117\011\143"}, - {0x1EAB, "\001\003\004\046\026\117\011\143"}, - {0x1EAC, "\001\005\004\046\026\117\011\027\032"}, - {0x1EAD, "\001\003\004\046\026\117\011\027\032"}, - {0x1EAE, "\001\005\004\046\160\011\026\102"}, - {0x1EAF, "\001\003\004\046\160\011\026\102"}, - {0x1EB0, "\001\005\004\046\160\011\026\151"}, - {0x1EB1, "\001\003\004\046\160\011\026\151"}, - {0x1EB2, "\001\005\004\046\160\011\100\007\025"}, - {0x1EB3, "\001\003\004\046\160\011\100\007\025"}, - {0x1EB4, "\001\005\004\046\160\011\143"}, - {0x1EB5, "\001\003\004\046\160\011\143"}, - {0x1EB6, "\001\005\004\046\160\011\027\032"}, - {0x1EB7, "\001\003\004\046\160\011\027\032"}, - {0x1EB8, "\001\005\004\060\027\032"}, - {0x1EB9, "\001\003\004\060\027\032"}, - {0x1EBA, "\001\005\004\060\100\007\025"}, - {0x1EBB, "\001\003\004\060\100\007\025"}, - {0x1EBC, "\001\005\004\060\143"}, - {0x1EBD, "\001\003\004\060\143"}, - {0x1EBE, "\001\005\004\060\026\117\011\026\102"}, - {0x1EBF, "\001\003\004\060\026\117\011\026\102"}, - {0x1EC0, "\001\005\004\060\026\117\011\026\151"}, - {0x1EC1, "\001\003\004\060\026\117\011\026\151"}, - {0x1EC2, "\001\005\004\060\026\117\011\100\007\025"}, - {0x1EC3, "\001\003\004\060\026\117\011\100\007\025"}, - {0x1EC4, "\001\005\004\060\026\117\011\143"}, - {0x1EC5, "\001\003\004\060\026\117\011\143"}, - {0x1EC6, "\001\005\004\060\026\117\011\027\032"}, - {0x1EC7, "\001\003\004\060\026\117\011\027\032"}, - {0x1EC8, "\001\005\004\072\100\007\025"}, - {0x1EC9, "\001\003\004\072\100\007\025"}, - {0x1ECA, "\001\005\004\072\027\032"}, - {0x1ECB, "\001\003\004\072\027\032"}, - {0x1ECC, "\001\005\004\050\027\032"}, - {0x1ECD, "\001\003\004\050\027\032"}, - {0x1ECE, "\001\005\004\050\100\007\025"}, - {0x1ECF, "\001\003\004\050\100\007\025"}, - {0x1ED0, "\001\005\004\050\026\117\011\026\102"}, - {0x1ED1, "\001\003\004\050\026\117\011\026\102"}, - {0x1ED2, "\001\005\004\050\026\117\011\026\151"}, - {0x1ED3, "\001\003\004\050\026\117\011\026\151"}, - {0x1ED4, "\001\005\004\050\026\117\011\100\007\025"}, - {0x1ED5, "\001\003\004\050\026\117\011\100\007\025"}, - {0x1ED6, "\001\005\004\050\026\117\011\143"}, - {0x1ED7, "\001\003\004\050\026\117\011\143"}, - {0x1ED8, "\001\005\004\050\026\117\011\027\032"}, - {0x1ED9, "\001\003\004\050\026\117\011\027\032"}, - {0x1EDA, "\001\005\004\050\253\026\102"}, - {0x1EDB, "\001\003\004\050\253\026\102"}, - {0x1EDC, "\001\005\004\050\253\026\151"}, - {0x1EDD, "\001\003\004\050\253\026\151"}, - {0x1EDE, "\001\005\004\050\253\100\007\025"}, - {0x1EDF, "\001\003\004\050\253\100\007\025"}, - {0x1EE0, "\001\005\004\050\253\143"}, - {0x1EE1, "\001\003\004\050\253\143"}, - {0x1EE2, "\001\005\004\050\253\027\032"}, - {0x1EE3, "\001\003\004\050\253\027\032"}, - {0x1EE4, "\001\005\004\107\027\032"}, - {0x1EE5, "\001\003\004\107\027\032"}, - {0x1EE6, "\001\005\004\107\100\007\025"}, - {0x1EE7, "\001\003\004\107\100\007\025"}, - {0x1EE8, "\001\005\004\107\253\026\102"}, - {0x1EE9, "\001\003\004\107\253\026\102"}, - {0x1EEA, "\001\005\004\107\253\026\151"}, - {0x1EEB, "\001\003\004\107\253\026\151"}, - {0x1EEC, "\001\005\004\107\253\100\007\025"}, - {0x1EED, "\001\003\004\107\253\100\007\025"}, - {0x1EEE, "\001\005\004\107\253\143"}, - {0x1EEF, "\001\003\004\107\253\143"}, - {0x1EF0, "\001\005\004\107\253\027\032"}, - {0x1EF1, "\001\003\004\107\253\027\032"}, - {0x1EF2, "\001\005\004\240\026\151"}, - {0x1EF3, "\001\003\004\240\026\151"}, - {0x1EF4, "\001\005\004\240\027\032"}, - {0x1EF5, "\001\003\004\240\027\032"}, - {0x1EF6, "\001\005\004\240\100\007\025"}, - {0x1EF7, "\001\003\004\240\100\007\025"}, - {0x1EF8, "\001\005\004\240\143"}, - {0x1EF9, "\001\003\004\240\143"}, - {0x1F00, "\001\003\014\152\115"}, - {0x1F01, "\001\003\014\152\101"}, - {0x1F02, "\001\003\014\152\115\011\136"}, - {0x1F03, "\001\003\014\152\101\011\136"}, - {0x1F04, "\001\003\014\152\115\011\135"}, - {0x1F05, "\001\003\014\152\101\011\135"}, - {0x1F06, "\001\003\014\152\115\011\165"}, - {0x1F07, "\001\003\014\152\101\011\165"}, - {0x1F08, "\001\005\014\152\115"}, - {0x1F09, "\001\005\014\152\101"}, - {0x1F0A, "\001\005\014\152\115\011\136"}, - {0x1F0B, "\001\005\014\152\101\011\136"}, - {0x1F0C, "\001\005\014\152\115\011\135"}, - {0x1F0D, "\001\005\014\152\101\011\135"}, - {0x1F0E, "\001\005\014\152\115\011\165"}, - {0x1F0F, "\001\005\014\152\101\011\165"}, - {0x1F10, "\001\003\014\247\115"}, - {0x1F11, "\001\003\014\247\101"}, - {0x1F12, "\001\003\014\247\115\011\136"}, - {0x1F13, "\001\003\014\247\101\011\136"}, - {0x1F14, "\001\003\014\247\115\011\135"}, - {0x1F15, "\001\003\014\247\101\011\135"}, - {0x1F18, "\001\005\014\247\115"}, - {0x1F19, "\001\005\014\247\101"}, - {0x1F1A, "\001\005\014\247\115\011\136"}, - {0x1F1B, "\001\005\014\247\101\011\136"}, - {0x1F1C, "\001\005\014\247\115\011\135"}, - {0x1F1D, "\001\005\014\247\101\011\135"}, - {0x1F20, "\001\003\014\166\115"}, - {0x1F21, "\001\003\014\166\101"}, - {0x1F22, "\001\003\014\166\115\011\136"}, - {0x1F23, "\001\003\014\166\101\011\136"}, - {0x1F24, "\001\003\014\166\115\011\135"}, - {0x1F25, "\001\003\014\166\101\011\135"}, - {0x1F26, "\001\003\014\166\115\011\165"}, - {0x1F27, "\001\003\014\166\101\011\165"}, - {0x1F28, "\001\005\014\166\115"}, - {0x1F29, "\001\005\014\166\101"}, - {0x1F2A, "\001\005\014\166\115\011\136"}, - {0x1F2B, "\001\005\014\166\101\011\136"}, - {0x1F2C, "\001\005\014\166\115\011\135"}, - {0x1F2D, "\001\005\014\166\101\011\135"}, - {0x1F2E, "\001\005\014\166\115\011\165"}, - {0x1F2F, "\001\005\014\166\101\011\165"}, - {0x1F30, "\001\003\014\055\115"}, - {0x1F31, "\001\003\014\055\101"}, - {0x1F32, "\001\003\014\055\115\011\136"}, - {0x1F33, "\001\003\014\055\101\011\136"}, - {0x1F34, "\001\003\014\055\115\011\135"}, - {0x1F35, "\001\003\014\055\101\011\135"}, - {0x1F36, "\001\003\014\055\115\011\165"}, - {0x1F37, "\001\003\014\055\101\011\165"}, - {0x1F38, "\001\005\014\055\115"}, - {0x1F39, "\001\005\014\055\101"}, - {0x1F3A, "\001\005\014\055\115\011\136"}, - {0x1F3B, "\001\005\014\055\101\011\136"}, - {0x1F3C, "\001\005\014\055\115\011\135"}, - {0x1F3D, "\001\005\014\055\101\011\135"}, - {0x1F3E, "\001\005\014\055\115\011\165"}, - {0x1F3F, "\001\005\014\055\101\011\165"}, - {0x1F40, "\001\003\014\321\115"}, - {0x1F41, "\001\003\014\321\101"}, - {0x1F42, "\001\003\014\321\115\011\136"}, - {0x1F43, "\001\003\014\321\101\011\136"}, - {0x1F44, "\001\003\014\321\115\011\135"}, - {0x1F45, "\001\003\014\321\101\011\135"}, - {0x1F48, "\001\005\014\321\115"}, - {0x1F49, "\001\005\014\321\101"}, - {0x1F4A, "\001\005\014\321\115\011\136"}, - {0x1F4B, "\001\005\014\321\101\011\136"}, - {0x1F4C, "\001\005\014\321\115\011\135"}, - {0x1F4D, "\001\005\014\321\101\011\135"}, - {0x1F50, "\001\003\014\214\115"}, - {0x1F51, "\001\003\014\214\101"}, - {0x1F52, "\001\003\014\214\115\011\136"}, - {0x1F53, "\001\003\014\214\101\011\136"}, - {0x1F54, "\001\003\014\214\115\011\135"}, - {0x1F55, "\001\003\014\214\101\011\135"}, - {0x1F56, "\001\003\014\214\115\011\165"}, - {0x1F57, "\001\003\014\214\101\011\165"}, - {0x1F59, "\001\005\014\214\101"}, - {0x1F5B, "\001\005\014\214\101\011\136"}, - {0x1F5D, "\001\005\014\214\101\011\135"}, - {0x1F5F, "\001\005\014\214\101\011\165"}, - {0x1F60, "\001\003\014\147\115"}, - {0x1F61, "\001\003\014\147\101"}, - {0x1F62, "\001\003\014\147\115\011\136"}, - {0x1F63, "\001\003\014\147\101\011\136"}, - {0x1F64, "\001\003\014\147\115\011\135"}, - {0x1F65, "\001\003\014\147\101\011\135"}, - {0x1F66, "\001\003\014\147\115\011\165"}, - {0x1F67, "\001\003\014\147\101\011\165"}, - {0x1F68, "\001\005\014\147\115"}, - {0x1F69, "\001\005\014\147\101"}, - {0x1F6A, "\001\005\014\147\115\011\136"}, - {0x1F6B, "\001\005\014\147\101\011\136"}, - {0x1F6C, "\001\005\014\147\115\011\135"}, - {0x1F6D, "\001\005\014\147\101\011\135"}, - {0x1F6E, "\001\005\014\147\115\011\165"}, - {0x1F6F, "\001\005\014\147\101\011\165"}, - {0x1F70, "\001\003\014\152\136"}, - {0x1F71, "\001\003\014\152\135"}, - {0x1F72, "\001\003\014\247\136"}, - {0x1F73, "\001\003\014\247\135"}, - {0x1F74, "\001\003\014\166\136"}, - {0x1F75, "\001\003\014\166\135"}, - {0x1F76, "\001\003\014\055\136"}, - {0x1F77, "\001\003\014\055\135"}, - {0x1F78, "\001\003\014\321\136"}, - {0x1F79, "\001\003\014\321\135"}, - {0x1F7A, "\001\003\014\214\136"}, - {0x1F7B, "\001\003\014\214\135"}, - {0x1F7C, "\001\003\014\147\136"}, - {0x1F7D, "\001\003\014\147\135"}, - {0x1F80, "\001\003\014\152\115\011\055\032"}, - {0x1F81, "\001\003\014\152\101\011\055\032"}, - {0x1F82, "\001\003\014\152\115\011\136\011\055\032"}, - {0x1F83, "\001\003\014\152\101\011\136\011\055\032"}, - {0x1F84, "\001\003\014\152\115\011\135\011\055\032"}, - {0x1F85, "\001\003\014\152\101\011\135\011\055\032"}, - {0x1F86, "\001\003\014\152\115\011\165\011\055\032"}, - {0x1F87, "\001\003\014\152\101\011\165\011\055\032"}, - {0x1F88, "\001\005\014\152\115\011\055\032"}, - {0x1F89, "\001\005\014\152\101\011\055\032"}, - {0x1F8A, "\001\005\014\152\115\011\136\011\055\032"}, - {0x1F8B, "\001\005\014\152\101\011\136\011\055\032"}, - {0x1F8C, "\001\005\014\152\115\011\135\011\055\032"}, - {0x1F8D, "\001\005\014\152\101\011\135\011\055\032"}, - {0x1F8E, "\001\005\014\152\115\011\165\011\055\032"}, - {0x1F8F, "\001\005\014\152\101\011\165\011\055\032"}, - {0x1F90, "\001\003\014\166\115\011\055\032"}, - {0x1F91, "\001\003\014\166\101\011\055\032"}, - {0x1F92, "\001\003\014\166\115\011\136\011\055\032"}, - {0x1F93, "\001\003\014\166\101\011\136\011\055\032"}, - {0x1F94, "\001\003\014\166\115\011\135\011\055\032"}, - {0x1F95, "\001\003\014\166\101\011\135\011\055\032"}, - {0x1F96, "\001\003\014\166\115\011\165\011\055\032"}, - {0x1F97, "\001\003\014\166\101\011\165\011\055\032"}, - {0x1F98, "\001\005\014\166\115\011\055\032"}, - {0x1F99, "\001\005\014\166\101\011\055\032"}, - {0x1F9A, "\001\005\014\166\115\011\136\011\055\032"}, - {0x1F9B, "\001\005\014\166\101\011\136\011\055\032"}, - {0x1F9C, "\001\005\014\166\115\011\135\011\055\032"}, - {0x1F9D, "\001\005\014\166\101\011\135\011\055\032"}, - {0x1F9E, "\001\005\014\166\115\011\165\011\055\032"}, - {0x1F9F, "\001\005\014\166\101\011\165\011\055\032"}, - {0x1FA0, "\001\003\014\147\115\011\055\032"}, - {0x1FA1, "\001\003\014\147\101\011\055\032"}, - {0x1FA2, "\001\003\014\147\115\011\136\011\055\032"}, - {0x1FA3, "\001\003\014\147\101\011\136\011\055\032"}, - {0x1FA4, "\001\003\014\147\115\011\135\011\055\032"}, - {0x1FA5, "\001\003\014\147\101\011\135\011\055\032"}, - {0x1FA6, "\001\003\014\147\115\011\165\011\055\032"}, - {0x1FA7, "\001\003\014\147\101\011\165\011\055\032"}, - {0x1FA8, "\001\005\014\147\115\011\055\032"}, - {0x1FA9, "\001\005\014\147\101\011\055\032"}, - {0x1FAA, "\001\005\014\147\115\011\136\011\055\032"}, - {0x1FAB, "\001\005\014\147\101\011\136\011\055\032"}, - {0x1FAC, "\001\005\014\147\115\011\135\011\055\032"}, - {0x1FAD, "\001\005\014\147\101\011\135\011\055\032"}, - {0x1FAE, "\001\005\014\147\115\011\165\011\055\032"}, - {0x1FAF, "\001\005\014\147\101\011\165\011\055\032"}, - {0x1FB0, "\001\003\014\152\371\330"}, - {0x1FB1, "\001\003\014\152\161"}, - {0x1FB2, "\001\003\014\152\136\011\055\032"}, - {0x1FB3, "\001\003\014\152\055\032"}, - {0x1FB4, "\001\003\014\152\135\011\055\032"}, - {0x1FB6, "\001\003\014\152\165"}, - {0x1FB7, "\001\003\014\152\165\011\055\032"}, - {0x1FB8, "\001\005\014\152\371\330"}, - {0x1FB9, "\001\005\014\152\161"}, - {0x1FBA, "\001\005\014\152\136"}, - {0x1FBB, "\001\005\014\152\135"}, - {0x1FBC, "\001\005\014\152\055\032"}, - {0x1FBD, "\373\101"}, - {0x1FBE, "\055\032"}, - {0x1FBF, "\115"}, - {0x1FC0, "\165"}, - {0x1FC1, "\341\011\165"}, - {0x1FC2, "\001\003\014\166\136\011\055\032"}, - {0x1FC3, "\001\003\014\166\055\032"}, - {0x1FC4, "\001\003\014\166\135\011\055\032"}, - {0x1FC6, "\001\003\014\166\165"}, - {0x1FC7, "\001\003\014\166\165\011\055\032"}, - {0x1FC8, "\001\005\014\247\136"}, - {0x1FC9, "\001\005\014\247\135"}, - {0x1FCA, "\001\005\014\166\136"}, - {0x1FCB, "\001\005\014\166\135"}, - {0x1FCC, "\001\005\014\166\055\032"}, - {0x1FCD, "\115\011\136"}, - {0x1FCE, "\115\011\135"}, - {0x1FCF, "\115\011\165"}, - {0x1FD0, "\001\003\014\055\371\330"}, - {0x1FD1, "\001\003\014\055\161"}, - {0x1FD2, "\001\003\014\055\341\011\136"}, - {0x1FD3, "\001\003\014\055\341\011\135"}, - {0x1FD6, "\001\003\014\055\165"}, - {0x1FD7, "\001\003\014\055\341\011\165"}, - {0x1FD8, "\001\005\014\055\371\330"}, - {0x1FD9, "\001\005\014\055\161"}, - {0x1FDA, "\001\005\014\055\136"}, - {0x1FDB, "\001\005\014\055\135"}, - {0x1FDD, "\101\011\136"}, - {0x1FDE, "\101\011\135"}, - {0x1FDF, "\101\011\165\277"}, - {0x1FE0, "\001\003\014\214\371\330"}, - {0x1FE1, "\001\003\014\214\161"}, - {0x1FE2, "\001\003\014\214\341\011\136"}, - {0x1FE3, "\001\003\014\214\341\011\135"}, - {0x1FE4, "\001\003\014\371\171\115"}, - {0x1FE5, "\001\003\014\371\171\101"}, - {0x1FE6, "\001\003\014\214\165"}, - {0x1FE7, "\001\003\014\214\341\011\165"}, - {0x1FE8, "\001\005\014\214\371\330"}, - {0x1FE9, "\001\005\014\214\161"}, - {0x1FEA, "\001\005\014\214\136"}, - {0x1FEB, "\001\005\014\214\135"}, - {0x1FEC, "\001\005\014\371\171\101"}, - {0x1FED, "\341\011\136"}, - {0x1FEE, "\341\011\135"}, - {0x1FEF, "\136"}, - {0x1FF2, "\001\003\014\147\136\011\055\032"}, - {0x1FF3, "\001\003\014\147\055\032"}, - {0x1FF4, "\001\003\014\147\135\011\055\032"}, - {0x1FF6, "\001\003\014\147\165"}, - {0x1FF7, "\001\003\014\147\165\011\055\032"}, - {0x1FF8, "\001\005\014\321\136"}, - {0x1FF9, "\001\005\014\321\135"}, - {0x1FFA, "\001\005\014\147\136"}, - {0x1FFB, "\001\005\014\147\135"}, - {0x1FFC, "\001\005\014\147\055\032"}, - {0x1FFD, "\135"}, - {0x1FFE, "\101"}, - {0x2000, "\372\237"}, - {0x2001, "\371\222"}, - {0x2002, "\375\131"}, - {0x2003, "\375\007"}, - {0x2004, "\372\372\012\371\222"}, - {0x2005, "\372\141\012\371\222"}, - {0x2006, "\372\154\012\371\222"}, - {0x2007, "\371\026\373\330"}, - {0x2008, "\371\026\371\311"}, - {0x2009, "\371\026\373\166"}, - {0x200A, "\371\026\377\236"}, - {0x200B, "\371\026\232\056"}, - {0x200C, "\374\315\232\056"}, - {0x200D, "\373\264\232\056"}, - {0x200E, "\153\372\255"}, - {0x200F, "\153\372\244"}, - {0x2010, "\264\371\226"}, - {0x2011, "\264\371\226\373\264"}, - {0x2012, "\371\072\373\330"}, - {0x2013, "\371\072\372\237"}, - {0x2014, "\371\072\371\222"}, - {0x2015, "\210\372\263"}, - {0x2016, "\051\212\224"}, - {0x2017, "\051\264\032"}, - {0x2018, "\372\065\260"}, - {0x2019, "\372\065"}, - {0x201A, "\372\066\300"}, - {0x201B, "\372\066\326\260"}, - {0x201C, "\372\065\051\260"}, - {0x201D, "\372\065\051"}, - {0x201E, "\372\066\051\300"}, - {0x201F, "\372\066\051\326\260"}, - {0x2020, "\373\333"}, - {0x2021, "\051\373\333"}, - {0x2022, "\372\136"}, - {0x2023, "\372\136\371\326"}, - {0x2024, "\027\372\231\270"}, - {0x2025, "\027\372\231\051"}, - {0x2026, "\220\012\374\063"}, - {0x2027, "\027\012\375\070\012\376\153"}, - {0x2028, "\371\007\012\212"}, - {0x2029, "\371\007\012\372\324"}, - {0x202A, "\373\152\372\255"}, - {0x202B, "\373\152\372\244"}, - {0x202C, "\375\164\012\373\172\375\146"}, - {0x202D, "\373\174\372\255"}, - {0x202E, "\373\174\372\244"}, - {0x2030, "\015\335\371\160"}, - {0x2031, "\015\335\354\371\160"}, - {0x2032, "\371\065"}, - {0x2033, "\051\371\065"}, - {0x2034, "\371\050\371\065"}, - {0x2035, "\371\065\336"}, - {0x2036, "\051\371\065\336"}, - {0x2037, "\371\050\371\065\336"}, - {0x2038, "\375\032\373\112"}, - {0x2039, "\371\014\270\013\022\042"}, - {0x203A, "\371\014\270\013\022\037"}, - {0x203B, "\153\012\377\032"}, - {0x203C, "\051\027\371\132"}, - {0x203D, "\027\375\213"}, - {0x203E, "\264\007\025"}, - {0x203F, "\374\101\032"}, - {0x2040, "\374\101\007\025"}, - {0x2041, "\372\077\373\112"}, - {0x2042, "\374\336"}, - {0x2043, "\372\136\264\371\226"}, - {0x2044, "\210\373\200"}, - {0x2045, "\100\042\130\372\124"}, - {0x2046, "\100\173\130\372\124"}, - {0x206A, "\373\237\373\115\374\064"}, - {0x206B, "\373\025\373\115\374\064"}, - {0x206C, "\373\237\012\373\171\002"}, - {0x206D, "\373\025\012\373\171\002"}, - {0x206E, "\374\067\012\373\173\012\017\376\175"}, - {0x206F, "\374\067\012\373\173\012\017\376\213"}, - {0x2070, "\347\311"}, - {0x2074, "\347\200"}, - {0x2075, "\347\203"}, - {0x2076, "\347\233"}, - {0x2077, "\347\221"}, - {0x2078, "\347\204"}, - {0x2079, "\347\235"}, - {0x207A, "\347\134\162"}, - {0x207B, "\347\134\371\037"}, - {0x207C, "\347\134\142"}, - {0x207D, "\347\371\004\042"}, - {0x207E, "\347\371\004\037"}, - {0x207F, "\347\001\003\004\213"}, - {0x2080, "\357\311"}, - {0x2081, "\357\132"}, - {0x2082, "\357\154"}, - {0x2083, "\357\131"}, - {0x2084, "\357\200"}, - {0x2085, "\357\203"}, - {0x2086, "\357\233"}, - {0x2087, "\357\221"}, - {0x2088, "\357\204"}, - {0x2089, "\357\235"}, - {0x208A, "\357\134\162"}, - {0x208B, "\357\134\371\037"}, - {0x208C, "\357\134\142"}, - {0x208D, "\357\371\004\042"}, - {0x208E, "\357\371\004\037"}, - {0x20A0, "\015\377\327"}, - {0x20A1, "\015\373\074"}, - {0x20A2, "\015\375\077"}, - {0x20A3, "\015\375\240\375\241"}, - {0x20A4, "\015\376\060"}, - {0x20A5, "\015\376\126"}, - {0x20A6, "\015\376\172"}, - {0x20A7, "\015\376\310"}, - {0x20A8, "\015\372\350"}, - {0x20A9, "\015\374\131"}, - {0x20AA, "\015\376\221\377\072"}, - {0x20AB, "\015\375\154"}, - {0x20AC, "\015\375\211"}, - {0x20D0, "\023\374\114\013\022\042\007\025"}, - {0x20D1, "\023\374\114\013\022\037\007\025"}, - {0x20D2, "\023\212\224\372\103\371\267"}, - {0x20D3, "\023\212\224\372\225\371\267"}, - {0x20D4, "\023\043\007\371\044\371\312\007\025"}, - {0x20D5, "\023\043\007\371\044\223\007\025"}, - {0x20D6, "\023\043\013\022\042\007\025"}, - {0x20D7, "\023\043\013\022\037\007\025"}, - {0x20D8, "\023\231\372\050"}, - {0x20D9, "\023\231\007\371\044\223\372\050"}, - {0x20DA, "\023\231\007\371\044\371\312\372\050"}, - {0x20DB, "\023\131\220\007\025"}, - {0x20DC, "\023\200\220\007\025"}, - {0x20DD, "\023\252\372\061"}, - {0x20DE, "\023\021\372\061"}, - {0x20DF, "\023\371\111\372\061"}, - {0x20E0, "\023\252\372\061\011\210\361\371\275"}, - {0x20E1, "\023\043\042\011\037\007\025"}, - {0x2100, "\015\371\217\375\045\012"}, - {0x2101, "\015\374\343\374\373\377\112\012"}, - {0x2102, "\241\005\371\214"}, - {0x2103, "\372\236\375\023"}, - {0x2104, "\015\212\012\372\213"}, - {0x2105, "\015\372\037\375\014"}, - {0x2106, "\015\375\006\377\237"}, - {0x2107, "\372\223\375\111"}, - {0x2108, "\377\056"}, - {0x2109, "\372\236\375\220"}, - {0x210A, "\003\227\012\371\005"}, - {0x210B, "\005\230\012\371\005"}, - {0x210C, "\005\230\371\364"}, - {0x210D, "\230\005\371\214"}, - {0x210E, "\372\223\012\373\370"}, - {0x210F, "\372\223\012\373\370\371\253\154\371\310"}, - {0x2110, "\005\072\012\371\005"}, - {0x2111, "\005\072\371\364"}, - {0x2112, "\005\167\012\371\005"}, - {0x2113, "\003\167\012\371\005"}, - {0x2114, "\015\167\275\175"}, - {0x2115, "\213\005\371\214"}, - {0x2116, "\015\373\331"}, - {0x2117, "\373\077\012\376\316"}, - {0x2118, "\005\351\012\371\005"}, - {0x2119, "\351\005\371\214"}, - {0x211A, "\371\066\005\371\214"}, - {0x211B, "\005\150\012\371\005"}, - {0x211C, "\005\150\371\364"}, - {0x211D, "\150\005\371\214"}, - {0x211E, "\376\246\374\271"}, - {0x211F, "\377\033"}, - {0x2120, "\015\372\037\153\012\377\067"}, - {0x2121, "\015\372\170"}, - {0x2122, "\015\372\037\153\012\375\043"}, - {0x2123, "\377\252"}, - {0x2124, "\243\005\371\214"}, - {0x2125, "\015\376\237"}, - {0x2126, "\015\372\117"}, - {0x2127, "\015\372\117\371\016"}, - {0x2128, "\005\243\371\364"}, - {0x2129, "\003\014\055\260"}, - {0x212A, "\015\376\011"}, - {0x212B, "\015\374\310"}, - {0x212C, "\005\275\012\371\005"}, - {0x212D, "\005\241\371\364"}, - {0x212E, "\015\375\207"}, - {0x212F, "\003\060\012\371\005"}, - {0x2130, "\005\060\012\371\005"}, - {0x2131, "\005\355\012\371\005"}, - {0x2132, "\005\355\260"}, - {0x2133, "\005\256\012\371\005"}, - {0x2134, "\003\050\012\371\005"}, - {0x2135, "\015\374\277"}, - {0x2136, "\015\372\044"}, - {0x2137, "\015\375\254"}, - {0x2138, "\015\372\052"}, - {0x2153, "\356\132\372\372"}, - {0x2154, "\356\154\372\372"}, - {0x2155, "\356\132\372\217"}, - {0x2156, "\356\154\372\220"}, - {0x2157, "\356\131\372\220"}, - {0x2158, "\356\200\372\220"}, - {0x2159, "\356\132\372\154"}, - {0x215A, "\356\203\377\075"}, - {0x215B, "\356\132\371\367"}, - {0x215C, "\356\131\371\105"}, - {0x215D, "\356\203\371\105"}, - {0x215E, "\356\221\371\105"}, - {0x215F, "\371\306\373\200\132"}, - {0x2160, "\017\215\132"}, - {0x2161, "\017\215\154"}, - {0x2162, "\017\215\131"}, - {0x2163, "\017\215\200"}, - {0x2164, "\017\215\203"}, - {0x2165, "\017\215\233"}, - {0x2166, "\017\215\221"}, - {0x2167, "\017\215\204"}, - {0x2168, "\017\215\235"}, - {0x2169, "\017\215\354"}, - {0x216A, "\017\215\371\244"}, - {0x216B, "\017\215\371\141"}, - {0x216C, "\017\215\373\073"}, - {0x216D, "\017\215\371\223"}, - {0x216E, "\017\215\203\373\064"}, - {0x216F, "\017\215\371\160"}, - {0x2170, "\017\215\003\132"}, - {0x2171, "\017\215\003\154"}, - {0x2172, "\017\215\003\131"}, - {0x2173, "\017\215\003\200"}, - {0x2174, "\017\215\003\203"}, - {0x2175, "\017\215\003\233"}, - {0x2176, "\017\215\003\221"}, - {0x2177, "\017\215\003\204"}, - {0x2178, "\017\215\003\235"}, - {0x2179, "\017\215\003\354"}, - {0x217A, "\017\215\003\371\244"}, - {0x217B, "\017\215\003\371\141"}, - {0x217C, "\017\215\003\373\073"}, - {0x217D, "\017\215\003\371\223"}, - {0x217E, "\017\215\003\203\373\064"}, - {0x217F, "\017\215\003\371\160"}, - {0x2180, "\017\215\371\160\241\225"}, - {0x2181, "\017\215\203\371\160"}, - {0x2182, "\017\215\354\371\160"}, - {0x2190, "\043\013\022\042"}, - {0x2191, "\043\013\035\065"}, - {0x2192, "\043\013\022\037"}, - {0x2193, "\043\013\035\061"}, - {0x2194, "\043\042\011\037"}, - {0x2195, "\043\372\262"}, - {0x2196, "\043\371\376"}, - {0x2197, "\043\371\242"}, - {0x2198, "\043\371\252"}, - {0x2199, "\043\372\162"}, - {0x219A, "\043\013\022\042\371\220"}, - {0x219B, "\043\013\022\037\371\220"}, - {0x219C, "\043\013\022\042\372\120"}, - {0x219D, "\043\013\022\037\372\120"}, - {0x219E, "\043\013\022\042\040\154\372\127"}, - {0x219F, "\043\013\035\065\040\154\372\127"}, - {0x21A0, "\043\013\022\037\040\154\372\127"}, - {0x21A1, "\043\013\035\061\040\154\372\127"}, - {0x21A2, "\043\013\022\042\040\371\101"}, - {0x21A3, "\043\013\022\037\040\371\101"}, - {0x21A4, "\043\371\133\307\013\022\042"}, - {0x21A5, "\043\371\133\307\013\035\065"}, - {0x21A6, "\043\371\133\307\013\022\037"}, - {0x21A7, "\043\371\133\307\013\035\061"}, - {0x21A8, "\043\372\262\371\253\374\360"}, - {0x21A9, "\043\013\022\042\130\100"}, - {0x21AA, "\043\013\022\037\130\100"}, - {0x21AB, "\043\013\022\042\130\372\210"}, - {0x21AC, "\043\013\022\037\130\372\210"}, - {0x21AD, "\043\373\202\372\120"}, - {0x21AE, "\043\373\202\371\220"}, - {0x21AF, "\043\013\035\061\007\377\323"}, - {0x21B0, "\043\013\035\065\130\302\013\022\042"}, - {0x21B1, "\043\013\035\065\130\302\013\022\037"}, - {0x21B2, "\043\013\035\061\130\302\013\022\042"}, - {0x21B3, "\043\013\035\061\130\302\013\022\037"}, - {0x21B4, "\043\013\022\037\130\222\013\035\061"}, - {0x21B5, "\043\013\035\061\130\222\013\022\042"}, - {0x21B6, "\043\374\043\007\371\044\371\312\007\025"}, - {0x21B7, "\043\374\043\007\371\044\223\007\025"}, - {0x21B8, "\043\371\376\371\370\377\240\210\372\103"}, - {0x21B9, "\043\013\022\042\371\370\132\307\371\245\043\013\022\037\371\370\132\307"}, - {0x21BA, "\043\007\371\044\371\312\040\252\371\307"}, - {0x21BB, "\043\007\371\044\223\040\252\371\307"}, - {0x21BC, "\371\027\013\022\042\130\371\137\013\035\065"}, - {0x21BD, "\371\027\013\022\042\130\371\137\013\035\061"}, - {0x21BE, "\371\027\013\035\065\130\371\137\013\022\037"}, - {0x21BF, "\371\027\013\035\065\130\371\137\013\022\042"}, - {0x21C0, "\371\027\013\022\037\130\371\137\013\035\065"}, - {0x21C1, "\371\027\013\022\037\130\371\137\013\035\061"}, - {0x21C2, "\371\027\013\035\061\130\371\137\013\022\037"}, - {0x21C3, "\371\027\013\035\061\130\371\137\013\022\042"}, - {0x21C4, "\043\013\022\037\371\245\043\013\022\042"}, - {0x21C5, "\043\013\035\065\040\042\373\114\043\013\035\061"}, - {0x21C6, "\043\013\022\042\371\245\043\013\022\037"}, - {0x21C7, "\372\121\012\372\063\013\022\042"}, - {0x21C8, "\372\121\012\372\063\013\035\065"}, - {0x21C9, "\372\121\012\372\063\013\022\037"}, - {0x21CA, "\372\121\012\372\063\013\035\061"}, - {0x21CB, "\371\027\013\022\042\371\245\371\027\013\022\037"}, - {0x21CC, "\371\027\013\022\037\371\245\371\027\013\022\042"}, - {0x21CD, "\051\043\013\022\042\371\220"}, - {0x21CE, "\051\043\042\011\037\371\220"}, - {0x21CF, "\051\043\013\022\037\371\220"}, - {0x21D0, "\051\043\013\022\042"}, - {0x21D1, "\051\043\013\035\065"}, - {0x21D2, "\051\043\013\022\037"}, - {0x21D3, "\051\043\013\035\061"}, - {0x21D4, "\051\043\042\011\037"}, - {0x21D5, "\051\043\372\262"}, - {0x21D6, "\051\043\371\376"}, - {0x21D7, "\051\043\371\242"}, - {0x21D8, "\051\043\371\252"}, - {0x21D9, "\051\043\372\162"}, - {0x21DA, "\371\050\043\013\022\042"}, - {0x21DB, "\371\050\043\013\022\037"}, - {0x21DC, "\043\013\022\042\007\374\102"}, - {0x21DD, "\043\013\022\037\007\374\102"}, - {0x21DE, "\043\013\035\065\130\051\210"}, - {0x21DF, "\043\013\035\061\130\051\210"}, - {0x21E0, "\043\372\131\013\022\042"}, - {0x21E1, "\043\372\131\013\035\065"}, - {0x21E2, "\043\372\131\013\022\037"}, - {0x21E3, "\043\372\131\013\035\061"}, - {0x21E4, "\043\013\022\042\371\370\132\307"}, - {0x21E5, "\043\013\022\037\371\370\132\307"}, - {0x21E6, "\043\371\334\013\022\042"}, - {0x21E7, "\043\371\334\013\035\065"}, - {0x21E8, "\043\371\334\013\022\037"}, - {0x21E9, "\043\371\334\013\035\061"}, - {0x21EA, "\043\371\334\013\035\065\040\376\274\371\133\307"}, - {0x2200, "\335\377\213"}, - {0x2201, "\375\044"}, - {0x2202, "\375\166\376\273"}, - {0x2203, "\373\236\375\216"}, - {0x2204, "\373\236\376\167\362"}, - {0x2205, "\375\200\377\256"}, - {0x2206, "\375\341"}, - {0x2207, "\376\171"}, - {0x2208, "\373\033\040"}, - {0x2209, "\376\165\362\040"}, - {0x220A, "\144\373\033\040"}, - {0x220B, "\371\266\371\075\373\017"}, - {0x220C, "\371\113\371\266\362\371\075\373\017"}, - {0x220D, "\144\371\266\371\075\373\017"}, - {0x220E, "\375\021\376\366\375\221\375\163"}, - {0x220F, "\371\313\012\022\371\230"}, - {0x2210, "\375\061\012\022\371\230"}, - {0x2211, "\377\113\012\022\371\230"}, - {0x2212, "\134\371\037"}, - {0x2213, "\134\376\145"}, - {0x2214, "\162\371\246"}, - {0x2215, "\210\361\012\372\242"}, - {0x2216, "\373\133\375\110"}, - {0x2217, "\371\032\371\011"}, - {0x2218, "\371\032\231"}, - {0x2219, "\371\032\372\136"}, - {0x221A, "\372\335\371\265"}, - {0x221B, "\372\335\375\100"}, - {0x221C, "\372\335\374\010"}, - {0x221D, "\376\354\040"}, - {0x221E, "\375\343"}, - {0x221F, "\371\263\173"}, - {0x2220, "\371\263"}, - {0x2221, "\371\263\373\276"}, - {0x2222, "\371\263\377\121"}, - {0x2223, "\371\361\132\373\135\012"}, - {0x2224, "\376\166\362\132\373\135\012"}, - {0x2225, "\372\325\040"}, - {0x2226, "\334\372\325\040"}, - {0x2227, "\011\371\301"}, - {0x2228, "\114\371\301"}, - {0x2229, "\372\270"}, - {0x222A, "\372\376"}, - {0x222B, "\371\106"}, - {0x222C, "\371\106\051"}, - {0x222D, "\371\106\371\050"}, - {0x222E, "\371\106\012\371\012"}, - {0x222F, "\371\106\012\377\132"}, - {0x2230, "\371\106\012\377\271"}, - {0x2231, "\371\106\007\371\044\223"}, - {0x2232, "\371\106\012\371\012\007\371\044\223"}, - {0x2233, "\371\106\012\371\012\007\371\044\371\312"}, - {0x2234, "\371\042\375\055"}, - {0x2235, "\376\271\306"}, - {0x2236, "\376\374"}, - {0x2237, "\374\001"}, - {0x2238, "\371\037\371\246"}, - {0x2239, "\375\215"}, - {0x223A, "\374\001\375\270"}, - {0x223B, "\375\312"}, - {0x223C, "\371\032\143"}, - {0x223D, "\371\032\143\371\016"}, - {0x223E, "\207\372\224\371\016"}, - {0x223F, "\377\073"}, - {0x2240, "\371\313\375\072"}, - {0x2241, "\334\143"}, - {0x2242, "\371\037\143"}, - {0x2243, "\373\040\142\040"}, - {0x2244, "\334\373\040\142\040"}, - {0x2245, "\371\335\142\040"}, - {0x2246, "\371\335\371\112\334\372\365\142\040"}, - {0x2247, "\216\371\335\216\372\365\142\040"}, - {0x2248, "\372\331\142\040"}, - {0x2249, "\334\372\331\142\040"}, - {0x224A, "\372\331\142\114\142\040"}, - {0x224B, "\371\050\143"}, - {0x224C, "\375\201\142\040"}, - {0x224D, "\371\010\040"}, - {0x224E, "\373\221\371\010\040"}, - {0x224F, "\373\133\052"}, - {0x2250, "\377\175\013\022\376\056"}, - {0x2251, "\373\221\142\040"}, - {0x2252, "\371\335\142\040\114\371\233\012"}, - {0x2253, "\371\233\012\114\371\335\142\040"}, - {0x2254, "\371\350\142"}, - {0x2255, "\142\371\350"}, - {0x2256, "\231\371\077\142"}, - {0x2257, "\142\130\231\007\025"}, - {0x2258, "\375\064\040"}, - {0x2259, "\375\206"}, - {0x225A, "\377\333\040"}, - {0x225B, "\142\130\303\007\025"}, - {0x225C, "\142\371\270"}, - {0x225D, "\142\371\042\375\162\040"}, - {0x225E, "\373\276\371\042"}, - {0x225F, "\377\330\007\375\157"}, - {0x2260, "\334\142\040"}, - {0x2261, "\373\234\040"}, - {0x2262, "\334\373\234\040"}, - {0x2263, "\372\365\371\010\040"}, - {0x2264, "\162\144\114\142\040"}, - {0x2265, "\162\262\114\142\040"}, - {0x2266, "\162\144\306\371\245\142\040"}, - {0x2267, "\162\262\306\371\245\142\040"}, - {0x2268, "\162\144\371\112\334\142\040"}, - {0x2269, "\162\262\371\112\334\142\040"}, - {0x226A, "\373\046\162\144\306"}, - {0x226B, "\373\046\162\262\306"}, - {0x226C, "\052"}, - {0x226D, "\334\371\010\040"}, - {0x226E, "\362\162\144\306"}, - {0x226F, "\362\162\262\306"}, - {0x2270, "\216\162\144\216\142\040"}, - {0x2271, "\216\162\262\216\142\040"}, - {0x2272, "\162\144\114\371\010\040"}, - {0x2273, "\162\262\114\371\010\040"}, - {0x2274, "\216\162\144\216\371\010\040"}, - {0x2275, "\216\162\262\216\371\010\040"}, - {0x2276, "\162\144\114\162\262\306"}, - {0x2277, "\162\262\114\162\144\306"}, - {0x2278, "\216\162\144\216\162\262\306"}, - {0x2279, "\216\162\262\216\162\144\306"}, - {0x227A, "\372\011"}, - {0x227B, "\371\323"}, - {0x227C, "\372\011\114\371\361\142\040"}, - {0x227D, "\371\323\114\371\361\142\040"}, - {0x227E, "\372\011\114\371\361\371\010\040"}, - {0x227F, "\371\323\114\371\361\371\010\040"}, - {0x2280, "\371\113\372\011\362"}, - {0x2281, "\371\113\371\323\362"}, - {0x2282, "\371\322\012"}, - {0x2283, "\371\324\012"}, - {0x2284, "\362\132\371\322\012"}, - {0x2285, "\362\132\371\324\012"}, - {0x2286, "\371\322\114\142\040"}, - {0x2287, "\371\324\114\142\040"}, - {0x2288, "\216\132\371\322\216\142\040"}, - {0x2289, "\216\132\371\324\216\142\040"}, - {0x228A, "\371\322\371\112\334\142\040"}, - {0x228B, "\371\324\371\112\334\142\040"}, - {0x228C, "\372\312"}, - {0x228D, "\372\112\012\372\312"}, - {0x228E, "\372\376\012\372\312"}, - {0x228F, "\371\233\371\265\012"}, - {0x2290, "\372\003\021\012"}, - {0x2291, "\371\233\371\265\114\142\040"}, - {0x2292, "\372\003\021\114\142\040"}, - {0x2293, "\375\027\021"}, - {0x2294, "\375\067\371\265"}, - {0x2295, "\162\034"}, - {0x2296, "\371\037\034"}, - {0x2297, "\372\313\371\042\034"}, - {0x2298, "\210\361\012\372\242\146"}, - {0x2299, "\371\032\027\034"}, - {0x229A, "\371\032\231\034"}, - {0x229B, "\371\032\371\011\034"}, - {0x229C, "\142\034"}, - {0x229D, "\371\072\034"}, - {0x229E, "\162\371\357"}, - {0x229F, "\371\037\371\357"}, - {0x22A0, "\372\313\371\042\371\357"}, - {0x22A1, "\371\032\027\371\357"}, - {0x22A2, "\307\173"}, - {0x22A3, "\307\042"}, - {0x22A4, "\307\013\035\061"}, - {0x22A5, "\307\013\035\065"}, - {0x22A6, "\374\334"}, - {0x22A7, "\376\142"}, - {0x22A8, "\374\124"}, - {0x22A9, "\376\234"}, - {0x22AA, "\210\224\371\050\130\372\374\040\037"}, - {0x22AB, "\210\224\051\130\372\374\040\037\051"}, - {0x22AC, "\371\113\376\355\362"}, - {0x22AD, "\362\374\124"}, - {0x22AE, "\376\170\362"}, - {0x22AF, "\376\214\224\051\130\372\374\040\037\051"}, - {0x22B0, "\376\350\372\156\374\020"}, - {0x22B1, "\371\323\372\156\374\020"}, - {0x22B2, "\371\175\371\063\012"}, - {0x22B3, "\371\266\371\075\371\175\371\063"}, - {0x22B4, "\371\175\371\063\114\142\040"}, - {0x22B5, "\371\266\371\075\371\175\371\063\114\142\040"}, - {0x22B6, "\372\003\012"}, - {0x22B7, "\371\233\012"}, - {0x22B8, "\376\160"}, - {0x22B9, "\376\111\375\300\375\053"}, - {0x22BA, "\375\346"}, - {0x22BB, "\114\375\214"}, - {0x22BC, "\334\011"}, - {0x22BD, "\334\114"}, - {0x22BE, "\371\263\173\130\371\052"}, - {0x22BF, "\265\371\316"}, - {0x22C0, "\011\371\301\012\022\371\230"}, - {0x22C1, "\114\371\301\012\022\371\230"}, - {0x22C2, "\372\270\012\022\371\230"}, - {0x22C3, "\377\035\012\022\371\230"}, - {0x22C4, "\371\032\371\111"}, - {0x22C5, "\371\032\027"}, - {0x22C6, "\371\032\303"}, - {0x22C7, "\375\147\372\313"}, - {0x22C8, "\372\114\373\347"}, - {0x22C9, "\371\313\372\150\040\042\012\373\156\371\063"}, - {0x22CA, "\371\313\372\150\040\037\012\373\156\371\063"}, - {0x22CB, "\371\313\372\150\040\042"}, - {0x22CC, "\371\313\372\150\040\037"}, - {0x22CD, "\371\037\143\371\016"}, - {0x22CE, "\114\371\301\374\016"}, - {0x22CF, "\011\371\301\374\016"}, - {0x22D0, "\371\322\051"}, - {0x22D1, "\371\324\051"}, - {0x22D2, "\372\270\051"}, - {0x22D3, "\372\376\051"}, - {0x22D4, "\373\176"}, - {0x22D5, "\142\011\372\325\040"}, - {0x22D6, "\162\144\306\371\246"}, - {0x22D7, "\162\262\306\371\246"}, - {0x22D8, "\373\075\162\144\306"}, - {0x22D9, "\373\075\162\262\306"}, - {0x22DA, "\162\144\114\142\114\162\262\306"}, - {0x22DB, "\162\262\114\142\114\162\144\306"}, - {0x22DC, "\142\114\162\144\306"}, - {0x22DD, "\142\114\162\262\306"}, - {0x22DE, "\142\114\372\011"}, - {0x22DF, "\375\173\114\371\323"}, - {0x22E0, "\216\374\003\216\142\040"}, - {0x22E1, "\216\374\060\216\142\040"}, - {0x22E2, "\216\371\233\371\265\216\142\040"}, - {0x22E3, "\216\372\003\021\216\142\040"}, - {0x22E4, "\371\233\021\114\372\241\012"}, - {0x22E5, "\372\003\021\114\372\241\012"}, - {0x22E6, "\162\144\371\112\334\371\010\040"}, - {0x22E7, "\162\262\371\112\334\371\010\040"}, - {0x22E8, "\374\003\371\112\334\371\010\040"}, - {0x22E9, "\374\060\371\112\334\371\010\040"}, - {0x22EA, "\362\132\371\175\371\063\012"}, - {0x22EB, "\371\113\371\266\362\371\075\371\175\371\063"}, - {0x22EC, "\216\371\175\371\063\216\142\040"}, - {0x22ED, "\216\142\216\375\056\371\075\371\175\371\063"}, - {0x22EE, "\131\220\377\253"}, - {0x22EF, "\131\220\376\163"}, - {0x22F0, "\131\220\373\132\013\035\222\065\040\037"}, - {0x22F1, "\131\220\373\132\013\035\222\061\040\037"}, - {0x2300, "\015\375\143"}, - {0x2302, "\376\076"}, - {0x2303, "\302\012\043\013\035\065"}, - {0x2304, "\302\012\043\013\035\061"}, - {0x2305, "\376\353"}, - {0x2306, "\376\307"}, - {0x2307, "\212\372\120"}, - {0x2308, "\373\366\040\042"}, - {0x2309, "\373\366\040\037"}, - {0x230A, "\373\367\040\042"}, - {0x230B, "\373\367\040\037"}, - {0x230C, "\372\111\371\252"}, - {0x230D, "\372\111\372\162"}, - {0x230E, "\372\111\371\242"}, - {0x230F, "\372\111\371\376"}, - {0x2310, "\134\372\116\336"}, - {0x2311, "\376\276\371\265"}, - {0x2312, "\371\052"}, - {0x2313, "\377\063"}, - {0x2314, "\377\062"}, - {0x2315, "\375\177\377\233"}, - {0x2316, "\372\265\012\376\345"}, - {0x2317, "\021\012\377\267"}, - {0x2318, "\015\012\027\375\113"}, - {0x2319, "\134\372\116\260"}, - {0x231A, "\376\151"}, - {0x231B, "\377\036"}, - {0x231C, "\222\371\376"}, - {0x231D, "\222\371\242"}, - {0x231E, "\222\372\162"}, - {0x231F, "\222\371\252"}, - {0x2320, "\267\371\177\373\113"}, - {0x2321, "\267\371\234\373\113"}, - {0x2322, "\373\305"}, - {0x2323, "\377\117"}, - {0x2324, "\302\012\043\013\035\065\052\154\377\215\375\317"}, - {0x2325, "\377\212\376\244"}, - {0x2326, "\375\172\040\037"}, - {0x2327, "\310\371\077\371\316"}, - {0x2328, "\375\040"}, - {0x2329, "\100\013\022\042"}, - {0x232A, "\100\013\022\037"}, - {0x232B, "\375\171\040\042"}, - {0x232C, "\374\311\012\374\363"}, - {0x232D, "\375\102"}, - {0x232E, "\376\351\375\320"}, - {0x232F, "\377\135"}, - {0x2330, "\375\073\377\211"}, - {0x2331, "\376\247\012\376\117"}, - {0x2332, "\377\034\375\051"}, - {0x2333, "\376\305"}, - {0x2334, "\374\305"}, - {0x2335, "\375\237"}, - {0x2336, "\015\012\123\122\376\372"}, - {0x2337, "\015\012\123\122\363\373\300"}, - {0x2338, "\015\012\123\122\377\334"}, - {0x2339, "\015\012\123\122\375\153"}, - {0x233A, "\015\012\123\122\377\010"}, - {0x233B, "\015\012\123\122\374\333"}, - {0x233C, "\015\012\123\122\377\007"}, - {0x233D, "\015\012\123\122\375\242"}, - {0x233E, "\015\012\123\122\374\362"}, - {0x233F, "\015\012\123\122\375\066\175"}, - {0x2340, "\015\012\123\122\375\057\371\220"}, - {0x2341, "\015\012\123\122\363\361"}, - {0x2342, "\015\012\123\122\363\361\371\275"}, - {0x2343, "\015\012\123\122\363\162\144\306"}, - {0x2344, "\015\012\123\122\363\162\262\306"}, - {0x2345, "\015\012\123\122\372\042\013\022\042"}, - {0x2346, "\015\012\123\122\372\042\013\022\037"}, - {0x2347, "\015\012\123\122\363\376\055"}, - {0x2348, "\015\012\123\122\363\375\054"}, - {0x2349, "\015\012\123\122\374\036"}, - {0x234A, "\015\012\123\122\307\013\035\061\371\047"}, - {0x234B, "\015\012\123\122\377\053"}, - {0x234C, "\015\012\123\122\363\117\371\016"}, - {0x234D, "\015\012\123\122\363\371\270"}, - {0x234E, "\015\012\123\122\373\172"}, - {0x234F, "\015\012\123\122\372\042\013\035\065"}, - {0x2350, "\015\012\123\122\363\372\216"}, - {0x2351, "\015\012\123\122\307\013\035\065"}, - {0x2352, "\015\012\123\122\375\015"}, - {0x2353, "\015\012\123\122\363\117"}, - {0x2354, "\015\012\123\122\363\375\127"}, - {0x2355, "\015\012\123\122\375\217"}, - {0x2356, "\015\012\123\122\372\042\013\035\061"}, - {0x2357, "\015\012\123\122\363\375\176"}, - {0x2358, "\015\012\123\122\371\216\371\047"}, - {0x2359, "\015\012\123\122\371\270\371\047"}, - {0x235A, "\015\012\123\122\371\111\371\047"}, - {0x235B, "\015\012\123\122\144\231\371\047"}, - {0x235C, "\015\012\123\122\231\371\047"}, - {0x235D, "\015\012\123\122\374\265"}, - {0x235E, "\015\012\123\122\371\216\371\357"}, - {0x235F, "\015\012\123\122\375\037"}, - {0x2360, "\015\012\123\122\374\375\021"}, - {0x2361, "\015\012\123\122\377\141"}, - {0x2362, "\015\012\123\122\375\062"}, - {0x2363, "\015\012\123\122\377\142"}, - {0x2364, "\015\012\123\122\376\127"}, - {0x2365, "\015\012\123\122\375\145"}, - {0x2366, "\015\012\123\122\373\176"}, - {0x2367, "\015\012\123\122\372\212"}, - {0x2368, "\015\012\123\122\373\305"}, - {0x2369, "\015\012\123\122\376\144"}, - {0x236A, "\015\012\123\122\374\356"}, - {0x236B, "\015\012\123\122\377\250"}, - {0x236C, "\015\012\123\122\377\324"}, - {0x236D, "\015\012\123\122\374\302"}, - {0x236E, "\015\012\123\122\372\010\371\047"}, - {0x236F, "\015\012\123\122\363\372\241\012"}, - {0x2370, "\015\012\123\122\363\375\344"}, - {0x2371, "\015\012\123\122\376\215"}, - {0x2372, "\015\012\123\122\376\216"}, - {0x2373, "\015\012\123\122\055"}, - {0x2374, "\015\012\123\122\371\171"}, - {0x2375, "\015\012\123\122\147"}, - {0x2376, "\015\012\123\122\152\371\047"}, - {0x2377, "\015\012\123\122\247\371\047"}, - {0x2378, "\015\012\123\122\055\371\047"}, - {0x2379, "\015\012\123\122\147\371\047"}, - {0x237A, "\015\012\123\122\152"}, - {0x2400, "\015\335\373\326"}, - {0x2401, "\015\371\142\373\111"}, - {0x2402, "\015\371\142\012\372\166"}, - {0x2403, "\015\070\012\372\166"}, - {0x2404, "\015\070\012\371\255"}, - {0x2405, "\015\373\123"}, - {0x2406, "\015\373\106\012\372\147"}, - {0x2407, "\015\012\374\051"}, - {0x2408, "\015\371\026\373\034"}, - {0x2409, "\377\134\012\372\163\372\263"}, - {0x240A, "\015\012\373\066\012\212"}, - {0x240B, "\015\012\372\163\224"}, - {0x240C, "\015\012\377\054\012\373\346"}, - {0x240D, "\015\012\374\023\012\373\067"}, - {0x240E, "\015\373\230\372\047"}, - {0x240F, "\015\007\372\047"}, - {0x2410, "\015\373\016\371\255"}, - {0x2411, "\015\012\371\024\012\372\055\132"}, - {0x2412, "\015\012\371\024\012\372\055\154"}, - {0x2413, "\015\012\371\024\012\372\055\131"}, - {0x2414, "\015\012\371\024\012\372\055\200"}, - {0x2415, "\015\373\106\012\372\147\223"}, - {0x2416, "\015\012\374\065"}, - {0x2417, "\015\012\070\012\304\012\371\255"}, - {0x2418, "\015\373\107"}, - {0x2419, "\015\012\070\012\374\061"}, - {0x241A, "\015\012\374\057"}, - {0x241B, "\015\375\116"}, - {0x241C, "\015\371\007\012\373\164"}, - {0x241D, "\015\371\007\012\373\216"}, - {0x241E, "\015\371\007\375\107"}, - {0x241F, "\015\371\007\375\115"}, - {0x2420, "\015\335\371\026"}, - {0x2421, "\015\012\374\062"}, - {0x2422, "\015\377\270\335\376\044"}, - {0x2423, "\374\376\376\260"}, - {0x2424, "\015\012\376\222\212"}, - {0x2440, "\100\371\043"}, - {0x2441, "\375\026\371\043"}, - {0x2442, "\373\177\371\043"}, - {0x2443, "\373\177\352\371\043"}, - {0x2444, "\372\210\012\375\022\371\043"}, - {0x2445, "\372\114\373\347\371\043"}, - {0x2446, "\375\336\012\377\126\374\354\371\043"}, - {0x2447, "\376\150\226\375\035\371\043"}, - {0x2448, "\371\072\371\043"}, - {0x2449, "\373\331\012\375\046\371\043"}, - {0x244A, "\051\210\361\371\275\371\043"}, - {0x2460, "\017\132\034"}, - {0x2461, "\017\154\034"}, - {0x2462, "\017\131\034"}, - {0x2463, "\017\200\034"}, - {0x2464, "\017\203\034"}, - {0x2465, "\017\233\034"}, - {0x2466, "\017\221\034"}, - {0x2467, "\017\204\034"}, - {0x2468, "\017\235\034"}, - {0x2469, "\163\354\034"}, - {0x246A, "\163\371\244\034"}, - {0x246B, "\163\371\141\034"}, - {0x246C, "\163\372\024\034"}, - {0x246D, "\163\372\012\034"}, - {0x246E, "\163\372\013\034"}, - {0x246F, "\163\371\250\034"}, - {0x2470, "\163\371\353\034"}, - {0x2471, "\163\371\351\034"}, - {0x2472, "\163\371\352\034"}, - {0x2473, "\163\372\031\034"}, - {0x2474, "\017\132\052\053"}, - {0x2475, "\017\154\052\053"}, - {0x2476, "\017\131\052\053"}, - {0x2477, "\017\200\052\053"}, - {0x2478, "\017\203\052\053"}, - {0x2479, "\017\233\052\053"}, - {0x247A, "\017\221\052\053"}, - {0x247B, "\017\204\052\053"}, - {0x247C, "\017\235\052\053"}, - {0x247D, "\163\354\052\053"}, - {0x247E, "\163\371\244\052\053"}, - {0x247F, "\163\371\141\052\053"}, - {0x2480, "\163\372\024\052\053"}, - {0x2481, "\163\372\012\052\053"}, - {0x2482, "\163\372\013\052\053"}, - {0x2483, "\163\371\250\052\053"}, - {0x2484, "\163\371\353\052\053"}, - {0x2485, "\163\371\351\052\053"}, - {0x2486, "\163\371\352\052\053"}, - {0x2487, "\163\372\031\052\053"}, - {0x2488, "\017\132\027"}, - {0x2489, "\017\154\027"}, - {0x248A, "\017\131\027"}, - {0x248B, "\017\200\027"}, - {0x248C, "\017\203\027"}, - {0x248D, "\017\233\027"}, - {0x248E, "\017\221\027"}, - {0x248F, "\017\204\027"}, - {0x2490, "\017\235\027"}, - {0x2491, "\163\354\027"}, - {0x2492, "\163\371\244\027"}, - {0x2493, "\163\371\141\027"}, - {0x2494, "\163\372\024\027"}, - {0x2495, "\163\372\012\027"}, - {0x2496, "\163\372\013\027"}, - {0x2497, "\163\371\250\027"}, - {0x2498, "\163\371\353\027"}, - {0x2499, "\163\371\351\027"}, - {0x249A, "\163\371\352\027"}, - {0x249B, "\163\372\031\027"}, - {0x249C, "\001\003\004\046\052\053"}, - {0x249D, "\001\003\004\275\052\053"}, - {0x249E, "\001\003\004\241\052\053"}, - {0x249F, "\001\003\004\225\052\053"}, - {0x24A0, "\001\003\004\060\052\053"}, - {0x24A1, "\001\003\004\355\052\053"}, - {0x24A2, "\001\003\004\227\052\053"}, - {0x24A3, "\001\003\004\230\052\053"}, - {0x24A4, "\001\003\004\072\052\053"}, - {0x24A5, "\001\003\004\344\052\053"}, - {0x24A6, "\001\003\004\301\052\053"}, - {0x24A7, "\001\003\004\167\052\053"}, - {0x24A8, "\001\003\004\256\052\053"}, - {0x24A9, "\001\003\004\213\052\053"}, - {0x24AA, "\001\003\004\050\052\053"}, - {0x24AB, "\001\003\004\351\052\053"}, - {0x24AC, "\001\003\004\371\066\052\053"}, - {0x24AD, "\001\003\004\150\052\053"}, - {0x24AE, "\001\003\004\207\052\053"}, - {0x24AF, "\001\003\004\236\052\053"}, - {0x24B0, "\001\003\004\107\052\053"}, - {0x24B1, "\001\003\004\324\052\053"}, - {0x24B2, "\001\003\004\273\052\053"}, - {0x24B3, "\001\003\004\310\052\053"}, - {0x24B4, "\001\003\004\240\052\053"}, - {0x24B5, "\001\003\004\243\052\053"}, - {0x24B6, "\001\005\004\046\146"}, - {0x24B7, "\001\005\004\275\146"}, - {0x24B8, "\001\005\004\241\146"}, - {0x24B9, "\001\005\004\225\146"}, - {0x24BA, "\001\005\004\060\146"}, - {0x24BB, "\001\005\004\355\146"}, - {0x24BC, "\001\005\004\227\146"}, - {0x24BD, "\001\005\004\230\146"}, - {0x24BE, "\001\005\004\072\146"}, - {0x24BF, "\001\005\004\344\146"}, - {0x24C0, "\001\005\004\301\146"}, - {0x24C1, "\001\005\004\167\146"}, - {0x24C2, "\001\005\004\256\146"}, - {0x24C3, "\001\005\004\213\146"}, - {0x24C4, "\001\005\004\050\146"}, - {0x24C5, "\001\005\004\351\146"}, - {0x24C6, "\001\005\004\371\066\146"}, - {0x24C7, "\001\005\004\150\146"}, - {0x24C8, "\001\005\004\207\146"}, - {0x24C9, "\001\005\004\236\146"}, - {0x24CA, "\001\005\004\107\146"}, - {0x24CB, "\001\005\004\324\146"}, - {0x24CC, "\001\005\004\273\146"}, - {0x24CD, "\001\005\004\310\146"}, - {0x24CE, "\001\005\004\240\146"}, - {0x24CF, "\001\005\004\243\146"}, - {0x24D0, "\001\003\004\046\146"}, - {0x24D1, "\001\003\004\275\146"}, - {0x24D2, "\001\003\004\241\146"}, - {0x24D3, "\001\003\004\225\146"}, - {0x24D4, "\001\003\004\060\146"}, - {0x24D5, "\001\003\004\355\146"}, - {0x24D6, "\001\003\004\227\146"}, - {0x24D7, "\001\003\004\230\146"}, - {0x24D8, "\001\003\004\072\146"}, - {0x24D9, "\001\003\004\344\146"}, - {0x24DA, "\001\003\004\301\146"}, - {0x24DB, "\001\003\004\167\146"}, - {0x24DC, "\001\003\004\256\146"}, - {0x24DD, "\001\003\004\213\146"}, - {0x24DE, "\001\003\004\050\146"}, - {0x24DF, "\001\003\004\351\146"}, - {0x24E0, "\001\003\004\371\066\146"}, - {0x24E1, "\001\003\004\150\146"}, - {0x24E2, "\001\003\004\207\146"}, - {0x24E3, "\001\003\004\236\146"}, - {0x24E4, "\001\003\004\107\146"}, - {0x24E5, "\001\003\004\324\146"}, - {0x24E6, "\001\003\004\273\146"}, - {0x24E7, "\001\003\004\310\146"}, - {0x24E8, "\001\003\004\240\146"}, - {0x24E9, "\001\003\004\243\146"}, - {0x24EA, "\017\311\034"}, - {0x2500, "\045\211\070"}, - {0x2501, "\045\211\121"}, - {0x2502, "\045\145\070"}, - {0x2503, "\045\145\121"}, - {0x2504, "\045\371\023\371\050\211\070"}, - {0x2505, "\045\371\023\371\050\211\121"}, - {0x2506, "\045\371\023\371\050\145\070"}, - {0x2507, "\045\371\023\371\050\145\121"}, - {0x2508, "\045\371\023\372\140\211\070"}, - {0x2509, "\045\371\023\372\140\211\121"}, - {0x250A, "\045\371\023\372\140\145\070"}, - {0x250B, "\045\371\023\372\140\145\121"}, - {0x250C, "\045\070\013\035\061\011\013\022\037"}, - {0x250D, "\045\070\013\035\061\011\121\013\022\037"}, - {0x250E, "\045\121\013\035\061\011\070\013\022\037"}, - {0x250F, "\045\121\013\035\061\011\013\022\037"}, - {0x2510, "\045\070\013\035\061\011\013\022\042"}, - {0x2511, "\045\070\013\035\061\011\121\013\022\042"}, - {0x2512, "\045\121\013\035\061\011\070\013\022\042"}, - {0x2513, "\045\121\013\035\061\011\013\022\042"}, - {0x2514, "\045\070\013\035\065\011\013\022\037"}, - {0x2515, "\045\070\013\035\065\011\121\013\022\037"}, - {0x2516, "\045\121\013\035\065\011\070\013\022\037"}, - {0x2517, "\045\121\013\035\065\011\013\022\037"}, - {0x2518, "\045\070\013\035\065\011\013\022\042"}, - {0x2519, "\045\070\013\035\065\011\121\013\022\042"}, - {0x251A, "\045\121\013\035\065\011\070\013\022\042"}, - {0x251B, "\045\121\013\035\065\011\013\022\042"}, - {0x251C, "\045\070\145\011\013\022\037"}, - {0x251D, "\045\070\145\011\121\013\022\037"}, - {0x251E, "\045\121\013\035\065\011\070\013\022\037\011\013\035\061"}, - {0x251F, "\045\121\013\035\061\011\070\013\022\037\011\013\035\065"}, - {0x2520, "\045\121\145\011\070\013\022\037"}, - {0x2521, "\045\070\013\035\061\011\121\013\022\037\011\013\035\065"}, - {0x2522, "\045\070\013\035\065\011\121\013\022\037\011\013\035\061"}, - {0x2523, "\045\121\145\011\013\022\037"}, - {0x2524, "\045\070\145\011\013\022\042"}, - {0x2525, "\045\070\145\011\121\013\022\042"}, - {0x2526, "\045\121\013\035\065\011\070\013\022\042\011\013\035\061"}, - {0x2527, "\045\121\013\035\061\011\070\013\022\042\011\013\035\065"}, - {0x2528, "\045\121\145\011\070\013\022\042"}, - {0x2529, "\045\070\013\035\061\011\121\013\022\042\011\013\035\065"}, - {0x252A, "\045\070\013\035\065\011\121\013\022\042\011\013\035\061"}, - {0x252B, "\045\121\145\011\013\022\042"}, - {0x252C, "\045\070\013\035\061\011\211"}, - {0x252D, "\045\121\013\022\042\011\070\013\022\037\011\013\035\061"}, - {0x252E, "\045\121\013\022\037\011\070\013\022\042\011\013\035\061"}, - {0x252F, "\045\070\013\035\061\011\121\211"}, - {0x2530, "\045\121\013\035\061\011\070\211"}, - {0x2531, "\045\070\013\022\037\011\121\013\022\042\011\013\035\061"}, - {0x2532, "\045\070\013\022\042\011\121\013\022\037\011\013\035\061"}, - {0x2533, "\045\121\013\035\061\011\211"}, - {0x2534, "\045\070\013\035\065\011\211"}, - {0x2535, "\045\121\013\022\042\011\070\013\022\037\011\013\035\065"}, - {0x2536, "\045\121\013\022\037\011\070\013\022\042\011\013\035\065"}, - {0x2537, "\045\070\013\035\065\011\121\211"}, - {0x2538, "\045\121\013\035\065\011\070\211"}, - {0x2539, "\045\070\013\022\037\011\121\013\022\042\011\013\035\065"}, - {0x253A, "\045\070\013\022\042\011\121\013\022\037\011\013\035\065"}, - {0x253B, "\045\121\013\035\065\011\211"}, - {0x253C, "\045\070\145\011\211"}, - {0x253D, "\045\121\013\022\042\011\070\013\022\037\011\145"}, - {0x253E, "\045\121\013\022\037\011\070\013\022\042\011\145"}, - {0x253F, "\045\145\070\011\211\121"}, - {0x2540, "\045\121\013\035\065\011\070\013\035\061\011\211"}, - {0x2541, "\045\121\013\035\061\011\070\013\035\065\011\211"}, - {0x2542, "\045\145\121\011\211\070"}, - {0x2543, "\045\121\013\022\042\011\013\035\065\011\070\013\022\037\011\013\035\061"}, - {0x2544, "\045\121\013\022\037\011\013\035\065\011\070\013\022\042\011\013\035\061"}, - {0x2545, "\045\121\013\022\042\011\013\035\061\011\070\013\022\037\011\013\035\065"}, - {0x2546, "\045\121\013\022\037\011\013\035\061\011\070\013\022\042\011\013\035\065"}, - {0x2547, "\045\070\013\035\061\011\121\013\035\065\011\211"}, - {0x2548, "\045\070\013\035\065\011\121\013\035\061\011\211"}, - {0x2549, "\045\070\013\022\037\011\121\013\022\042\011\145"}, - {0x254A, "\045\070\013\022\042\011\121\013\022\037\011\145"}, - {0x254B, "\045\145\011\211\121"}, - {0x254C, "\045\371\023\051\211\070"}, - {0x254D, "\045\371\023\051\211\121"}, - {0x254E, "\045\371\023\051\145\070"}, - {0x254F, "\045\371\023\051\145\121"}, - {0x2550, "\045\051\211"}, - {0x2551, "\045\051\145"}, - {0x2552, "\045\270\035\061\011\051\013\022\037"}, - {0x2553, "\045\051\013\035\061\011\270\013\022\037"}, - {0x2554, "\045\051\013\035\061\011\013\022\037"}, - {0x2555, "\045\270\013\035\061\011\051\013\022\042"}, - {0x2556, "\045\051\013\035\061\011\270\013\022\042"}, - {0x2557, "\045\051\013\035\061\011\013\022\042"}, - {0x2558, "\045\270\013\035\065\011\051\013\022\037"}, - {0x2559, "\045\051\013\035\065\011\270\013\022\037"}, - {0x255A, "\045\051\013\035\065\011\013\022\037"}, - {0x255B, "\045\270\013\035\065\011\051\013\022\042"}, - {0x255C, "\045\051\013\035\065\011\270\013\022\042"}, - {0x255D, "\045\051\013\035\065\011\013\022\042"}, - {0x255E, "\045\145\270\011\173\051"}, - {0x255F, "\045\145\051\011\173\270"}, - {0x2560, "\045\051\145\011\013\022\037"}, - {0x2561, "\045\145\270\011\042\051"}, - {0x2562, "\045\145\051\011\042\270"}, - {0x2563, "\045\051\145\011\013\022\042"}, - {0x2564, "\045\013\035\061\270\011\211\051"}, - {0x2565, "\045\013\035\061\051\011\211\270"}, - {0x2566, "\045\051\013\035\061\011\211"}, - {0x2567, "\045\013\035\065\270\011\211\051"}, - {0x2568, "\045\013\035\065\051\011\211\270"}, - {0x2569, "\045\051\013\035\065\011\211"}, - {0x256A, "\045\145\270\011\211\051"}, - {0x256B, "\045\145\051\011\211\270"}, - {0x256C, "\045\051\145\011\211"}, - {0x256D, "\045\070\371\052\013\035\061\011\013\022\037"}, - {0x256E, "\045\070\371\052\013\035\061\011\013\022\042"}, - {0x256F, "\045\070\371\052\013\035\065\011\013\022\042"}, - {0x2570, "\045\070\371\052\013\035\065\011\013\022\037"}, - {0x2571, "\045\372\240\070\226\222\326\173\371\217\222\300\042"}, - {0x2572, "\045\372\240\070\226\222\326\042\013\035\222\300\173"}, - {0x2573, "\045\372\240\070\007\340"}, - {0x2574, "\045\070\013\022\042"}, - {0x2575, "\045\070\013\035\065"}, - {0x2576, "\045\070\013\022\037"}, - {0x2577, "\045\070\013\035\061"}, - {0x2578, "\045\121\013\022\042"}, - {0x2579, "\045\121\013\035\065"}, - {0x257A, "\045\121\013\022\037"}, - {0x257B, "\045\121\013\035\061"}, - {0x257C, "\045\070\013\022\042\011\121\013\022\037"}, - {0x257D, "\045\070\013\035\065\011\121\013\035\061"}, - {0x257E, "\045\121\013\022\042\011\070\013\022\037"}, - {0x257F, "\045\121\013\035\065\011\070\013\035\061"}, - {0x2580, "\304\267\371\177"}, - {0x2581, "\304\132\371\367\300"}, - {0x2582, "\304\132\372\141\300"}, - {0x2583, "\304\131\371\105\300"}, - {0x2584, "\304\267\371\234"}, - {0x2585, "\304\203\371\105\300"}, - {0x2586, "\304\131\372\334\300"}, - {0x2587, "\304\221\371\105\300"}, - {0x2588, "\304\373\371"}, - {0x2589, "\304\221\371\105\042"}, - {0x258A, "\304\131\372\334\042"}, - {0x258B, "\304\203\371\105\042"}, - {0x258C, "\304\267\042"}, - {0x258D, "\304\131\371\105\042"}, - {0x258E, "\304\132\372\141\042"}, - {0x258F, "\304\132\371\367\042"}, - {0x2590, "\304\267\037"}, - {0x2591, "\371\243\376\072"}, - {0x2592, "\371\243\373\307"}, - {0x2593, "\371\243\375\235"}, - {0x2594, "\304\132\371\367\326"}, - {0x2595, "\304\132\371\367\173"}, - {0x25A0, "\021\156"}, - {0x25A1, "\021\133"}, - {0x25A2, "\021\133\130\375\042\374\324"}, - {0x25A3, "\144\021\156\372\266\371\077\132\021\133"}, - {0x25A4, "\021\371\366\375\316"}, - {0x25A5, "\021\371\366\373\001"}, - {0x25A6, "\021\374\006"}, - {0x25A7, "\021\371\366\226\065\040\042\013\035\061\040\037"}, - {0x25A8, "\021\371\366\226\065\040\037\013\035\061\040\042"}, - {0x25A9, "\021\374\006\007\375\142"}, - {0x25AA, "\144\021\156"}, - {0x25AB, "\144\021\133"}, - {0x25AC, "\371\316\156"}, - {0x25AD, "\371\316\133"}, - {0x25AE, "\371\316\145\156"}, - {0x25AF, "\371\316\145\133"}, - {0x25B0, "\373\350\156"}, - {0x25B1, "\373\350\133"}, - {0x25B2, "\265\156\245\013\035\065"}, - {0x25B3, "\265\133\245\013\035\065"}, - {0x25B4, "\144\265\156\245\013\035\065"}, - {0x25B5, "\144\265\133\245\013\035\065"}, - {0x25B6, "\265\156\245\013\022\037"}, - {0x25B7, "\265\133\245\013\022\037"}, - {0x25B8, "\144\265\156\245\013\022\037"}, - {0x25B9, "\144\265\133\245\013\022\037"}, - {0x25BA, "\372\130\156\013\022\037"}, - {0x25BB, "\372\130\133\013\022\037"}, - {0x25BC, "\265\156\245\013\035\061"}, - {0x25BD, "\265\133\245\013\035\061"}, - {0x25BE, "\144\265\156\245\013\035\061"}, - {0x25BF, "\144\265\133\245\013\035\061"}, - {0x25C0, "\265\156\245\013\022\042"}, - {0x25C1, "\265\133\245\013\022\042"}, - {0x25C2, "\144\265\156\245\013\022\042"}, - {0x25C3, "\144\265\133\245\013\022\042"}, - {0x25C4, "\372\130\156\013\022\042"}, - {0x25C5, "\372\130\133\013\022\042"}, - {0x25C6, "\371\111\156"}, - {0x25C7, "\371\111\133"}, - {0x25C8, "\371\111\133\130\144\371\111\156\007\374\266"}, - {0x25C9, "\144\252\156\372\266\371\077\132\252\133"}, - {0x25CA, "\371\111"}, - {0x25CB, "\252\133"}, - {0x25CC, "\252\007\376\340"}, - {0x25CD, "\252\371\366\373\001"}, - {0x25CE, "\144\252\133\372\266\371\077\132\252\133"}, - {0x25CF, "\373\134\156"}, - {0x25D0, "\252\130\267\042\217"}, - {0x25D1, "\252\130\267\037\217"}, - {0x25D2, "\252\130\267\371\234\217"}, - {0x25D3, "\252\130\267\371\177\217"}, - {0x25D4, "\252\130\371\314\326\173\156"}, - {0x25D5, "\373\134\130\371\314\326\042\133"}, - {0x25D6, "\373\125\042\156"}, - {0x25D7, "\373\125\037\156"}, - {0x25D8, "\027\007\223"}, - {0x25D9, "\252\133\007\223"}, - {0x25DA, "\372\053\326\133\007\223"}, - {0x25DB, "\372\053\300\133\007\223"}, - {0x25DC, "\371\052\012\252\371\077\035\371\314\326\042"}, - {0x25DD, "\371\052\012\252\371\077\035\371\314\326\173"}, - {0x25DE, "\371\052\012\252\371\077\035\371\314\300\173"}, - {0x25DF, "\371\052\012\252\371\077\035\371\314\300\042"}, - {0x25E0, "\372\053\326"}, - {0x25E1, "\372\053\300"}, - {0x25E2, "\222\371\326\156\300\173"}, - {0x25E3, "\222\371\326\156\300\042"}, - {0x25E4, "\222\371\326\156\326\042"}, - {0x25E5, "\222\371\326\156\326\173"}, - {0x25E6, "\144\252\133"}, - {0x25E7, "\021\130\267\042\217"}, - {0x25E8, "\021\130\267\037\217"}, - {0x25E9, "\021\130\267\371\177\042\217"}, - {0x25EA, "\021\130\267\371\234\037\217"}, - {0x25EB, "\021\133\130\212\374\370\224"}, - {0x25EC, "\265\133\245\013\035\065\371\246"}, - {0x25ED, "\265\245\013\035\065\130\267\042\217"}, - {0x25EE, "\265\245\013\035\065\130\267\037\217"}, - {0x25EF, "\262\252"}, - {0x2600, "\372\016\156\130\374\015"}, - {0x2601, "\376\225"}, - {0x2602, "\376\270"}, - {0x2603, "\374\372\012\372\113"}, - {0x2604, "\375\047"}, - {0x2605, "\303\217"}, - {0x2606, "\303\315"}, - {0x2607, "\377\325"}, - {0x2608, "\376\245"}, - {0x2609, "\372\016"}, - {0x260A, "\372\114\373\036"}, - {0x260B, "\372\114\375\135"}, - {0x260C, "\375\052"}, - {0x260D, "\376\243"}, - {0x260E, "\372\170\156"}, - {0x260F, "\372\170\133"}, - {0x2610, "\371\342\012\372\033"}, - {0x2611, "\371\342\012\372\033\375\041"}, - {0x2612, "\371\342\012\372\033\130\310"}, - {0x2613, "\374\357"}, - {0x261A, "\371\151\156\245\013\022\042"}, - {0x261B, "\371\151\156\245\013\022\037"}, - {0x261C, "\371\151\133\245\013\022\042"}, - {0x261D, "\371\151\133\245\013\035\065"}, - {0x261E, "\371\151\133\245\013\022\037"}, - {0x261F, "\371\151\133\245\013\035\061"}, - {0x2620, "\377\234\012\376\152"}, - {0x2621, "\134\012\373\120"}, - {0x2622, "\134\012\376\371"}, - {0x2623, "\134\012\373\120\374\366"}, - {0x2624, "\375\010"}, - {0x2625, "\340\377\331"}, - {0x2626, "\340\376\250"}, - {0x2627, "\372\301\371\171"}, - {0x2628, "\340\012\376\065"}, - {0x2629, "\340\012\375\377"}, - {0x262A, "\303\011\375\075"}, - {0x262B, "\015\371\273"}, - {0x262C, "\374\273\377\071"}, - {0x262D, "\375\223\011\376\107"}, - {0x262E, "\015\012\376\264"}, - {0x262F, "\015\226\377\305\011\226\377\304"}, - {0x2630, "\371\205\335\372\216"}, - {0x2631, "\371\205\335\376\046"}, - {0x2632, "\371\205\335\372\253"}, - {0x2633, "\371\205\335\377\210"}, - {0x2634, "\371\205\335\377\247"}, - {0x2635, "\371\205\335\372\247"}, - {0x2636, "\371\205\335\376\147"}, - {0x2637, "\371\205\335\372\022"}, - {0x2638, "\377\025\012\375\141"}, - {0x2639, "\372\173\133\375\262"}, - {0x263A, "\372\173\133\374\052"}, - {0x263B, "\372\173\156\374\052"}, - {0x263C, "\372\016\133\130\374\015"}, - {0x263D, "\373\376\374\007\012\372\104"}, - {0x263E, "\375\134\374\007\012\372\104"}, - {0x263F, "\376\116"}, - {0x2640, "\134\373\162"}, - {0x2641, "\372\022"}, - {0x2642, "\134\373\312"}, - {0x2643, "\375\375"}, - {0x2644, "\374\036"}, - {0x2645, "\377\243"}, - {0x2646, "\376\200"}, - {0x2647, "\376\336"}, - {0x2648, "\375\004"}, - {0x2649, "\377\146"}, - {0x264A, "\375\267"}, - {0x264B, "\375\012"}, - {0x264C, "\376\057"}, - {0x264D, "\377\260"}, - {0x264E, "\374\353"}, - {0x264F, "\377\055"}, - {0x2650, "\377\037"}, - {0x2651, "\375\013"}, - {0x2652, "\377\251"}, - {0x2653, "\376\342"}, - {0x2654, "\374\032\133\226\371\030\371\025"}, - {0x2655, "\373\116\315\226\371\030\371\025"}, - {0x2656, "\374\104\315\226\371\030\371\025"}, - {0x2657, "\373\175\133\226\371\030\371\025"}, - {0x2658, "\373\060\133\226\371\030\371\025"}, - {0x2659, "\373\355\133\226\371\030\371\025"}, - {0x265A, "\374\032\156\226\371\030\371\025"}, - {0x265B, "\373\116\217\226\371\030\371\025"}, - {0x265C, "\374\104\217\226\371\030\371\025"}, - {0x265D, "\373\175\156\226\371\030\371\025"}, - {0x265E, "\373\060\156\226\371\030\371\025"}, - {0x265F, "\373\355\156\226\371\030\371\025"}, - {0x2660, "\372\124\156"}, - {0x2661, "\371\224\133"}, - {0x2662, "\373\057\133"}, - {0x2663, "\374\107\156"}, - {0x2664, "\372\124\133"}, - {0x2665, "\371\224\156"}, - {0x2666, "\373\057\156"}, - {0x2667, "\374\107\133"}, - {0x2668, "\377\116\375\030"}, - {0x2669, "\373\325\217"}, - {0x266A, "\373\325\375\074"}, - {0x266B, "\154\373\104\374\013"}, - {0x266C, "\154\375\156\373\104\374\013"}, - {0x266D, "\375\005"}, - {0x266E, "\375\003"}, - {0x266F, "\375\150"}, - {0x2701, "\372\046\040\373\261\371\177\374\122"}, - {0x2702, "\372\046\376\211"}, - {0x2703, "\372\046\040\373\261\371\234\374\122"}, - {0x2704, "\372\046\374\371"}, - {0x2706, "\015\375\106\226\372\170"}, - {0x2707, "\375\167\012\377\027"}, - {0x2708, "\374\344"}, - {0x2709, "\375\203"}, - {0x270C, "\373\271\012\022\377\255"}, - {0x270D, "\373\271\007\377\214\375\117"}, - {0x270E, "\372\226\371\246\013\035\061\040\037"}, - {0x270F, "\372\226"}, - {0x2710, "\372\226\371\246\013\035\065\040\037"}, - {0x2711, "\373\047\012\373\372\133"}, - {0x2712, "\373\047\012\373\372\156"}, - {0x2713, "\134\012\374\127"}, - {0x2714, "\370\134\012\374\127"}, - {0x2715, "\310\012\372\112"}, - {0x2716, "\370\310\012\372\112"}, - {0x2717, "\310\012\371\342\012\372\033"}, - {0x2718, "\370\310\012\371\342\012\372\033"}, - {0x2719, "\340\014\130\371\012"}, - {0x271A, "\371\147\340\014"}, - {0x271B, "\340\372\326\371\133\021"}, - {0x271C, "\371\147\340\372\326\371\133\021"}, - {0x271D, "\340\004"}, - {0x271E, "\340\004\377\257\371\165"}, - {0x271F, "\340\004\130\371\012"}, - {0x2720, "\340\012\376\102"}, - {0x2721, "\303\012\375\122"}, - {0x2722, "\340\372\304"}, - {0x2723, "\340\373\374"}, - {0x2724, "\371\147\340\373\374"}, - {0x2725, "\340\377\227"}, - {0x2726, "\303\217\040\200\365"}, - {0x2727, "\303\315\040\200\365"}, - {0x2729, "\303\315\040\371\012\374\267"}, - {0x272A, "\303\315\146"}, - {0x272B, "\373\303\217"}, - {0x272C, "\373\303\315"}, - {0x272D, "\303\217\130\371\012"}, - {0x272E, "\303\217\130\370\371\012"}, - {0x272F, "\303\374\014"}, - {0x2730, "\303\315\371\165"}, - {0x2731, "\370\371\011"}, - {0x2732, "\371\011\373\353"}, - {0x2733, "\371\011\040\204\365"}, - {0x2734, "\303\217\040\204\365"}, - {0x2735, "\303\374\014\040\204\365"}, - {0x2736, "\303\217\040\233\365"}, - {0x2737, "\303\374\017\040\204\365"}, - {0x2738, "\371\147\303\374\017\040\204\365"}, - {0x2739, "\303\217\040\371\141\365"}, - {0x273A, "\371\011\040\371\250\365"}, - {0x273B, "\371\011\372\101"}, - {0x273C, "\371\011\372\101\373\353"}, - {0x273D, "\370\371\011\372\101"}, - {0x273E, "\377\076\315\011\217"}, - {0x273F, "\374\011\217"}, - {0x2740, "\374\011\315"}, - {0x2741, "\051\376\370\217\130\371\012"}, - {0x2742, "\303\146\372\326\040\204\365"}, - {0x2743, "\370\374\335\376\376\372\101"}, - {0x2744, "\372\254\012\372\113"}, - {0x2745, "\372\254\012\372\113\040\131\375\234\377\216"}, - {0x2746, "\370\372\254\012\372\113\040\375\033"}, - {0x2747, "\374\156"}, - {0x2748, "\370\374\156"}, - {0x2749, "\371\011\376\343"}, - {0x274A, "\373\037\040\204\365\373\262"}, - {0x274B, "\370\373\037\040\204\365\373\262"}, - {0x274D, "\252\133\372\321"}, - {0x274F, "\021\133\130\371\243\373\377\372\156\035\222\300\173"}, - {0x2750, "\021\133\130\371\243\373\377\372\156\035\222\326\173"}, - {0x2751, "\021\133\372\321\371\217\222\300\173"}, - {0x2752, "\021\133\372\321\371\217\222\326\173"}, - {0x2756, "\371\111\156\376\105\371\133\310\133"}, - {0x2758, "\210\224\373\166"}, - {0x2759, "\210\224\373\307"}, - {0x275A, "\210\224\377\332"}, - {0x275B, "\371\014\012\371\231\007\242\012\371\147\331\270\371\344"}, - {0x275C, "\371\014\012\371\231\007\242\012\371\147\331\270"}, - {0x275D, "\371\014\012\371\231\007\242\012\371\147\331\051\371\344"}, - {0x275E, "\371\014\012\371\231\007\242\012\371\147\331\051"}, - {0x2761, "\373\354\012\373\304\012\371\231\040\320\375\071"}, - {0x2762, "\370\027\371\132\012\371\231"}, - {0x2763, "\370\027\371\132\012\371\231\007\242\012\371\224"}, - {0x2764, "\370\371\224\156"}, - {0x2765, "\370\371\224\156\372\224"}, - {0x2766, "\371\224\373\170"}, - {0x2767, "\371\224\373\170\372\224"}, - {0x2776, "\237\017\132\223\034"}, - {0x2777, "\237\017\154\223\034"}, - {0x2778, "\237\017\131\223\034"}, - {0x2779, "\237\017\200\223\034"}, - {0x277A, "\237\017\203\223\034"}, - {0x277B, "\237\017\233\223\034"}, - {0x277C, "\237\017\221\223\034"}, - {0x277D, "\237\017\204\223\034"}, - {0x277E, "\237\017\235\223\034"}, - {0x277F, "\237\163\354\223\034"}, - {0x2780, "\237\017\132\232\316\034"}, - {0x2781, "\237\017\154\232\316\034"}, - {0x2782, "\237\017\131\232\316\034"}, - {0x2783, "\237\017\200\232\316\034"}, - {0x2784, "\237\017\203\232\316\034"}, - {0x2785, "\237\017\233\232\316\034"}, - {0x2786, "\237\017\221\232\316\034"}, - {0x2787, "\237\017\204\232\316\034"}, - {0x2788, "\237\017\235\232\316\034"}, - {0x2789, "\237\163\354\232\316\034"}, - {0x278A, "\237\017\132\232\316\223\034"}, - {0x278B, "\237\017\154\232\316\223\034"}, - {0x278C, "\237\017\131\232\316\223\034"}, - {0x278D, "\237\017\200\232\316\223\034"}, - {0x278E, "\237\017\203\232\316\223\034"}, - {0x278F, "\237\017\233\232\316\223\034"}, - {0x2790, "\237\017\221\232\316\223\034"}, - {0x2791, "\237\017\204\232\316\223\034"}, - {0x2792, "\237\017\235\232\316\223\034"}, - {0x2793, "\237\163\354\232\316\223\034"}, - {0x2794, "\043\367\013\022\037\040\302\371\107"}, - {0x2798, "\043\367\371\252"}, - {0x2799, "\043\367\013\022\037\367"}, - {0x279A, "\043\367\371\242"}, - {0x279B, "\043\012\377\221\013\022\037"}, - {0x279C, "\043\367\040\302\374\323\013\022\037"}, - {0x279D, "\043\040\302\007\265\013\022\037"}, - {0x279E, "\043\367\040\302\007\265\013\022\037"}, - {0x279F, "\043\130\372\132\040\302\007\265\013\022\037"}, - {0x27A0, "\043\367\130\372\132\040\302\007\265\013\022\037"}, - {0x27A1, "\043\217\013\022\037"}, - {0x27A2, "\302\012\043\013\022\037\007\374\106\374\155\371\042\035\065"}, - {0x27A3, "\302\012\043\013\022\037\007\374\106\374\155\371\042\035\061"}, - {0x27A4, "\302\012\043\217\013\022\037"}, - {0x27A5, "\043\217\367\373\102\013\035\061\011\013\022\037"}, - {0x27A6, "\043\217\373\102\013\035\065\011\013\022\037"}, - {0x27A7, "\043\217\377\220\013\022\037"}, - {0x27A8, "\043\217\367\040\302\375\050\013\022\037"}, - {0x27A9, "\043\315\013\022\037\371\165\040\372\076"}, - {0x27AA, "\043\315\013\022\037\371\165\040\373\260"}, - {0x27AB, "\043\315\013\022\037\373\352\013\373\260\011\371\165"}, - {0x27AC, "\043\315\013\022\037\373\352\013\372\076\011\371\165"}, - {0x27AD, "\043\315\367\013\022\037\040\371\243\371\234\037"}, - {0x27AE, "\043\315\367\013\022\037\040\371\243\371\177\037"}, - {0x27AF, "\043\373\153\315\013\022\037\371\165\040\372\076\011\371\042\375\140"}, - {0x27B1, "\043\373\153\315\013\022\037\371\165\040\372\076\011\371\042\373\127"}, - {0x27B2, "\043\315\367\013\022\037\040\371\012\375\036"}, - {0x27B3, "\043\040\371\101\315\013\022\037"}, - {0x27B4, "\043\040\371\101\156\371\252"}, - {0x27B5, "\043\040\371\101\156\013\022\037"}, - {0x27B6, "\043\040\371\101\156\371\242"}, - {0x27B7, "\043\040\371\101\121\217\371\252"}, - {0x27B8, "\043\040\371\101\121\217\013\022\037"}, - {0x27B9, "\043\040\371\101\121\217\371\242"}, - {0x27BA, "\043\013\022\037\040\302\372\304"}, - {0x27BB, "\043\013\022\037\040\372\257\372\304"}, - {0x27BC, "\043\013\022\037\040\372\142\007\242\012\222"}, - {0x27BD, "\043\367\013\022\037\040\372\142\007\242\012\222"}, - {0x27BE, "\043\013\022\037\040\371\012\371\307"}, - {0x3000, "\371\026\063"}, - {0x3001, "\331\063"}, - {0x3002, "\027\063"}, - {0x3003, "\375\263\012\371\317"}, - {0x3004, "\015\012\373\324\375\342\375\371"}, - {0x3005, "\153\063\371\346"}, - {0x3006, "\153\063\012\375\224"}, - {0x3007, "\311\063"}, - {0x3008, "\100\372\040\040\042"}, - {0x3009, "\100\372\040\040\037"}, - {0x300A, "\051\100\372\040\040\042"}, - {0x300B, "\051\100\372\040\040\037"}, - {0x300C, "\100\222\042"}, - {0x300D, "\100\222\173"}, - {0x300E, "\100\133\222\042"}, - {0x300F, "\100\133\222\173"}, - {0x3010, "\100\156\371\300\042"}, - {0x3011, "\100\156\371\300\173"}, - {0x3012, "\153\372\330"}, - {0x3013, "\134\375\272"}, - {0x3014, "\100\042\007\371\213"}, - {0x3015, "\100\173\007\371\213"}, - {0x3016, "\100\133\371\300\042"}, - {0x3017, "\100\133\371\300\173"}, - {0x3018, "\100\133\042\007\371\213"}, - {0x3019, "\100\133\173\007\371\213"}, - {0x301A, "\100\133\042"}, - {0x301B, "\100\133\173"}, - {0x301C, "\264\371\226\007\371\360"}, - {0x301D, "\371\014\051\371\065\336"}, - {0x301E, "\371\014\051\371\065"}, - {0x301F, "\371\014\051\371\065\300"}, - {0x3020, "\372\173\007\153\372\330"}, - {0x3021, "\163\132\371\103"}, - {0x3022, "\163\154\371\103"}, - {0x3023, "\163\131\371\103"}, - {0x3024, "\163\200\371\103"}, - {0x3025, "\163\203\371\103"}, - {0x3026, "\163\233\371\103"}, - {0x3027, "\163\221\371\103"}, - {0x3028, "\163\204\371\103"}, - {0x3029, "\163\235\371\103"}, - {0x302A, "\153\063\012\272\375\231"}, - {0x302B, "\153\063\012\272\373\036"}, - {0x302C, "\153\063\012\272\377\114"}, - {0x302D, "\153\063\012\272\375\202"}, - {0x302E, "\153\012\272\010\027"}, - {0x302F, "\153\012\272\010\051\027"}, - {0x3030, "\264\371\226\372\002"}, - {0x3031, "\153\224\371\371\012\371\317"}, - {0x3032, "\153\224\371\371\012\371\317\130\371\070\372\032"}, - {0x3033, "\267\371\177\012\153\224\371\371\012\371\317"}, - {0x3034, "\267\371\177\012\153\224\371\371\012\371\317\130\371\070\372\032"}, - {0x3035, "\267\371\234\012\153\224\371\371\012\371\317"}, - {0x3036, "\153\372\330\146"}, - {0x3037, "\015\125\063\371\007\012\373\066\012\212"}, - {0x303F, "\375\132\063"}, - {0x3041, "\001\075\046\003"}, - {0x3042, "\001\075\046"}, - {0x3043, "\001\075\072\003"}, - {0x3044, "\001\075\072"}, - {0x3045, "\001\075\107\003"}, - {0x3046, "\001\075\107"}, - {0x3047, "\001\075\060\003"}, - {0x3048, "\001\075\060"}, - {0x3049, "\001\075\050\003"}, - {0x304A, "\001\075\050"}, - {0x304B, "\001\075\244"}, - {0x304C, "\001\075\371\057"}, - {0x304D, "\001\075\372\073"}, - {0x304E, "\001\075\373\210"}, - {0x304F, "\001\075\372\075"}, - {0x3050, "\001\075\373\217"}, - {0x3051, "\001\075\371\236"}, - {0x3052, "\001\075\373\203"}, - {0x3053, "\001\075\371\240"}, - {0x3054, "\001\075\373\215"}, - {0x3055, "\001\075\364"}, - {0x3056, "\001\075\372\177"}, - {0x3057, "\001\075\372\152"}, - {0x3058, "\001\075\374\147"}, - {0x3059, "\001\075\372\161"}, - {0x305A, "\001\075\374\152"}, - {0x305B, "\001\075\371\320"}, - {0x305C, "\001\075\374\146"}, - {0x305D, "\001\075\371\046"}, - {0x305E, "\001\075\374\151"}, - {0x305F, "\001\075\371\017"}, - {0x3060, "\001\075\371\013"}, - {0x3061, "\001\075\372\023"}, - {0x3062, "\001\075\373\131"}, - {0x3063, "\001\075\371\256\003"}, - {0x3064, "\001\075\371\256"}, - {0x3065, "\001\075\226"}, - {0x3066, "\001\075\372\165"}, - {0x3067, "\001\075\012"}, - {0x3068, "\001\075\371\254"}, - {0x3069, "\001\075\371\354"}, - {0x306A, "\001\075\371\002"}, - {0x306B, "\001\075\216"}, - {0x306C, "\001\075\371\305"}, - {0x306D, "\001\075\371\113"}, - {0x306E, "\001\075\371\164"}, - {0x306F, "\001\075\333"}, - {0x3070, "\001\075\371\053"}, - {0x3071, "\001\075\371\015"}, - {0x3072, "\001\075\372\067"}, - {0x3073, "\001\075\373\050"}, - {0x3074, "\001\075\371\310"}, - {0x3075, "\001\075\372\070"}, - {0x3076, "\001\075\373\055"}, - {0x3077, "\001\075\374\004"}, - {0x3078, "\001\075\371\104"}, - {0x3079, "\001\075\373\045"}, - {0x307A, "\001\075\371\116"}, - {0x307B, "\001\075\371\061"}, - {0x307C, "\001\075\372\045"}, - {0x307D, "\001\075\372\126"}, - {0x307E, "\001\075\360"}, - {0x307F, "\001\075\372\110"}, - {0x3080, "\001\075\371\001"}, - {0x3081, "\001\075\372\106"}, - {0x3082, "\001\075\371\241"}, - {0x3083, "\001\075\332\003"}, - {0x3084, "\001\075\332"}, - {0x3085, "\001\075\371\257\003"}, - {0x3086, "\001\075\371\257"}, - {0x3087, "\001\075\371\021\003"}, - {0x3088, "\001\075\371\021"}, - {0x3089, "\001\075\345"}, - {0x308A, "\001\075\372\144"}, - {0x308B, "\001\075\372\146"}, - {0x308C, "\001\075\371\315"}, - {0x308D, "\001\075\372\015"}, - {0x308E, "\001\075\371\122\003"}, - {0x308F, "\001\075\371\122"}, - {0x3090, "\001\075\371\331"}, - {0x3091, "\001\075\372\034"}, - {0x3092, "\001\075\371\123"}, - {0x3093, "\001\075\213"}, - {0x3094, "\001\075\374\125"}, - {0x3099, "\023\371\277\371\070\372\032"}, - {0x309A, "\023\371\277\371\070\372\352"}, - {0x309B, "\153\371\277\012\371\070\372\032"}, - {0x309C, "\153\371\277\012\371\070\372\352"}, - {0x309D, "\153\371\346\075"}, - {0x309E, "\153\371\346\374\123\075"}, - {0x30A1, "\001\030\046\003"}, - {0x30A2, "\001\030\046"}, - {0x30A3, "\001\030\072\003"}, - {0x30A4, "\001\030\072"}, - {0x30A5, "\001\030\107\003"}, - {0x30A6, "\001\030\107"}, - {0x30A7, "\001\030\060\003"}, - {0x30A8, "\001\030\060"}, - {0x30A9, "\001\030\050\003"}, - {0x30AA, "\001\030\050"}, - {0x30AB, "\001\030\244"}, - {0x30AC, "\001\030\371\057"}, - {0x30AD, "\001\030\372\073"}, - {0x30AE, "\001\030\373\210"}, - {0x30AF, "\001\030\372\075"}, - {0x30B0, "\001\030\373\217"}, - {0x30B1, "\001\030\371\236"}, - {0x30B2, "\001\030\373\203"}, - {0x30B3, "\001\030\371\240"}, - {0x30B4, "\001\030\373\215"}, - {0x30B5, "\001\030\364"}, - {0x30B6, "\001\030\372\177"}, - {0x30B7, "\001\030\372\152"}, - {0x30B8, "\001\030\374\147"}, - {0x30B9, "\001\030\372\161"}, - {0x30BA, "\001\030\374\152"}, - {0x30BB, "\001\030\371\320"}, - {0x30BC, "\001\030\374\146"}, - {0x30BD, "\001\030\371\046"}, - {0x30BE, "\001\030\374\151"}, - {0x30BF, "\001\030\371\017"}, - {0x30C0, "\001\030\371\013"}, - {0x30C1, "\001\030\372\023"}, - {0x30C2, "\001\030\373\131"}, - {0x30C3, "\001\030\371\256\003"}, - {0x30C4, "\001\030\371\256"}, - {0x30C5, "\001\030\226"}, - {0x30C6, "\001\030\372\165"}, - {0x30C7, "\001\030\012"}, - {0x30C8, "\001\030\371\254"}, - {0x30C9, "\001\030\371\354"}, - {0x30CA, "\001\030\371\002"}, - {0x30CB, "\001\030\216"}, - {0x30CC, "\001\030\371\305"}, - {0x30CD, "\001\030\371\113"}, - {0x30CE, "\001\030\371\164"}, - {0x30CF, "\001\030\333"}, - {0x30D0, "\001\030\371\053"}, - {0x30D1, "\001\030\371\015"}, - {0x30D2, "\001\030\372\067"}, - {0x30D3, "\001\030\373\050"}, - {0x30D4, "\001\030\371\310"}, - {0x30D5, "\001\030\372\070"}, - {0x30D6, "\001\030\373\055"}, - {0x30D7, "\001\030\374\004"}, - {0x30D8, "\001\030\371\104"}, - {0x30D9, "\001\030\373\045"}, - {0x30DA, "\001\030\371\116"}, - {0x30DB, "\001\030\371\061"}, - {0x30DC, "\001\030\372\045"}, - {0x30DD, "\001\030\372\126"}, - {0x30DE, "\001\030\360"}, - {0x30DF, "\001\030\372\110"}, - {0x30E0, "\001\030\371\001"}, - {0x30E1, "\001\030\372\106"}, - {0x30E2, "\001\030\371\241"}, - {0x30E3, "\001\030\332\003"}, - {0x30E4, "\001\030\332"}, - {0x30E5, "\001\030\371\257\003"}, - {0x30E6, "\001\030\371\257"}, - {0x30E7, "\001\030\371\021\003"}, - {0x30E8, "\001\030\371\021"}, - {0x30E9, "\001\030\345"}, - {0x30EA, "\001\030\372\144"}, - {0x30EB, "\001\030\372\146"}, - {0x30EC, "\001\030\371\315"}, - {0x30ED, "\001\030\372\015"}, - {0x30EE, "\001\030\371\122\003"}, - {0x30EF, "\001\030\371\122"}, - {0x30F0, "\001\030\371\331"}, - {0x30F1, "\001\030\372\034"}, - {0x30F2, "\001\030\371\123"}, - {0x30F3, "\001\030\213"}, - {0x30F4, "\001\030\374\125"}, - {0x30F5, "\001\030\244\003"}, - {0x30F6, "\001\030\371\236\003"}, - {0x30F7, "\001\030\371\207"}, - {0x30F8, "\001\030\377\254"}, - {0x30F9, "\001\030\372\172"}, - {0x30FA, "\001\030\373\002"}, - {0x30FB, "\027\371\040\030"}, - {0x30FC, "\153\371\277\012\371\070\372\134"}, - {0x30FD, "\153\371\346\030"}, - {0x30FE, "\153\371\346\374\123\030"}, - {0x3105, "\001\177\275"}, - {0x3106, "\001\177\351"}, - {0x3107, "\001\177\256"}, - {0x3108, "\001\177\355"}, - {0x3109, "\001\177\225"}, - {0x310A, "\001\177\236"}, - {0x310B, "\001\177\213"}, - {0x310C, "\001\177\167"}, - {0x310D, "\001\177\227"}, - {0x310E, "\001\177\301"}, - {0x310F, "\001\177\230"}, - {0x3110, "\001\177\344"}, - {0x3111, "\001\177\371\066"}, - {0x3112, "\001\177\310"}, - {0x3113, "\001\177\377\322"}, - {0x3114, "\001\177\375\024"}, - {0x3115, "\001\177\377\070"}, - {0x3116, "\001\177\150"}, - {0x3117, "\001\177\243"}, - {0x3118, "\001\177\241"}, - {0x3119, "\001\177\207"}, - {0x311A, "\001\177\046"}, - {0x311B, "\001\177\050"}, - {0x311C, "\001\177\060"}, - {0x311D, "\001\177\375\174"}, - {0x311E, "\001\177\250"}, - {0x311F, "\001\177\373\147"}, - {0x3120, "\001\177\371\217"}, - {0x3121, "\001\177\114"}, - {0x3122, "\001\177\372\205"}, - {0x3123, "\001\177\007"}, - {0x3124, "\001\177\373\031"}, - {0x3125, "\001\177\372\060"}, - {0x3126, "\001\177\375\204"}, - {0x3127, "\001\177\072"}, - {0x3128, "\001\177\107"}, - {0x3129, "\001\177\375\354"}, - {0x312A, "\001\177\324"}, - {0x312B, "\001\177\371\304"}, - {0x312C, "\001\177\375\257"}, - {0x3131, "\001\010\371\155"}, - {0x3132, "\001\010\372\157"}, - {0x3133, "\001\010\372\302"}, - {0x3134, "\001\010\371\163"}, - {0x3135, "\001\010\372\316"}, - {0x3136, "\001\010\372\315"}, - {0x3137, "\001\010\371\204"}, - {0x3138, "\001\010\372\364"}, - {0x3139, "\001\010\371\172"}, - {0x313A, "\001\010\372\342"}, - {0x313B, "\001\010\372\343"}, - {0x313C, "\001\010\372\345"}, - {0x313D, "\001\010\372\346"}, - {0x313E, "\001\010\372\347"}, - {0x313F, "\001\010\372\344"}, - {0x3140, "\001\010\372\145"}, - {0x3141, "\001\010\371\161"}, - {0x3142, "\001\010\371\170"}, - {0x3143, "\001\010\372\362"}, - {0x3144, "\001\010\372\125"}, - {0x3145, "\001\010\371\174"}, - {0x3146, "\001\010\372\160"}, - {0x3147, "\001\010\371\152"}, - {0x3148, "\001\010\371\117"}, - {0x3149, "\001\010\372\363"}, - {0x314A, "\001\010\371\201"}, - {0x314B, "\001\010\371\154"}, - {0x314C, "\001\010\371\200"}, - {0x314D, "\001\010\371\166"}, - {0x314E, "\001\010\371\150"}, - {0x314F, "\001\010\046"}, - {0x3150, "\001\010\373\015"}, - {0x3151, "\001\010\332"}, - {0x3152, "\001\010\373\012"}, - {0x3153, "\001\010\050"}, - {0x3154, "\001\010\371\260"}, - {0x3155, "\001\010\371\021"}, - {0x3156, "\001\010\373\013"}, - {0x3157, "\001\010\373\020"}, - {0x3158, "\001\010\371\122"}, - {0x3159, "\001\010\373\004"}, - {0x315A, "\001\010\372\251"}, - {0x315B, "\001\010\373\014"}, - {0x315C, "\001\010\114"}, - {0x315D, "\001\010\371\123"}, - {0x315E, "\001\010\373\005"}, - {0x315F, "\001\010\371\331"}, - {0x3160, "\001\010\371\051"}, - {0x3161, "\001\010\373\021"}, - {0x3162, "\001\010\373\022"}, - {0x3163, "\001\010\072"}, - {0x3164, "\371\341\010"}, - {0x3165, "\001\010\374\055"}, - {0x3166, "\001\010\372\317"}, - {0x3167, "\001\010\373\320"}, - {0x3168, "\001\010\373\317"}, - {0x3169, "\001\010\374\024"}, - {0x316A, "\001\010\374\030"}, - {0x316B, "\001\010\374\027"}, - {0x316C, "\001\010\374\026"}, - {0x316D, "\001\010\374\031"}, - {0x316E, "\001\010\372\310"}, - {0x316F, "\001\010\373\302"}, - {0x3170, "\001\010\373\301"}, - {0x3171, "\001\010\372\275"}, - {0x3172, "\001\010\373\357"}, - {0x3173, "\001\010\373\365"}, - {0x3174, "\001\010\373\361"}, - {0x3175, "\001\010\373\362"}, - {0x3176, "\001\010\373\364"}, - {0x3177, "\001\010\373\363"}, - {0x3178, "\001\010\372\277"}, - {0x3179, "\001\010\373\247"}, - {0x317A, "\001\010\372\354"}, - {0x317B, "\001\010\374\046"}, - {0x317C, "\001\010\372\356"}, - {0x317D, "\001\010\372\355"}, - {0x317E, "\001\010\374\050"}, - {0x317F, "\001\010\372\323"}, - {0x3180, "\001\010\372\361"}, - {0x3181, "\001\010\373\006"}, - {0x3182, "\001\010\374\136"}, - {0x3183, "\001\010\374\135"}, - {0x3184, "\001\010\372\276"}, - {0x3185, "\001\010\374\054"}, - {0x3186, "\001\010\373\010"}, - {0x3187, "\001\010\374\143"}, - {0x3188, "\001\010\374\144"}, - {0x3189, "\001\010\374\142"}, - {0x318A, "\001\010\374\140"}, - {0x318B, "\001\010\374\141"}, - {0x318C, "\001\010\374\137"}, - {0x318D, "\001\010\373\035"}, - {0x318E, "\001\010\374\332"}, - {0x3190, "\153\346\063\012\376\054"}, - {0x3191, "\153\346\063\375\114"}, - {0x3192, "\153\346\063\132"}, - {0x3193, "\153\346\063\154"}, - {0x3194, "\153\346\063\131"}, - {0x3195, "\153\346\063\200"}, - {0x3196, "\153\346\063\226\065"}, - {0x3197, "\153\346\063\226\372\213"}, - {0x3198, "\153\346\063\226\061"}, - {0x3199, "\153\346\063\226\373\376"}, - {0x319A, "\153\346\063\226\377\057"}, - {0x319B, "\153\346\063\226\377\226"}, - {0x319C, "\153\346\063\226\374\010"}, - {0x319D, "\153\346\063\226\372\216"}, - {0x319E, "\153\346\063\012\022\372\022"}, - {0x319F, "\153\346\063\012\376\045"}, - {0x3200, "\010\371\155\052\053"}, - {0x3201, "\010\371\163\052\053"}, - {0x3202, "\010\371\204\052\053"}, - {0x3203, "\010\371\172\052\053"}, - {0x3204, "\010\371\161\052\053"}, - {0x3205, "\010\371\170\052\053"}, - {0x3206, "\010\371\174\052\053"}, - {0x3207, "\010\371\152\052\053"}, - {0x3208, "\010\371\117\052\053"}, - {0x3209, "\010\371\201\052\053"}, - {0x320A, "\010\371\154\052\053"}, - {0x320B, "\010\371\200\052\053"}, - {0x320C, "\010\371\166\052\053"}, - {0x320D, "\010\371\150\052\053"}, - {0x320E, "\010\371\155\046\052\053"}, - {0x320F, "\010\371\163\046\052\053"}, - {0x3210, "\010\371\204\046\052\053"}, - {0x3211, "\010\371\172\046\052\053"}, - {0x3212, "\010\371\161\046\052\053"}, - {0x3213, "\010\371\170\046\052\053"}, - {0x3214, "\010\371\174\046\052\053"}, - {0x3215, "\010\371\152\046\052\053"}, - {0x3216, "\010\371\117\046\052\053"}, - {0x3217, "\010\371\201\046\052\053"}, - {0x3218, "\010\371\154\046\052\053"}, - {0x3219, "\010\371\200\046\052\053"}, - {0x321A, "\010\371\166\046\052\053"}, - {0x321B, "\010\371\150\046\052\053"}, - {0x321C, "\010\371\117\114\052\053"}, - {0x3220, "\077\132\052\053"}, - {0x3221, "\077\154\052\053"}, - {0x3222, "\077\131\052\053"}, - {0x3223, "\077\200\052\053"}, - {0x3224, "\077\203\052\053"}, - {0x3225, "\077\233\052\053"}, - {0x3226, "\077\221\052\053"}, - {0x3227, "\077\204\052\053"}, - {0x3228, "\077\235\052\053"}, - {0x3229, "\077\354\052\053"}, - {0x322A, "\077\372\104\052\053"}, - {0x322B, "\077\372\253\052\053"}, - {0x322C, "\077\372\247\052\053"}, - {0x322D, "\077\373\054\052\053"}, - {0x322E, "\077\373\313\052\053"}, - {0x322F, "\077\372\022\052\053"}, - {0x3230, "\077\372\016\052\053"}, - {0x3231, "\077\373\273\052\053"}, - {0x3232, "\077\373\041\052\053"}, - {0x3233, "\077\372\357\052\053"}, - {0x3234, "\077\373\323\052\053"}, - {0x3235, "\077\374\053\052\053"}, - {0x3236, "\077\373\165\052\053"}, - {0x3237, "\077\373\201\052\053"}, - {0x3238, "\077\374\105\052\053"}, - {0x3239, "\077\377\005\052\053"}, - {0x323A, "\077\374\321\052\053"}, - {0x323B, "\077\374\157\052\053"}, - {0x323C, "\077\377\130\052\053"}, - {0x323D, "\077\373\154\052\053"}, - {0x323E, "\077\374\022\052\053"}, - {0x323F, "\077\373\030\052\053"}, - {0x3240, "\077\375\225\052\053"}, - {0x3241, "\077\374\021\052\053"}, - {0x3242, "\077\377\111\052\053"}, - {0x3243, "\077\374\337\052\053"}, - {0x3260, "\010\034\371\155"}, - {0x3261, "\010\034\371\163"}, - {0x3262, "\010\034\371\204"}, - {0x3263, "\010\034\371\172"}, - {0x3264, "\010\034\371\161"}, - {0x3265, "\010\034\371\170"}, - {0x3266, "\010\034\371\174"}, - {0x3267, "\010\034\371\152"}, - {0x3268, "\010\034\371\117"}, - {0x3269, "\010\034\371\201"}, - {0x326A, "\010\034\371\154"}, - {0x326B, "\010\034\371\200"}, - {0x326C, "\010\034\371\166"}, - {0x326D, "\010\034\371\150"}, - {0x326E, "\010\034\371\155\046"}, - {0x326F, "\010\034\371\163\046"}, - {0x3270, "\010\034\371\204\046"}, - {0x3271, "\010\034\371\172\046"}, - {0x3272, "\010\034\371\161\046"}, - {0x3273, "\010\034\371\170\046"}, - {0x3274, "\010\034\371\174\046"}, - {0x3275, "\010\034\371\152\046"}, - {0x3276, "\010\034\371\117\046"}, - {0x3277, "\010\034\371\201\046"}, - {0x3278, "\010\034\371\154\046"}, - {0x3279, "\010\034\371\200\046"}, - {0x327A, "\010\034\371\166\046"}, - {0x327B, "\010\034\371\150\046"}, - {0x327F, "\015\012\373\324\375\065"}, - {0x3280, "\077\132\034"}, - {0x3281, "\077\154\034"}, - {0x3282, "\077\131\034"}, - {0x3283, "\077\200\034"}, - {0x3284, "\077\203\034"}, - {0x3285, "\077\233\034"}, - {0x3286, "\077\221\034"}, - {0x3287, "\077\204\034"}, - {0x3288, "\077\235\034"}, - {0x3289, "\077\354\034"}, - {0x328A, "\077\372\104\034"}, - {0x328B, "\077\372\253\034"}, - {0x328C, "\077\372\247\034"}, - {0x328D, "\077\373\054\034"}, - {0x328E, "\077\373\313\034"}, - {0x328F, "\077\372\022\034"}, - {0x3290, "\077\372\016\034"}, - {0x3291, "\077\373\273\034"}, - {0x3292, "\077\373\041\034"}, - {0x3293, "\077\372\357\034"}, - {0x3294, "\077\373\323\034"}, - {0x3295, "\077\374\053\034"}, - {0x3296, "\077\373\165\034"}, - {0x3297, "\077\373\201\034"}, - {0x3298, "\077\374\105\034"}, - {0x3299, "\077\377\061\034"}, - {0x329A, "\077\373\312\034"}, - {0x329B, "\077\373\162\034"}, - {0x329C, "\077\374\270\034"}, - {0x329D, "\077\375\212\034"}, - {0x329E, "\077\375\340\034"}, - {0x329F, "\077\374\341\034"}, - {0x32A0, "\077\374\325\034"}, - {0x32A1, "\077\374\021\034"}, - {0x32A2, "\077\375\060\034"}, - {0x32A3, "\077\375\063\034"}, - {0x32A4, "\077\065\034"}, - {0x32A5, "\077\372\213\034"}, - {0x32A6, "\077\061\034"}, - {0x32A7, "\077\042\034"}, - {0x32A8, "\077\173\034"}, - {0x32A9, "\077\376\161\034"}, - {0x32AA, "\077\377\002\034"}, - {0x32AB, "\077\374\157\034"}, - {0x32AC, "\077\377\131\034"}, - {0x32AD, "\077\373\154\034"}, - {0x32AE, "\077\374\022\034"}, - {0x32AF, "\077\373\030\034"}, - {0x32B0, "\077\376\226\034"}, - {0x32C0, "\015\125\063\375\370"}, - {0x32C1, "\015\125\063\375\244"}, - {0x32C2, "\015\125\063\376\106"}, - {0x32C3, "\015\125\063\374\345"}, - {0x32C4, "\015\125\063\371\031"}, - {0x32C5, "\015\125\063\375\374"}, - {0x32C6, "\015\125\063\375\373"}, - {0x32C7, "\015\125\063\374\317"}, - {0x32C8, "\015\125\063\377\066"}, - {0x32C9, "\015\125\063\376\236"}, - {0x32CA, "\015\125\063\376\223"}, - {0x32CB, "\015\125\063\375\160"}, - {0x32D0, "\030\034\046"}, - {0x32D1, "\030\034\072"}, - {0x32D2, "\030\034\107"}, - {0x32D3, "\030\034\060"}, - {0x32D4, "\030\034\050"}, - {0x32D5, "\030\034\244"}, - {0x32D6, "\030\034\372\073"}, - {0x32D7, "\030\034\372\075"}, - {0x32D8, "\030\034\371\236"}, - {0x32D9, "\030\034\371\240"}, - {0x32DA, "\030\034\364"}, - {0x32DB, "\030\034\372\152"}, - {0x32DC, "\030\034\372\161"}, - {0x32DD, "\030\034\371\320"}, - {0x32DE, "\030\034\371\046"}, - {0x32DF, "\030\034\371\017"}, - {0x32E0, "\030\034\372\023"}, - {0x32E1, "\030\034\371\256"}, - {0x32E2, "\030\034\372\165"}, - {0x32E3, "\030\034\371\254"}, - {0x32E4, "\030\034\371\002"}, - {0x32E5, "\030\034\216"}, - {0x32E6, "\030\034\371\305"}, - {0x32E7, "\030\034\371\113"}, - {0x32E8, "\030\034\371\164"}, - {0x32E9, "\030\034\333"}, - {0x32EA, "\030\034\372\067"}, - {0x32EB, "\030\034\372\070"}, - {0x32EC, "\030\034\371\104"}, - {0x32ED, "\030\034\371\061"}, - {0x32EE, "\030\034\360"}, - {0x32EF, "\030\034\372\110"}, - {0x32F0, "\030\034\371\001"}, - {0x32F1, "\030\034\372\106"}, - {0x32F2, "\030\034\371\241"}, - {0x32F3, "\030\034\332"}, - {0x32F4, "\030\034\371\257"}, - {0x32F5, "\030\034\371\021"}, - {0x32F6, "\030\034\345"}, - {0x32F7, "\030\034\372\144"}, - {0x32F8, "\030\034\372\146"}, - {0x32F9, "\030\034\371\315"}, - {0x32FA, "\030\034\372\015"}, - {0x32FB, "\030\034\371\122"}, - {0x32FC, "\030\034\371\331"}, - {0x32FD, "\030\034\372\034"}, - {0x32FE, "\030\034\371\123"}, - {0x3300, "\374\320\031\007\021"}, - {0x3301, "\374\326\031\007\021"}, - {0x3302, "\374\314\031\007\021"}, - {0x3303, "\374\264\031\007\021"}, - {0x3304, "\375\345\031\007\021"}, - {0x3305, "\375\350\031\007\021"}, - {0x3306, "\377\241\031\007\021"}, - {0x3307, "\375\210\031\007\021"}, - {0x3308, "\375\170\031\007\021"}, - {0x3309, "\376\241\031\007\021"}, - {0x330A, "\376\242\031\007\021"}, - {0x330B, "\376\002\031\007\021"}, - {0x330C, "\376\004\031\007\021"}, - {0x330D, "\376\005\031\007\021"}, - {0x330E, "\375\246\031\007\021"}, - {0x330F, "\375\245\031\007\021"}, - {0x3310, "\375\253\031\007\021"}, - {0x3311, "\375\255\031\007\021"}, - {0x3312, "\376\043\031\007\021"}, - {0x3313, "\375\256\031\007\021"}, - {0x3314, "\376\020\031\007\021"}, - {0x3315, "\376\021\031\007\021"}, - {0x3316, "\376\022\031\007\021"}, - {0x3317, "\376\023\031\007\021"}, - {0x3318, "\375\264\031\007\021"}, - {0x3319, "\375\265\031\007\021"}, - {0x331A, "\376\040\031\007\021"}, - {0x331B, "\376\037\031\007\021"}, - {0x331C, "\376\010\031\007\021"}, - {0x331D, "\376\032\031\007\021"}, - {0x331E, "\376\031\031\007\021"}, - {0x331F, "\377\040\031\007\021"}, - {0x3320, "\377\052\031\007\021"}, - {0x3321, "\377\074\031\007\021"}, - {0x3322, "\377\064\031\007\021"}, - {0x3323, "\377\065\031\007\021"}, - {0x3324, "\375\120\031\007\021"}, - {0x3325, "\375\137\031\007\021"}, - {0x3326, "\375\155\031\007\021"}, - {0x3327, "\377\207\031\007\021"}, - {0x3328, "\376\174\031\007\021"}, - {0x3329, "\376\217\031\007\021"}, - {0x332A, "\375\273\031\007\021"}, - {0x332B, "\376\262\031\007\021"}, - {0x332C, "\376\263\031\007\021"}, - {0x332D, "\374\350\031\007\021"}, - {0x332E, "\376\321\031\007\021"}, - {0x332F, "\376\323\031\007\021"}, - {0x3330, "\376\322\031\007\021"}, - {0x3331, "\374\367\031\007\021"}, - {0x3332, "\375\323\031\007\021"}, - {0x3333, "\375\324\031\007\021"}, - {0x3334, "\375\002\031\007\021"}, - {0x3335, "\375\325\031\007\021"}, - {0x3336, "\375\277\031\007\021"}, - {0x3337, "\376\311\031\007\021"}, - {0x3338, "\376\303\031\007\021"}, - {0x3339, "\375\301\031\007\021"}, - {0x333A, "\376\304\031\007\021"}, - {0x333B, "\376\302\031\007\021"}, - {0x333C, "\374\361\031\007\021"}, - {0x333D, "\376\341\031\007\021"}, - {0x333E, "\374\374\031\007\021"}, - {0x333F, "\375\313\031\007\021"}, - {0x3340, "\376\344\031\007\021"}, - {0x3341, "\375\315\031\007\021"}, - {0x3342, "\375\314\031\007\021"}, - {0x3343, "\376\113\031\007\021"}, - {0x3344, "\376\112\031\007\021"}, - {0x3345, "\376\073\031\007\021"}, - {0x3346, "\376\101\031\007\021"}, - {0x3347, "\376\103\031\007\021"}, - {0x3348, "\376\124\031\007\021"}, - {0x3349, "\376\130\031\007\021"}, - {0x334A, "\376\131\031\007\021"}, - {0x334B, "\372\314\031\007\021"}, - {0x334C, "\376\164\031\007\021"}, - {0x334D, "\376\114\031\007\021"}, - {0x334E, "\377\300\031\007\021"}, - {0x334F, "\377\301\031\007\021"}, - {0x3350, "\377\317\031\007\021"}, - {0x3351, "\377\012\031\007\021"}, - {0x3352, "\377\011\031\007\021"}, - {0x3353, "\377\030\031\007\021"}, - {0x3354, "\377\031\031\007\021"}, - {0x3355, "\377\003\031\007\021"}, - {0x3356, "\377\004\031\007\021"}, - {0x3357, "\377\273\031\007\021"}, - {0x3358, "\015\125\063\255\311"}, - {0x3359, "\015\125\063\255\132"}, - {0x335A, "\015\125\063\255\154"}, - {0x335B, "\015\125\063\255\131"}, - {0x335C, "\015\125\063\255\200"}, - {0x335D, "\015\125\063\255\203"}, - {0x335E, "\015\125\063\255\233"}, - {0x335F, "\015\125\063\255\221"}, - {0x3360, "\015\125\063\255\204"}, - {0x3361, "\015\125\063\255\235"}, - {0x3362, "\015\125\063\255\354"}, - {0x3363, "\015\125\063\255\371\244"}, - {0x3364, "\015\125\063\255\371\141"}, - {0x3365, "\015\125\063\255\372\024"}, - {0x3366, "\015\125\063\255\372\012"}, - {0x3367, "\015\125\063\255\372\013"}, - {0x3368, "\015\125\063\255\371\250"}, - {0x3369, "\015\125\063\255\371\353"}, - {0x336A, "\015\125\063\255\371\351"}, - {0x336B, "\015\125\063\255\371\352"}, - {0x336C, "\015\125\063\255\372\031"}, - {0x336D, "\015\125\063\255\374\117"}, - {0x336E, "\015\125\063\255\374\116"}, - {0x336F, "\015\125\063\255\374\121"}, - {0x3370, "\015\125\063\255\374\120"}, - {0x3371, "\375\322\031\007\021"}, - {0x3372, "\371\013\031\007\021"}, - {0x3373, "\371\217\031\007\021"}, - {0x3374, "\374\355\031\007\021"}, - {0x3375, "\376\261\031\007\021"}, - {0x3376, "\376\301\031\007\021"}, - {0x337B, "\372\202\375\276\031\007\021"}, - {0x337C, "\372\202\377\136\031\007\021"}, - {0x337D, "\372\202\377\144\031\007\021"}, - {0x337E, "\372\202\376\115\031\007\021"}, - {0x337F, "\372\357\031\007\021"}, - {0x3380, "\371\015\374\306\031\007\021"}, - {0x3381, "\371\002\031\007\021"}, - {0x3382, "\371\001\046\031\007\021"}, - {0x3383, "\360\031\007\021"}, - {0x3384, "\244\031\007\021"}, - {0x3385, "\376\006\031\007\021"}, - {0x3386, "\373\274\031\007\021"}, - {0x3387, "\375\247\031\007\021"}, - {0x3388, "\375\011\031\007\021"}, - {0x3389, "\376\007\031\007\021"}, - {0x338A, "\376\312\031\007\021"}, - {0x338B, "\376\201\031\007\021"}, - {0x338C, "\371\001\355\031\007\021"}, - {0x338D, "\371\001\227\031\007\021"}, - {0x338E, "\376\121\031\007\021"}, - {0x338F, "\373\251\031\007\021"}, - {0x3390, "\375\327\031\007\021"}, - {0x3391, "\376\017\031\007\021"}, - {0x3392, "\376\122\031\007\021"}, - {0x3393, "\375\252\031\007\021"}, - {0x3394, "\377\202\031\007\021"}, - {0x3395, "\371\001\167\031\007\021"}, - {0x3396, "\376\140\031\007\021"}, - {0x3397, "\375\152\031\007\021"}, - {0x3398, "\376\027\031\007\021"}, - {0x3399, "\375\233\031\007\021"}, - {0x339A, "\376\210\031\007\021"}, - {0x339B, "\371\001\256\031\007\021"}, - {0x339C, "\372\311\031\007\021"}, - {0x339D, "\372\221\031\007\021"}, - {0x339E, "\372\074\031\007\021"}, - {0x339F, "\372\311\021\031\007\021"}, - {0x33A0, "\372\221\021\031\007\021"}, - {0x33A1, "\256\021\031\007\021"}, - {0x33A2, "\372\074\021\031\007\021"}, - {0x33A3, "\372\311\372\051\031\007\021"}, - {0x33A4, "\372\221\372\051\031\007\021"}, - {0x33A5, "\256\372\051\031\007\021"}, - {0x33A6, "\372\074\372\051\031\007\021"}, - {0x33A7, "\256\371\253\207\031\007\021"}, - {0x33A8, "\256\371\253\207\021\031\007\021"}, - {0x33A9, "\371\015\031\007\021"}, - {0x33AA, "\376\034\031\007\021"}, - {0x33AB, "\376\156\031\007\021"}, - {0x33AC, "\375\260\031\007\021"}, - {0x33AD, "\372\336\031\007\021"}, - {0x33AE, "\372\336\371\253\207\031\007\021"}, - {0x33AF, "\372\336\371\253\207\021\031\007\021"}, - {0x33B0, "\376\361\031\007\021"}, - {0x33B1, "\376\224\031\007\021"}, - {0x33B2, "\371\001\207\031\007\021"}, - {0x33B3, "\376\157\031\007\021"}, - {0x33B4, "\376\362\031\007\021"}, - {0x33B5, "\376\227\031\007\021"}, - {0x33B6, "\371\001\324\031\007\021"}, - {0x33B7, "\373\310\031\007\021"}, - {0x33B8, "\376\041\031\007\021"}, - {0x33B9, "\373\310\372\314\031\007\021"}, - {0x33BA, "\376\363\031\007\021"}, - {0x33BB, "\376\230\031\007\021"}, - {0x33BC, "\371\001\273\031\007\021"}, - {0x33BD, "\373\311\031\007\021"}, - {0x33BE, "\376\042\031\007\021"}, - {0x33BF, "\373\311\372\314\031\007\021"}, - {0x33C0, "\301\372\117\031\007\021"}, - {0x33C1, "\256\372\117\031\007\021"}, - {0x33C2, "\372\204\031\007\021"}, - {0x33C3, "\374\377\031\007\021"}, - {0x33C4, "\375\017\031\007\021"}, - {0x33C5, "\375\020\031\007\021"}, - {0x33C6, "\241\371\253\373\251\031\007\021"}, - {0x33C7, "\372\222\031\007\021"}, - {0x33C8, "\375\123\031\007\021"}, - {0x33C9, "\375\266\031\007\021"}, - {0x33CA, "\333\031\007\021"}, - {0x33CB, "\375\321\031\007\021"}, - {0x33CC, "\372\264\031\007\021"}, - {0x33CD, "\376\026\031\007\021"}, - {0x33CE, "\372\074\005\031\007\021"}, - {0x33CF, "\376\036\031\007\021"}, - {0x33D0, "\376\062\031\007\021"}, - {0x33D1, "\376\063\031\007\021"}, - {0x33D2, "\376\064\031\007\021"}, - {0x33D3, "\376\071\031\007\021"}, - {0x33D4, "\373\274\003\031\007\021"}, - {0x33D5, "\376\125\031\007\021"}, - {0x33D6, "\376\146\031\007\021"}, - {0x33D7, "\376\313\031\007\021"}, - {0x33D8, "\376\337\031\007\021"}, - {0x33D9, "\376\346\031\007\021"}, - {0x33DA, "\376\347\031\007\021"}, - {0x33DB, "\377\122\031\007\021"}, - {0x33DC, "\377\133\031\007\021"}, - {0x33DD, "\377\274\031\007\021"}, - {0x33E0, "\015\125\063\234\132"}, - {0x33E1, "\015\125\063\234\154"}, - {0x33E2, "\015\125\063\234\131"}, - {0x33E3, "\015\125\063\234\200"}, - {0x33E4, "\015\125\063\234\203"}, - {0x33E5, "\015\125\063\234\233"}, - {0x33E6, "\015\125\063\234\221"}, - {0x33E7, "\015\125\063\234\204"}, - {0x33E8, "\015\125\063\234\235"}, - {0x33E9, "\015\125\063\234\354"}, - {0x33EA, "\015\125\063\234\371\244"}, - {0x33EB, "\015\125\063\234\371\141"}, - {0x33EC, "\015\125\063\372\024"}, - {0x33ED, "\015\125\063\234\372\012"}, - {0x33EE, "\015\125\063\234\372\013"}, - {0x33EF, "\015\125\063\234\371\250"}, - {0x33F0, "\015\125\063\234\371\353"}, - {0x33F1, "\015\125\063\234\371\351"}, - {0x33F2, "\015\125\063\234\371\352"}, - {0x33F3, "\015\125\063\234\372\031"}, - {0x33F4, "\015\125\063\234\374\117"}, - {0x33F5, "\015\125\063\234\374\116"}, - {0x33F6, "\015\125\063\234\374\121"}, - {0x33F7, "\015\125\063\234\374\120"}, - {0x33F8, "\015\125\063\234\377\261"}, - {0x33F9, "\015\125\063\234\377\265"}, - {0x33FA, "\015\125\063\234\377\264"}, - {0x33FB, "\015\125\063\234\377\262"}, - {0x33FC, "\015\125\063\234\377\263"}, - {0x33FD, "\015\125\063\234\377\222"}, - {0x33FE, "\015\125\063\234\377\223"}, - {0xFB00, "\006\003\004\375\226"}, - {0xFB01, "\006\003\004\373\163"}, - {0xFB02, "\006\003\004\375\232"}, - {0xFB03, "\006\003\004\375\227"}, - {0xFB04, "\006\003\004\375\230"}, - {0xFB05, "\006\003\004\207\372\306\236"}, - {0xFB06, "\006\003\004\377\124"}, - {0xFB13, "\006\003\076\371\303\372\115"}, - {0xFB14, "\006\003\076\371\303\372\072"}, - {0xFB15, "\006\003\076\371\303\072"}, - {0xFB16, "\006\003\076\372\377\372\115"}, - {0xFB17, "\006\003\076\371\303\372\215"}, - {0xFB1E, "\027\343\375\372\377\246"}, - {0xFB1F, "\006\110\372\175\371\332\371\332\372\122"}, - {0xFB20, "\001\110\374\303\373\042"}, - {0xFB21, "\001\110\371\107\371\262"}, - {0xFB22, "\001\110\371\107\372\052"}, - {0xFB23, "\001\110\371\107\371\104"}, - {0xFB24, "\001\110\371\107\205"}, - {0xFB25, "\001\110\371\107\372\100"}, - {0xFB26, "\001\110\371\107\372\107\016"}, - {0xFB27, "\001\110\371\107\372\337"}, - {0xFB28, "\001\110\371\107\372\367"}, - {0xFB29, "\001\110\134\162\377\245"}, - {0xFB2A, "\001\110\371\074\027\371\074"}, - {0xFB2B, "\001\110\371\074\027\372\353"}, - {0xFB2C, "\001\110\371\074\276\011\027\371\074"}, - {0xFB2D, "\001\110\371\074\276\011\027\372\353"}, - {0xFB2E, "\001\110\371\262\372\122"}, - {0xFB2F, "\001\110\371\262\372\333"}, - {0xFB30, "\001\110\371\262\372\307"}, - {0xFB31, "\001\110\372\044\276"}, - {0xFB32, "\001\110\373\220\276"}, - {0xFB33, "\001\110\372\052\375\121"}, - {0xFB34, "\001\110\371\104\372\307"}, - {0xFB35, "\001\110\372\030\276"}, - {0xFB36, "\001\110\374\145\276"}, - {0xFB38, "\001\110\374\075\276"}, - {0xFB39, "\001\110\371\332\276"}, - {0xFB3A, "\001\110\205\276\016"}, - {0xFB3B, "\001\110\205\276"}, - {0xFB3C, "\001\110\372\100\276"}, - {0xFB3E, "\001\110\372\107\276"}, - {0xFB40, "\001\110\372\320\276"}, - {0xFB41, "\001\110\377\045\276"}, - {0xFB43, "\001\110\371\116\276\016"}, - {0xFB44, "\001\110\371\116\276"}, - {0xFB46, "\001\110\372\375\276"}, - {0xFB47, "\001\110\374\005\276"}, - {0xFB48, "\001\110\372\337\276"}, - {0xFB49, "\001\110\371\074\276"}, - {0xFB4A, "\001\110\372\367\276"}, - {0xFB4B, "\001\110\372\030\373\226"}, - {0xFB4C, "\001\110\372\044\372\143"}, - {0xFB4D, "\001\110\205\372\143"}, - {0xFB4E, "\001\110\371\116\372\143"}, - {0xFB4F, "\006\110\371\262\372\100"}, - {0xFB50, "\001\002\054\373\003\020"}, - {0xFB51, "\001\002\054\373\003\016"}, - {0xFB52, "\001\002\371\337\020"}, - {0xFB53, "\001\002\371\337\016"}, - {0xFB54, "\001\002\371\337\036"}, - {0xFB55, "\001\002\371\337\105"}, - {0xFB56, "\001\002\372\005\020"}, - {0xFB57, "\001\002\372\005\016"}, - {0xFB58, "\001\002\372\005\036"}, - {0xFB59, "\001\002\372\005\105"}, - {0xFB5A, "\001\002\371\340\020"}, - {0xFB5B, "\001\002\371\340\016"}, - {0xFB5C, "\001\002\371\340\036"}, - {0xFB5D, "\001\002\371\340\105"}, - {0xFB5E, "\001\002\372\026\020"}, - {0xFB5F, "\001\002\372\026\016"}, - {0xFB60, "\001\002\372\026\036"}, - {0xFB61, "\001\002\372\026\105"}, - {0xFB62, "\001\002\372\021\020"}, - {0xFB63, "\001\002\372\021\016"}, - {0xFB64, "\001\002\372\021\036"}, - {0xFB65, "\001\002\372\021\105"}, - {0xFB66, "\001\002\372\025\020"}, - {0xFB67, "\001\002\372\025\016"}, - {0xFB68, "\001\002\372\025\036"}, - {0xFB69, "\001\002\372\025\105"}, - {0xFB6A, "\001\002\372\027\020"}, - {0xFB6B, "\001\002\372\027\016"}, - {0xFB6C, "\001\002\372\027\036"}, - {0xFB6D, "\001\002\372\027\105"}, - {0xFB6E, "\001\002\372\006\020"}, - {0xFB6F, "\001\002\372\006\016"}, - {0xFB70, "\001\002\372\006\036"}, - {0xFB71, "\001\002\372\006\105"}, - {0xFB72, "\001\002\371\356\020"}, - {0xFB73, "\001\002\371\356\016"}, - {0xFB74, "\001\002\371\356\036"}, - {0xFB75, "\001\002\371\356\105"}, - {0xFB76, "\001\002\372\001\020"}, - {0xFB77, "\001\002\372\001\016"}, - {0xFB78, "\001\002\372\001\036"}, - {0xFB79, "\001\002\372\001\105"}, - {0xFB7A, "\001\002\372\020\020"}, - {0xFB7B, "\001\002\372\020\016"}, - {0xFB7C, "\001\002\372\020\036"}, - {0xFB7D, "\001\002\372\020\105"}, - {0xFB7E, "\001\002\372\017\020"}, - {0xFB7F, "\001\002\372\017\016"}, - {0xFB80, "\001\002\372\017\036"}, - {0xFB81, "\001\002\372\017\105"}, - {0xFB82, "\001\002\372\234\020"}, - {0xFB83, "\001\002\372\234\016"}, - {0xFB84, "\001\002\372\232\020"}, - {0xFB85, "\001\002\372\232\016"}, - {0xFB86, "\001\002\372\245\020"}, - {0xFB87, "\001\002\372\245\016"}, - {0xFB88, "\001\002\372\235\020"}, - {0xFB89, "\001\002\372\235\016"}, - {0xFB8A, "\001\002\372\272\020"}, - {0xFB8B, "\001\002\372\272\016"}, - {0xFB8C, "\001\002\372\351\020"}, - {0xFB8D, "\001\002\372\351\016"}, - {0xFB8E, "\001\002\371\373\020"}, - {0xFB8F, "\001\002\371\373\016"}, - {0xFB90, "\001\002\371\373\036"}, - {0xFB91, "\001\002\371\373\105"}, - {0xFB92, "\001\002\371\145\020"}, - {0xFB93, "\001\002\371\145\016"}, - {0xFB94, "\001\002\371\145\036"}, - {0xFB95, "\001\002\371\145\105"}, - {0xFB96, "\001\002\371\365\020"}, - {0xFB97, "\001\002\371\365\016"}, - {0xFB98, "\001\002\371\365\036"}, - {0xFB99, "\001\002\371\365\105"}, - {0xFB9A, "\001\002\371\375\020"}, - {0xFB9B, "\001\002\371\375\016"}, - {0xFB9C, "\001\002\371\375\036"}, - {0xFB9D, "\001\002\371\375\105"}, - {0xFB9E, "\001\002\164\372\256\020"}, - {0xFB9F, "\001\002\164\372\256\016"}, - {0xFBA0, "\001\002\372\014\020"}, - {0xFBA1, "\001\002\372\014\016"}, - {0xFBA2, "\001\002\372\014\036"}, - {0xFBA3, "\001\002\372\014\105"}, - {0xFBA4, "\001\002\171\041\007\025\020"}, - {0xFBA5, "\001\002\171\041\007\025\016"}, - {0xFBA6, "\001\002\171\371\232\020"}, - {0xFBA7, "\001\002\171\371\232\016"}, - {0xFBA8, "\001\002\171\371\232\036"}, - {0xFBA9, "\001\002\171\371\232\105"}, - {0xFBAA, "\001\002\171\371\355\020"}, - {0xFBAB, "\001\002\171\371\355\016"}, - {0xFBAC, "\001\002\171\371\355\036"}, - {0xFBAD, "\001\002\171\371\355\105"}, - {0xFBAE, "\001\002\041\372\043\020"}, - {0xFBAF, "\001\002\041\372\043\016"}, - {0xFBB0, "\001\002\041\372\043\126\007\025\020"}, - {0xFBB1, "\001\002\041\372\043\126\007\025\016"}, - {0xFBD3, "\001\002\371\304\020"}, - {0xFBD4, "\001\002\371\304\016"}, - {0xFBD5, "\001\002\371\304\036"}, - {0xFBD6, "\001\002\371\304\105"}, - {0xFBD7, "\001\002\114\020"}, - {0xFBD8, "\001\002\114\016"}, - {0xFBD9, "\001\002\371\041\020"}, - {0xFBDA, "\001\002\371\041\016"}, - {0xFBDB, "\001\002\371\051\020"}, - {0xFBDC, "\001\002\371\051\016"}, - {0xFBDD, "\001\002\114\126\007\025\020"}, - {0xFBDE, "\001\002\372\172\020"}, - {0xFBDF, "\001\002\372\172\016"}, - {0xFBE0, "\001\002\371\036\371\041\020"}, - {0xFBE1, "\001\002\371\036\371\041\016"}, - {0xFBE2, "\001\002\371\036\371\051\020"}, - {0xFBE3, "\001\002\371\036\371\051\016"}, - {0xFBE4, "\001\002\060\020"}, - {0xFBE5, "\001\002\060\016"}, - {0xFBE6, "\001\002\060\036"}, - {0xFBE7, "\001\002\060\105"}, - {0xFBE8, "\001\002\372\004\373\250\371\036\054\124\036"}, - {0xFBE9, "\001\002\372\004\373\250\371\036\054\124\105"}, - {0xFBEA, "\006\002\041\126\007\025\054\020"}, - {0xFBEB, "\006\002\041\126\007\025\054\016"}, - {0xFBEC, "\006\002\041\126\007\025\372\036\020"}, - {0xFBED, "\006\002\041\126\007\025\372\036\016"}, - {0xFBEE, "\006\002\041\126\007\025\371\035\020"}, - {0xFBEF, "\006\002\041\126\007\025\371\035\016"}, - {0xFBF0, "\006\002\041\126\007\025\107\020"}, - {0xFBF1, "\006\002\041\126\007\025\107\016"}, - {0xFBF2, "\006\002\041\126\007\025\371\041\020"}, - {0xFBF3, "\006\002\041\126\007\025\371\041\016"}, - {0xFBF4, "\006\002\041\126\007\025\371\051\020"}, - {0xFBF5, "\006\002\041\126\007\025\371\051\016"}, - {0xFBF6, "\006\002\041\126\007\025\060\020"}, - {0xFBF7, "\006\002\041\126\007\025\060\016"}, - {0xFBF8, "\006\002\041\126\007\025\060\036"}, - {0xFBF9, "\006\002\372\004\371\036\041\126\007\025\054\124\020"}, - {0xFBFA, "\006\002\372\004\371\036\041\126\007\025\054\124\016"}, - {0xFBFB, "\006\002\372\004\371\036\041\126\007\025\054\124\036"}, - {0xFBFC, "\001\002\371\273\041\020"}, - {0xFBFD, "\001\002\371\273\041\016"}, - {0xFBFE, "\001\002\371\273\041\036"}, - {0xFBFF, "\001\002\371\273\041\105"}, - {0xFC00, "\006\002\041\126\007\025\066\020"}, - {0xFC01, "\006\002\041\126\007\025\064\020"}, - {0xFC02, "\006\002\041\126\007\025\033\020"}, - {0xFC03, "\006\002\041\126\007\025\054\124\020"}, - {0xFC04, "\006\002\041\126\007\025\041\020"}, - {0xFC05, "\006\002\251\066\020"}, - {0xFC06, "\006\002\251\064\020"}, - {0xFC07, "\006\002\251\137\020"}, - {0xFC08, "\006\002\251\033\020"}, - {0xFC09, "\006\002\251\054\124\020"}, - {0xFC0A, "\006\002\251\041\020"}, - {0xFC0B, "\006\002\174\066\020"}, - {0xFC0C, "\006\002\174\064\020"}, - {0xFC0D, "\006\002\174\137\020"}, - {0xFC0E, "\006\002\174\033\020"}, - {0xFC0F, "\006\002\174\054\124\020"}, - {0xFC10, "\006\002\174\041\020"}, - {0xFC11, "\006\002\337\066\020"}, - {0xFC12, "\006\002\337\033\020"}, - {0xFC13, "\006\002\337\054\124\020"}, - {0xFC14, "\006\002\337\041\020"}, - {0xFC15, "\006\002\066\064\020"}, - {0xFC16, "\006\002\066\033\020"}, - {0xFC17, "\006\002\064\066\020"}, - {0xFC18, "\006\002\064\033\020"}, - {0xFC19, "\006\002\137\066\020"}, - {0xFC1A, "\006\002\137\064\020"}, - {0xFC1B, "\006\002\137\033\020"}, - {0xFC1C, "\006\002\201\066\020"}, - {0xFC1D, "\006\002\201\064\020"}, - {0xFC1E, "\006\002\201\137\020"}, - {0xFC1F, "\006\002\201\033\020"}, - {0xFC20, "\006\002\263\064\020"}, - {0xFC21, "\006\002\263\033\020"}, - {0xFC22, "\006\002\266\066\020"}, - {0xFC23, "\006\002\266\064\020"}, - {0xFC24, "\006\002\266\137\020"}, - {0xFC25, "\006\002\266\033\020"}, - {0xFC26, "\006\002\327\064\020"}, - {0xFC27, "\006\002\327\033\020"}, - {0xFC28, "\006\002\371\212\033\020"}, - {0xFC29, "\006\002\312\066\020"}, - {0xFC2A, "\006\002\312\033\020"}, - {0xFC2B, "\006\002\350\066\020"}, - {0xFC2C, "\006\002\350\033\020"}, - {0xFC2D, "\006\002\261\066\020"}, - {0xFC2E, "\006\002\261\064\020"}, - {0xFC2F, "\006\002\261\137\020"}, - {0xFC30, "\006\002\261\033\020"}, - {0xFC31, "\006\002\261\054\124\020"}, - {0xFC32, "\006\002\261\041\020"}, - {0xFC33, "\006\002\323\064\020"}, - {0xFC34, "\006\002\323\033\020"}, - {0xFC35, "\006\002\323\054\124\020"}, - {0xFC36, "\006\002\323\041\020"}, - {0xFC37, "\006\002\205\054\020"}, - {0xFC38, "\006\002\205\066\020"}, - {0xFC39, "\006\002\205\064\020"}, - {0xFC3A, "\006\002\205\137\020"}, - {0xFC3B, "\006\002\205\155\020"}, - {0xFC3C, "\006\002\205\033\020"}, - {0xFC3D, "\006\002\205\054\124\020"}, - {0xFC3E, "\006\002\205\041\020"}, - {0xFC3F, "\006\002\155\066\020"}, - {0xFC40, "\006\002\155\064\020"}, - {0xFC41, "\006\002\155\137\020"}, - {0xFC42, "\006\002\155\033\020"}, - {0xFC43, "\006\002\155\054\124\020"}, - {0xFC44, "\006\002\155\041\020"}, - {0xFC45, "\006\002\033\066\020"}, - {0xFC46, "\006\002\033\064\020"}, - {0xFC47, "\006\002\033\137\020"}, - {0xFC48, "\006\002\033\033\020"}, - {0xFC49, "\006\002\033\054\124\020"}, - {0xFC4A, "\006\002\033\041\020"}, - {0xFC4B, "\006\002\164\066\020"}, - {0xFC4C, "\006\002\164\064\020"}, - {0xFC4D, "\006\002\164\137\020"}, - {0xFC4E, "\006\002\164\033\020"}, - {0xFC4F, "\006\002\164\054\124\020"}, - {0xFC50, "\006\002\164\041\020"}, - {0xFC51, "\006\002\171\066\020"}, - {0xFC52, "\006\002\171\033\020"}, - {0xFC53, "\006\002\171\054\124\020"}, - {0xFC54, "\006\002\171\041\020"}, - {0xFC55, "\006\002\041\066\020"}, - {0xFC56, "\006\002\041\064\020"}, - {0xFC57, "\006\002\041\137\020"}, - {0xFC58, "\006\002\041\033\020"}, - {0xFC59, "\006\002\041\054\124\020"}, - {0xFC5A, "\006\002\041\041\020"}, - {0xFC5B, "\006\002\372\054\007\025\054\020"}, - {0xFC5C, "\006\002\257\007\025\054\020"}, - {0xFC5D, "\006\002\054\124\007\025\054\020"}, - {0xFC5E, "\006\002\371\045\372\233\020"}, - {0xFC5F, "\006\002\371\045\372\300\020"}, - {0xFC60, "\006\002\371\045\371\362\020"}, - {0xFC61, "\006\002\371\045\371\347\020"}, - {0xFC62, "\006\002\371\045\371\372\020"}, - {0xFC63, "\006\002\371\045\007\025\054\020"}, - {0xFC64, "\006\002\041\126\007\025\257\016"}, - {0xFC65, "\006\002\041\126\007\025\371\124\016"}, - {0xFC66, "\006\002\041\126\007\025\033\016"}, - {0xFC67, "\006\002\041\126\007\025\164\016"}, - {0xFC68, "\006\002\041\126\007\025\054\124\016"}, - {0xFC69, "\006\002\041\126\007\025\041\016"}, - {0xFC6A, "\006\002\251\257\016"}, - {0xFC6B, "\006\002\251\371\124\016"}, - {0xFC6C, "\006\002\251\033\016"}, - {0xFC6D, "\006\002\251\164\016"}, - {0xFC6E, "\006\002\251\054\124\016"}, - {0xFC6F, "\006\002\251\041\016"}, - {0xFC70, "\006\002\174\257\016"}, - {0xFC71, "\006\002\174\371\124\016"}, - {0xFC72, "\006\002\174\033\016"}, - {0xFC73, "\006\002\174\164\016"}, - {0xFC74, "\006\002\174\054\124\016"}, - {0xFC75, "\006\002\174\041\016"}, - {0xFC76, "\006\002\337\257\016"}, - {0xFC77, "\006\002\337\371\124\016"}, - {0xFC78, "\006\002\337\033\016"}, - {0xFC79, "\006\002\337\164\016"}, - {0xFC7A, "\006\002\337\054\124\016"}, - {0xFC7B, "\006\002\337\041\016"}, - {0xFC7C, "\006\002\261\054\124\016"}, - {0xFC7D, "\006\002\261\041\016"}, - {0xFC7E, "\006\002\323\054\124\016"}, - {0xFC7F, "\006\002\323\041\016"}, - {0xFC80, "\006\002\205\054\016"}, - {0xFC81, "\006\002\205\155\016"}, - {0xFC82, "\006\002\205\033\016"}, - {0xFC83, "\006\002\205\054\124\016"}, - {0xFC84, "\006\002\205\041\016"}, - {0xFC85, "\006\002\155\033\016"}, - {0xFC86, "\006\002\155\054\124\016"}, - {0xFC87, "\006\002\155\041\016"}, - {0xFC88, "\006\002\033\054\016"}, - {0xFC89, "\006\002\033\033\016"}, - {0xFC8A, "\006\002\164\257\016"}, - {0xFC8B, "\006\002\164\371\124\016"}, - {0xFC8C, "\006\002\164\033\016"}, - {0xFC8D, "\006\002\164\164\016"}, - {0xFC8E, "\006\002\164\054\124\016"}, - {0xFC8F, "\006\002\164\041\016"}, - {0xFC90, "\006\002\054\124\007\025\054\016"}, - {0xFC91, "\006\002\041\257\016"}, - {0xFC92, "\006\002\041\371\124\016"}, - {0xFC93, "\006\002\041\033\016"}, - {0xFC94, "\006\002\041\164\016"}, - {0xFC95, "\006\002\041\054\124\016"}, - {0xFC96, "\006\002\041\041\016"}, - {0xFC97, "\006\002\041\126\007\025\066\036"}, - {0xFC98, "\006\002\041\126\007\025\064\036"}, - {0xFC99, "\006\002\041\126\007\025\137\036"}, - {0xFC9A, "\006\002\041\126\007\025\033\036"}, - {0xFC9B, "\006\002\041\126\007\025\171\036"}, - {0xFC9C, "\006\002\251\066\036"}, - {0xFC9D, "\006\002\251\064\036"}, - {0xFC9E, "\006\002\251\137\036"}, - {0xFC9F, "\006\002\251\033\036"}, - {0xFCA0, "\006\002\251\171\036"}, - {0xFCA1, "\006\002\174\066\036"}, - {0xFCA2, "\006\002\174\064\036"}, - {0xFCA3, "\006\002\174\137\036"}, - {0xFCA4, "\006\002\174\033\036"}, - {0xFCA5, "\006\002\174\171\036"}, - {0xFCA6, "\006\002\337\033\036"}, - {0xFCA7, "\006\002\066\064\036"}, - {0xFCA8, "\006\002\066\033\036"}, - {0xFCA9, "\006\002\064\066\036"}, - {0xFCAA, "\006\002\064\033\036"}, - {0xFCAB, "\006\002\137\066\036"}, - {0xFCAC, "\006\002\137\033\036"}, - {0xFCAD, "\006\002\201\066\036"}, - {0xFCAE, "\006\002\201\064\036"}, - {0xFCAF, "\006\002\201\137\036"}, - {0xFCB0, "\006\002\201\033\036"}, - {0xFCB1, "\006\002\263\064\036"}, - {0xFCB2, "\006\002\263\137\036"}, - {0xFCB3, "\006\002\263\033\036"}, - {0xFCB4, "\006\002\266\066\036"}, - {0xFCB5, "\006\002\266\064\036"}, - {0xFCB6, "\006\002\266\137\036"}, - {0xFCB7, "\006\002\266\033\036"}, - {0xFCB8, "\006\002\327\064\036"}, - {0xFCB9, "\006\002\371\212\033\036"}, - {0xFCBA, "\006\002\312\066\036"}, - {0xFCBB, "\006\002\312\033\036"}, - {0xFCBC, "\006\002\350\066\036"}, - {0xFCBD, "\006\002\350\033\036"}, - {0xFCBE, "\006\002\261\066\036"}, - {0xFCBF, "\006\002\261\064\036"}, - {0xFCC0, "\006\002\261\137\036"}, - {0xFCC1, "\006\002\261\033\036"}, - {0xFCC2, "\006\002\323\064\036"}, - {0xFCC3, "\006\002\323\033\036"}, - {0xFCC4, "\006\002\205\066\036"}, - {0xFCC5, "\006\002\205\064\036"}, - {0xFCC6, "\006\002\205\137\036"}, - {0xFCC7, "\006\002\205\155\036"}, - {0xFCC8, "\006\002\205\033\036"}, - {0xFCC9, "\006\002\155\066\036"}, - {0xFCCA, "\006\002\155\064\036"}, - {0xFCCB, "\006\002\155\137\036"}, - {0xFCCC, "\006\002\155\033\036"}, - {0xFCCD, "\006\002\155\171\036"}, - {0xFCCE, "\006\002\033\066\036"}, - {0xFCCF, "\006\002\033\064\036"}, - {0xFCD0, "\006\002\033\137\036"}, - {0xFCD1, "\006\002\033\033\036"}, - {0xFCD2, "\006\002\164\066\036"}, - {0xFCD3, "\006\002\164\064\036"}, - {0xFCD4, "\006\002\164\137\036"}, - {0xFCD5, "\006\002\164\033\036"}, - {0xFCD6, "\006\002\164\171\036"}, - {0xFCD7, "\006\002\171\066\036"}, - {0xFCD8, "\006\002\171\033\036"}, - {0xFCD9, "\006\002\171\007\025\054\036"}, - {0xFCDA, "\006\002\041\066\036"}, - {0xFCDB, "\006\002\041\064\036"}, - {0xFCDC, "\006\002\041\137\036"}, - {0xFCDD, "\006\002\041\033\036"}, - {0xFCDE, "\006\002\041\171\036"}, - {0xFCDF, "\006\002\041\126\007\025\033\105"}, - {0xFCE0, "\006\002\041\126\007\025\171\105"}, - {0xFCE2, "\006\002\251\171\105"}, - {0xFCE3, "\006\002\174\033\105"}, - {0xFCE4, "\006\002\174\171\105"}, - {0xFCE5, "\006\002\337\033\105"}, - {0xFCE6, "\006\002\337\171\105"}, - {0xFCE7, "\006\002\201\033\105"}, - {0xFCE8, "\006\002\201\171\105"}, - {0xFCE9, "\006\002\206\033\105"}, - {0xFCEA, "\006\002\206\171\105"}, - {0xFCEB, "\006\002\205\155\105"}, - {0xFCEC, "\006\002\205\033\105"}, - {0xFCED, "\006\002\155\033\105"}, - {0xFCEE, "\006\002\164\033\105"}, - {0xFCEF, "\006\002\164\171\105"}, - {0xFCF0, "\006\002\041\033\105"}, - {0xFCF1, "\006\002\041\171\105"}, - {0xFCF2, "\006\002\371\045\371\362\105"}, - {0xFCF3, "\006\002\371\045\371\347\105"}, - {0xFCF4, "\006\002\371\045\371\372\105"}, - {0xFCF5, "\006\002\327\054\124\020"}, - {0xFCF6, "\006\002\327\041\020"}, - {0xFCF7, "\006\002\312\054\124\020"}, - {0xFCF8, "\006\002\312\041\020"}, - {0xFCF9, "\006\002\350\054\124\020"}, - {0xFCFA, "\006\002\350\041\020"}, - {0xFCFB, "\006\002\201\054\124\020"}, - {0xFCFC, "\006\002\201\041\020"}, - {0xFCFD, "\006\002\206\054\124\020"}, - {0xFCFE, "\006\002\206\041\020"}, - {0xFCFF, "\006\002\064\054\124\020"}, - {0xFD00, "\006\002\064\041\020"}, - {0xFD01, "\006\002\066\054\124\020"}, - {0xFD02, "\006\002\066\041\020"}, - {0xFD03, "\006\002\137\054\124\020"}, - {0xFD04, "\006\002\137\041\020"}, - {0xFD05, "\006\002\263\054\124\020"}, - {0xFD06, "\006\002\263\041\020"}, - {0xFD07, "\006\002\266\054\124\020"}, - {0xFD08, "\006\002\266\041\020"}, - {0xFD09, "\006\002\206\066\020"}, - {0xFD0A, "\006\002\206\064\020"}, - {0xFD0B, "\006\002\206\137\020"}, - {0xFD0C, "\006\002\206\033\020"}, - {0xFD0D, "\006\002\206\257\020"}, - {0xFD0E, "\006\002\201\257\020"}, - {0xFD0F, "\006\002\263\257\020"}, - {0xFD10, "\006\002\266\257\020"}, - {0xFD11, "\006\002\327\054\124\016"}, - {0xFD12, "\006\002\327\041\016"}, - {0xFD13, "\006\002\312\054\124\016"}, - {0xFD14, "\006\002\312\041\016"}, - {0xFD15, "\006\002\350\054\124\016"}, - {0xFD16, "\006\002\350\041\016"}, - {0xFD17, "\006\002\201\054\124\016"}, - {0xFD18, "\006\002\201\041\016"}, - {0xFD19, "\006\002\206\054\124\016"}, - {0xFD1A, "\006\002\206\041\016"}, - {0xFD1B, "\006\002\064\054\124\016"}, - {0xFD1C, "\006\002\064\041\016"}, - {0xFD1D, "\006\002\066\054\124\016"}, - {0xFD1E, "\006\002\066\041\016"}, - {0xFD1F, "\006\002\137\054\124\016"}, - {0xFD20, "\006\002\137\041\016"}, - {0xFD21, "\006\002\263\054\124\016"}, - {0xFD22, "\006\002\263\041\016"}, - {0xFD23, "\006\002\266\054\124\016"}, - {0xFD24, "\006\002\266\041\016"}, - {0xFD25, "\006\002\206\066\016"}, - {0xFD26, "\006\002\206\064\016"}, - {0xFD27, "\006\002\206\137\016"}, - {0xFD28, "\006\002\206\033\016"}, - {0xFD29, "\006\002\206\257\016"}, - {0xFD2A, "\006\002\201\257\016"}, - {0xFD2B, "\006\002\263\257\016"}, - {0xFD2C, "\006\002\266\257\016"}, - {0xFD2D, "\006\002\206\066\036"}, - {0xFD2E, "\006\002\206\064\036"}, - {0xFD2F, "\006\002\206\137\036"}, - {0xFD30, "\006\002\206\033\036"}, - {0xFD31, "\006\002\201\171\036"}, - {0xFD32, "\006\002\206\171\036"}, - {0xFD33, "\006\002\327\033\036"}, - {0xFD34, "\006\002\201\066\105"}, - {0xFD35, "\006\002\201\064\105"}, - {0xFD36, "\006\002\201\137\105"}, - {0xFD37, "\006\002\206\066\105"}, - {0xFD38, "\006\002\206\064\105"}, - {0xFD39, "\006\002\206\137\105"}, - {0xFD3A, "\006\002\327\033\105"}, - {0xFD3B, "\006\002\371\212\033\105"}, - {0xFD3C, "\006\002\054\371\363\016"}, - {0xFD3D, "\006\002\054\371\363\020"}, - {0xFD3E, "\371\004\042\373\341"}, - {0xFD3F, "\371\004\037\373\341"}, - {0xFD50, "\006\002\174\066\033\036"}, - {0xFD51, "\006\002\174\064\066\016"}, - {0xFD52, "\006\002\174\064\066\036"}, - {0xFD53, "\006\002\174\064\033\036"}, - {0xFD54, "\006\002\174\137\033\036"}, - {0xFD55, "\006\002\174\033\066\036"}, - {0xFD56, "\006\002\174\033\064\036"}, - {0xFD57, "\006\002\174\033\137\036"}, - {0xFD58, "\006\002\066\033\064\016"}, - {0xFD59, "\006\002\066\033\064\036"}, - {0xFD5A, "\006\002\064\033\041\016"}, - {0xFD5B, "\006\002\064\033\054\124\016"}, - {0xFD5C, "\006\002\201\064\066\036"}, - {0xFD5D, "\006\002\201\066\064\036"}, - {0xFD5E, "\006\002\201\066\054\124\016"}, - {0xFD5F, "\006\002\201\033\064\016"}, - {0xFD60, "\006\002\201\033\064\036"}, - {0xFD61, "\006\002\201\033\066\036"}, - {0xFD62, "\006\002\201\033\033\016"}, - {0xFD63, "\006\002\201\033\033\036"}, - {0xFD64, "\006\002\263\064\064\016"}, - {0xFD65, "\006\002\263\064\064\036"}, - {0xFD66, "\006\002\263\033\033\016"}, - {0xFD67, "\006\002\206\064\033\016"}, - {0xFD68, "\006\002\206\064\033\036"}, - {0xFD69, "\006\002\206\066\041\016"}, - {0xFD6A, "\006\002\206\033\137\016"}, - {0xFD6B, "\006\002\206\033\137\036"}, - {0xFD6C, "\006\002\206\033\033\016"}, - {0xFD6D, "\006\002\206\033\033\036"}, - {0xFD6E, "\006\002\266\064\054\124\016"}, - {0xFD6F, "\006\002\266\137\033\016"}, - {0xFD70, "\006\002\266\137\033\036"}, - {0xFD71, "\006\002\327\033\064\016"}, - {0xFD72, "\006\002\327\033\064\036"}, - {0xFD73, "\006\002\327\033\033\036"}, - {0xFD74, "\006\002\327\033\041\016"}, - {0xFD75, "\006\002\312\066\033\016"}, - {0xFD76, "\006\002\312\033\033\016"}, - {0xFD77, "\006\002\312\033\033\036"}, - {0xFD78, "\006\002\312\033\054\124\016"}, - {0xFD79, "\006\002\350\033\033\016"}, - {0xFD7A, "\006\002\350\033\041\016"}, - {0xFD7B, "\006\002\350\033\054\124\016"}, - {0xFD7C, "\006\002\261\137\033\016"}, - {0xFD7D, "\006\002\261\137\033\036"}, - {0xFD7E, "\006\002\323\033\064\016"}, - {0xFD7F, "\006\002\323\033\033\016"}, - {0xFD80, "\006\002\155\064\033\016"}, - {0xFD81, "\006\002\155\064\041\016"}, - {0xFD82, "\006\002\155\064\054\124\016"}, - {0xFD83, "\006\002\155\066\066\036"}, - {0xFD84, "\006\002\155\066\066\016"}, - {0xFD85, "\006\002\155\137\033\016"}, - {0xFD86, "\006\002\155\137\033\036"}, - {0xFD87, "\006\002\155\033\064\016"}, - {0xFD88, "\006\002\155\033\064\036"}, - {0xFD89, "\006\002\033\064\066\036"}, - {0xFD8A, "\006\002\033\064\033\036"}, - {0xFD8B, "\006\002\033\064\041\016"}, - {0xFD8C, "\006\002\033\066\064\036"}, - {0xFD8D, "\006\002\033\066\033\036"}, - {0xFD8E, "\006\002\033\137\066\036"}, - {0xFD8F, "\006\002\033\137\033\036"}, - {0xFD92, "\006\002\033\066\137\036"}, - {0xFD93, "\006\002\171\033\066\036"}, - {0xFD94, "\006\002\171\033\033\036"}, - {0xFD95, "\006\002\164\064\033\036"}, - {0xFD96, "\006\002\164\064\054\124\016"}, - {0xFD97, "\006\002\164\066\033\016"}, - {0xFD98, "\006\002\164\066\033\036"}, - {0xFD99, "\006\002\164\066\054\124\016"}, - {0xFD9A, "\006\002\164\033\041\016"}, - {0xFD9B, "\006\002\164\033\054\124\016"}, - {0xFD9C, "\006\002\041\033\033\016"}, - {0xFD9D, "\006\002\041\033\033\036"}, - {0xFD9E, "\006\002\251\137\041\016"}, - {0xFD9F, "\006\002\174\066\041\016"}, - {0xFDA0, "\006\002\174\066\054\124\016"}, - {0xFDA1, "\006\002\174\137\041\016"}, - {0xFDA2, "\006\002\174\137\054\124\016"}, - {0xFDA3, "\006\002\174\033\041\016"}, - {0xFDA4, "\006\002\174\033\054\124\016"}, - {0xFDA5, "\006\002\066\033\041\016"}, - {0xFDA6, "\006\002\066\064\054\124\016"}, - {0xFDA7, "\006\002\066\033\054\124\016"}, - {0xFDA8, "\006\002\201\137\054\124\016"}, - {0xFDA9, "\006\002\263\064\041\016"}, - {0xFDAA, "\006\002\206\064\041\016"}, - {0xFDAB, "\006\002\266\064\041\016"}, - {0xFDAC, "\006\002\155\066\041\016"}, - {0xFDAD, "\006\002\155\033\041\016"}, - {0xFDAE, "\006\002\041\064\041\016"}, - {0xFDAF, "\006\002\041\066\041\016"}, - {0xFDB0, "\006\002\041\033\041\016"}, - {0xFDB1, "\006\002\033\033\041\016"}, - {0xFDB2, "\006\002\323\033\041\016"}, - {0xFDB3, "\006\002\164\064\041\016"}, - {0xFDB4, "\006\002\323\033\064\036"}, - {0xFDB5, "\006\002\155\064\033\036"}, - {0xFDB6, "\006\002\312\033\041\016"}, - {0xFDB7, "\006\002\205\033\041\016"}, - {0xFDB8, "\006\002\164\066\064\036"}, - {0xFDB9, "\006\002\033\137\041\016"}, - {0xFDBA, "\006\002\155\066\033\036"}, - {0xFDBB, "\006\002\205\033\033\016"}, - {0xFDBC, "\006\002\155\066\033\016"}, - {0xFDBD, "\006\002\164\066\064\016"}, - {0xFDBE, "\006\002\066\064\041\016"}, - {0xFDBF, "\006\002\064\066\041\016"}, - {0xFDC0, "\006\002\033\066\041\016"}, - {0xFDC1, "\006\002\261\033\041\016"}, - {0xFDC2, "\006\002\251\064\041\016"}, - {0xFDC3, "\006\002\205\033\033\036"}, - {0xFDC4, "\006\002\312\066\033\036"}, - {0xFDC5, "\006\002\263\033\033\036"}, - {0xFDC6, "\006\002\201\137\041\016"}, - {0xFDC7, "\006\002\164\066\041\016"}, - {0xFDF0, "\006\002\374\034\020\374\113\371\075\134\373\110\373\100"}, - {0xFDF1, "\006\002\376\365\020\374\113\371\075\134\373\110\373\100"}, - {0xFDF2, "\006\002\374\301\020"}, - {0xFDF3, "\006\002\374\276\020"}, - {0xFDF4, "\006\002\376\143\020"}, - {0xFDF5, "\006\002\377\043\020"}, - {0xFDF6, "\006\002\376\375\020"}, - {0xFDF7, "\006\002\373\027\020"}, - {0xFDF8, "\006\002\374\130\020"}, - {0xFDF9, "\006\002\374\034\020"}, - {0xFDFA, "\006\002\377\044\373\027\374\130"}, - {0xFDFB, "\006\002\375\151"}, - {0xFE20, "\023\267\042\012\006"}, - {0xFE21, "\023\267\037\012\006"}, - {0xFE22, "\023\267\042\012\143\051"}, - {0xFE23, "\023\267\037\012\143\051"}, - {0xFE30, "\242\012\305\012\027\372\231\051\145"}, - {0xFE31, "\242\012\305\012\371\072\371\222\145"}, - {0xFE32, "\242\012\305\012\371\072\372\237\145"}, - {0xFE33, "\242\012\305\012\264\061\145"}, - {0xFE34, "\242\012\305\012\264\061\372\002\145"}, - {0xFE35, "\242\012\305\012\371\004\042\224"}, - {0xFE36, "\242\012\305\012\371\004\037\224"}, - {0xFE37, "\242\012\305\373\105\042\145"}, - {0xFE38, "\242\012\305\373\105\037\145"}, - {0xFE39, "\242\012\305\012\100\042\145\007\371\213"}, - {0xFE3A, "\242\012\305\012\100\173\145\007\371\213"}, - {0xFE3B, "\242\012\305\012\100\042\371\300\156\145"}, - {0xFE3C, "\242\012\305\012\100\173\371\300\156\145"}, - {0xFE3D, "\242\012\305\012\100\051\042\145"}, - {0xFE3E, "\242\012\305\012\100\051\173\145"}, - {0xFE3F, "\242\012\305\012\100\042\145"}, - {0xFE40, "\242\012\305\012\100\173\145"}, - {0xFE41, "\242\012\305\012\100\145\042\007\222"}, - {0xFE42, "\242\012\305\012\100\145\173\007\222"}, - {0xFE43, "\242\012\305\012\100\133\145\042\007\222"}, - {0xFE44, "\242\012\305\012\100\133\145\173\007\222"}, - {0xFE49, "\264\065\007\372\132"}, - {0xFE4A, "\264\065\040\027\373\062"}, - {0xFE4B, "\264\065\372\002"}, - {0xFE4C, "\264\065\051\372\002"}, - {0xFE4D, "\264\061\130\372\132"}, - {0xFE4E, "\264\061\040\027\373\062"}, - {0xFE4F, "\264\061\372\002"}, - {0xFE50, "\331\003"}, - {0xFE51, "\331\063\003"}, - {0xFE52, "\027\003"}, - {0xFE54, "\372\010\003"}, - {0xFE55, "\371\350\003"}, - {0xFE56, "\027\371\225\003"}, - {0xFE57, "\027\371\132\003"}, - {0xFE58, "\264\371\226\371\222\003"}, - {0xFE59, "\371\004\042\003"}, - {0xFE5A, "\371\004\037\003"}, - {0xFE5B, "\371\261\042\003"}, - {0xFE5C, "\371\261\037\003"}, - {0xFE5D, "\100\042\007\371\213\003"}, - {0xFE5E, "\100\173\007\371\213\003"}, - {0xFE5F, "\372\227\003"}, - {0xFE60, "\372\327\003"}, - {0xFE61, "\371\011\003"}, - {0xFE62, "\134\162\003"}, - {0xFE63, "\371\072\003"}, - {0xFE64, "\134\300\040\003"}, - {0xFE65, "\134\326\040\003"}, - {0xFE66, "\134\142\040\003"}, - {0xFE68, "\210\361\371\275\003"}, - {0xFE69, "\015\372\243\003"}, - {0xFE6A, "\015\335\371\223\003"}, - {0xFE6B, "\372\206\003"}, - {0xFE70, "\371\363\002\020"}, - {0xFE71, "\374\072\371\363\007\025\002"}, - {0xFE72, "\372\233\002\020"}, - {0xFE74, "\372\300\020\002"}, - {0xFE76, "\371\362\020\002"}, - {0xFE77, "\371\362\105\002"}, - {0xFE78, "\371\347\020\002"}, - {0xFE79, "\371\347\105\002"}, - {0xFE7A, "\371\372\020\002"}, - {0xFE7B, "\371\372\105\002"}, - {0xFE7C, "\371\045\020\002"}, - {0xFE7D, "\371\045\105\002"}, - {0xFE7E, "\372\360\020\002"}, - {0xFE7F, "\372\360\105\002"}, - {0xFE80, "\001\002\126\020"}, - {0xFE81, "\001\002\054\371\302\007\025\020"}, - {0xFE82, "\001\002\054\371\302\007\025\016"}, - {0xFE83, "\001\002\054\126\007\025\020"}, - {0xFE84, "\001\002\016"}, - {0xFE85, "\001\002\371\035\126\007\025\020"}, - {0xFE86, "\001\002\371\035\126\007\025\016"}, - {0xFE87, "\001\002\054\126\032\020"}, - {0xFE88, "\001\002\054\126\032\016"}, - {0xFE89, "\001\002\041\126\007\025\020"}, - {0xFE8A, "\001\002\041\126\007\025\016"}, - {0xFE8B, "\001\002\041\126\007\025\036"}, - {0xFE8C, "\001\002\041\126\007\025\105"}, - {0xFE8D, "\001\002\054\020"}, - {0xFE8E, "\001\002\054\016"}, - {0xFE8F, "\001\002\251\020"}, - {0xFE90, "\001\002\251\016"}, - {0xFE91, "\001\002\251\036"}, - {0xFE92, "\001\002\251\105"}, - {0xFE93, "\001\002\174\372\105\020"}, - {0xFE94, "\001\002\174\372\105\016"}, - {0xFE95, "\001\002\174\020"}, - {0xFE96, "\001\002\174\016"}, - {0xFE97, "\001\002\174\036"}, - {0xFE98, "\001\002\174\105"}, - {0xFE99, "\001\002\337\020"}, - {0xFE9A, "\001\002\337\016"}, - {0xFE9B, "\001\002\337\036"}, - {0xFE9C, "\001\002\337\105"}, - {0xFE9D, "\001\002\066\020"}, - {0xFE9E, "\001\002\066\016"}, - {0xFE9F, "\001\002\066\036"}, - {0xFEA0, "\001\002\066\105"}, - {0xFEA1, "\001\002\064\020"}, - {0xFEA2, "\001\002\064\016"}, - {0xFEA3, "\001\002\064\036"}, - {0xFEA4, "\001\002\064\105"}, - {0xFEA5, "\001\002\137\020"}, - {0xFEA6, "\001\002\137\016"}, - {0xFEA7, "\001\002\137\036"}, - {0xFEA8, "\001\002\137\105"}, - {0xFEA9, "\001\002\371\134\020"}, - {0xFEAA, "\001\002\371\134\016"}, - {0xFEAB, "\001\002\372\054\020"}, - {0xFEAC, "\001\002\372\054\016"}, - {0xFEAD, "\001\002\257\020"}, - {0xFEAE, "\001\002\257\016"}, - {0xFEAF, "\001\002\371\124\020"}, - {0xFEB0, "\001\002\371\124\016"}, - {0xFEB1, "\001\002\201\020"}, - {0xFEB2, "\001\002\201\016"}, - {0xFEB3, "\001\002\201\036"}, - {0xFEB4, "\001\002\201\105"}, - {0xFEB5, "\001\002\206\020"}, - {0xFEB6, "\001\002\206\016"}, - {0xFEB7, "\001\002\206\036"}, - {0xFEB8, "\001\002\206\105"}, - {0xFEB9, "\001\002\263\020"}, - {0xFEBA, "\001\002\263\016"}, - {0xFEBB, "\001\002\263\036"}, - {0xFEBC, "\001\002\263\105"}, - {0xFEBD, "\001\002\266\020"}, - {0xFEBE, "\001\002\266\016"}, - {0xFEBF, "\001\002\266\036"}, - {0xFEC0, "\001\002\266\105"}, - {0xFEC1, "\001\002\327\020"}, - {0xFEC2, "\001\002\327\016"}, - {0xFEC3, "\001\002\327\036"}, - {0xFEC4, "\001\002\327\105"}, - {0xFEC5, "\001\002\371\212\020"}, - {0xFEC6, "\001\002\371\212\016"}, - {0xFEC7, "\001\002\371\212\036"}, - {0xFEC8, "\001\002\371\212\105"}, - {0xFEC9, "\001\002\312\020"}, - {0xFECA, "\001\002\312\016"}, - {0xFECB, "\001\002\312\036"}, - {0xFECC, "\001\002\312\105"}, - {0xFECD, "\001\002\350\020"}, - {0xFECE, "\001\002\350\016"}, - {0xFECF, "\001\002\350\036"}, - {0xFED0, "\001\002\350\105"}, - {0xFED1, "\001\002\261\020"}, - {0xFED2, "\001\002\261\016"}, - {0xFED3, "\001\002\261\036"}, - {0xFED4, "\001\002\261\105"}, - {0xFED5, "\001\002\323\020"}, - {0xFED6, "\001\002\323\016"}, - {0xFED7, "\001\002\323\036"}, - {0xFED8, "\001\002\323\105"}, - {0xFED9, "\001\002\205\020"}, - {0xFEDA, "\001\002\205\016"}, - {0xFEDB, "\001\002\205\036"}, - {0xFEDC, "\001\002\205\105"}, - {0xFEDD, "\001\002\155\020"}, - {0xFEDE, "\001\002\155\016"}, - {0xFEDF, "\001\002\155\036"}, - {0xFEE0, "\001\002\155\105"}, - {0xFEE1, "\001\002\033\020"}, - {0xFEE2, "\001\002\033\016"}, - {0xFEE3, "\001\002\033\036"}, - {0xFEE4, "\001\002\033\105"}, - {0xFEE5, "\001\002\164\020"}, - {0xFEE6, "\001\002\164\016"}, - {0xFEE7, "\001\002\164\036"}, - {0xFEE8, "\001\002\164\105"}, - {0xFEE9, "\001\002\171\020"}, - {0xFEEA, "\001\002\171\016"}, - {0xFEEB, "\001\002\171\036"}, - {0xFEEC, "\001\002\171\105"}, - {0xFEED, "\001\002\371\035\020"}, - {0xFEEE, "\001\002\371\035\016"}, - {0xFEEF, "\001\002\054\124\020"}, - {0xFEF0, "\001\002\054\124\016"}, - {0xFEF1, "\001\002\041\020"}, - {0xFEF2, "\001\002\041\016"}, - {0xFEF3, "\001\002\041\036"}, - {0xFEF4, "\001\002\041\105"}, - {0xFEF5, "\006\002\155\054\371\302\007\025\020"}, - {0xFEF6, "\006\002\155\054\371\302\007\025\016"}, - {0xFEF7, "\006\002\155\054\126\007\025\020"}, - {0xFEF8, "\006\002\155\054\126\007\025\016"}, - {0xFEF9, "\006\002\155\054\126\032\020"}, - {0xFEFA, "\006\002\155\054\126\032\016"}, - {0xFEFB, "\006\002\155\054\020"}, - {0xFEFC, "\006\002\155\054\016"}, - {0xFEFF, "\371\026\373\240\232\056"}, - {0xFF01, "\027\371\132\062\056"}, - {0xFF02, "\371\014\062\056"}, - {0xFF03, "\372\227\062\056"}, - {0xFF04, "\015\372\243\062\056"}, - {0xFF05, "\015\335\371\223\062\056"}, - {0xFF06, "\372\327\062\056"}, - {0xFF07, "\371\216\062\056"}, - {0xFF08, "\371\004\042\062\056"}, - {0xFF09, "\371\004\037\062\056"}, - {0xFF0A, "\371\011\062\056"}, - {0xFF0B, "\134\162\062\056"}, - {0xFF0C, "\331\062\056"}, - {0xFF0D, "\371\072\062\056"}, - {0xFF0E, "\027\062\056"}, - {0xFF0F, "\210\361\062\056"}, - {0xFF10, "\017\311\062\056"}, - {0xFF11, "\017\132\062\056"}, - {0xFF12, "\017\154\062\056"}, - {0xFF13, "\017\131\062\056"}, - {0xFF14, "\017\200\062\056"}, - {0xFF15, "\017\203\062\056"}, - {0xFF16, "\017\233\062\056"}, - {0xFF17, "\017\221\062\056"}, - {0xFF18, "\017\204\062\056"}, - {0xFF19, "\017\235\062\056"}, - {0xFF1A, "\371\350\373\074\062\056"}, - {0xFF1B, "\372\010\062\056"}, - {0xFF1C, "\134\300\040\062\056"}, - {0xFF1D, "\134\142\040\062\056"}, - {0xFF1E, "\134\326\040\062\056"}, - {0xFF1F, "\027\371\225\062\056"}, - {0xFF20, "\372\206\062\056"}, - {0xFF21, "\001\005\004\046\062\056"}, - {0xFF22, "\001\005\004\275\062\056"}, - {0xFF23, "\001\005\004\241\062\056"}, - {0xFF24, "\001\005\004\225\062\056"}, - {0xFF25, "\001\005\004\060\062\056"}, - {0xFF26, "\001\005\004\355\062\056"}, - {0xFF27, "\001\005\004\227\062\056"}, - {0xFF28, "\001\005\004\230\062\056"}, - {0xFF29, "\001\005\004\072\062\056"}, - {0xFF2A, "\001\005\004\344\062\056"}, - {0xFF2B, "\001\005\004\301\062\056"}, - {0xFF2C, "\001\005\004\167\062\056"}, - {0xFF2D, "\001\005\004\256\062\056"}, - {0xFF2E, "\001\005\004\213\062\056"}, - {0xFF2F, "\001\005\004\050\062\056"}, - {0xFF30, "\001\005\004\351\062\056"}, - {0xFF31, "\001\005\004\371\066\062\056"}, - {0xFF32, "\001\005\004\150\062\056"}, - {0xFF33, "\001\005\004\207\062\056"}, - {0xFF34, "\001\005\004\236\062\056"}, - {0xFF35, "\001\005\004\107\062\056"}, - {0xFF36, "\001\005\004\324\062\056"}, - {0xFF37, "\001\005\004\273\062\056"}, - {0xFF38, "\001\005\004\310\062\056"}, - {0xFF39, "\001\005\004\240\062\056"}, - {0xFF3A, "\001\005\004\243\062\056"}, - {0xFF3B, "\100\042\062\056"}, - {0xFF3C, "\210\361\371\275\062\056"}, - {0xFF3D, "\100\173\062\056"}, - {0xFF3E, "\026\117\062\056"}, - {0xFF3F, "\264\061\062\056"}, - {0xFF40, "\026\151\062\056"}, - {0xFF41, "\001\003\004\046\062\056"}, - {0xFF42, "\001\003\004\275\062\056"}, - {0xFF43, "\001\003\004\241\062\056"}, - {0xFF44, "\001\003\004\225\062\056"}, - {0xFF45, "\001\003\004\060\062\056"}, - {0xFF46, "\001\003\004\355\062\056"}, - {0xFF47, "\001\003\004\227\062\056"}, - {0xFF48, "\001\003\004\230\062\056"}, - {0xFF49, "\001\003\004\072\062\056"}, - {0xFF4A, "\001\003\004\344\062\056"}, - {0xFF4B, "\001\003\004\301\062\056"}, - {0xFF4C, "\001\003\004\167\062\056"}, - {0xFF4D, "\001\003\004\256\062\056"}, - {0xFF4E, "\001\003\004\213\062\056"}, - {0xFF4F, "\001\003\004\050\062\056"}, - {0xFF50, "\001\003\004\351\062\056"}, - {0xFF51, "\001\003\004\371\066\062\056"}, - {0xFF52, "\001\003\004\150\062\056"}, - {0xFF53, "\001\003\004\207\062\056"}, - {0xFF54, "\001\003\004\236\062\056"}, - {0xFF55, "\001\003\004\107\062\056"}, - {0xFF56, "\001\003\004\324\062\056"}, - {0xFF57, "\001\003\004\273\062\056"}, - {0xFF58, "\001\003\004\310\062\056"}, - {0xFF59, "\001\003\004\240\062\056"}, - {0xFF5A, "\001\003\004\243\062\056"}, - {0xFF5B, "\371\261\042\062\056"}, - {0xFF5C, "\212\224\062\056"}, - {0xFF5D, "\371\261\037\062\056"}, - {0xFF5E, "\143\062\056"}, - {0xFF61, "\027\063\047"}, - {0xFF62, "\100\042\007\222\047"}, - {0xFF63, "\100\173\007\222\047"}, - {0xFF64, "\331\063\047"}, - {0xFF65, "\027\371\040\030\047"}, - {0xFF66, "\001\030\371\123\047"}, - {0xFF67, "\001\030\144\046\047"}, - {0xFF68, "\001\030\144\072\047"}, - {0xFF69, "\001\030\144\107\047"}, - {0xFF6A, "\001\030\144\060\047"}, - {0xFF6B, "\001\030\144\050\047"}, - {0xFF6C, "\001\030\144\332\047"}, - {0xFF6D, "\001\030\144\371\257\047"}, - {0xFF6E, "\001\030\144\371\021\047"}, - {0xFF6F, "\001\030\144\371\256\047"}, - {0xFF70, "\153\371\277\012\371\070\372\134\047"}, - {0xFF71, "\001\030\046\047"}, - {0xFF72, "\001\030\072\047"}, - {0xFF73, "\001\030\107\047"}, - {0xFF74, "\001\030\060\047"}, - {0xFF75, "\001\030\050\047"}, - {0xFF76, "\001\030\244\047"}, - {0xFF77, "\001\030\372\073\047"}, - {0xFF78, "\001\030\372\075\047"}, - {0xFF79, "\001\030\371\236\047"}, - {0xFF7A, "\001\030\371\240\047"}, - {0xFF7B, "\001\030\364\047"}, - {0xFF7C, "\001\030\372\152\047"}, - {0xFF7D, "\001\030\372\161\047"}, - {0xFF7E, "\001\030\371\320\047"}, - {0xFF7F, "\001\030\371\046\047"}, - {0xFF80, "\001\030\371\017\047"}, - {0xFF81, "\001\030\372\023\047"}, - {0xFF82, "\001\030\371\256\047"}, - {0xFF83, "\001\030\372\165\047"}, - {0xFF84, "\001\030\371\254\047"}, - {0xFF85, "\001\030\371\002\047"}, - {0xFF86, "\001\030\216\047"}, - {0xFF87, "\001\030\371\305\047"}, - {0xFF88, "\001\030\371\113\047"}, - {0xFF89, "\001\030\371\164\047"}, - {0xFF8A, "\001\030\333\047"}, - {0xFF8B, "\001\030\372\067\047"}, - {0xFF8C, "\001\030\372\070\047"}, - {0xFF8D, "\001\030\371\104\047"}, - {0xFF8E, "\001\030\371\061\047"}, - {0xFF8F, "\001\030\360\047"}, - {0xFF90, "\001\030\372\110\047"}, - {0xFF91, "\001\030\371\001\047"}, - {0xFF92, "\001\030\372\106\047"}, - {0xFF93, "\001\030\371\241\047"}, - {0xFF94, "\001\030\332\047"}, - {0xFF95, "\001\030\371\257\047"}, - {0xFF96, "\001\030\371\021\047"}, - {0xFF97, "\001\030\345\047"}, - {0xFF98, "\001\030\372\144\047"}, - {0xFF99, "\001\030\372\146\047"}, - {0xFF9A, "\001\030\371\315\047"}, - {0xFF9B, "\001\030\372\015\047"}, - {0xFF9C, "\001\030\371\122\047"}, - {0xFF9D, "\001\030\213\047"}, - {0xFF9E, "\153\030\012\371\070\372\032\047"}, - {0xFF9F, "\153\030\012\371\070\372\352\047"}, - {0xFFA0, "\371\341\010\047"}, - {0xFFA1, "\001\010\371\155\047"}, - {0xFFA2, "\001\010\372\157\047"}, - {0xFFA3, "\001\010\372\302\047"}, - {0xFFA4, "\001\010\371\163\047"}, - {0xFFA5, "\001\010\372\316\047"}, - {0xFFA6, "\001\010\372\315\047"}, - {0xFFA7, "\001\010\371\204\047"}, - {0xFFA8, "\001\010\372\364\047"}, - {0xFFA9, "\001\010\371\172\047"}, - {0xFFAA, "\001\010\372\342\047"}, - {0xFFAB, "\001\010\372\343\047"}, - {0xFFAC, "\001\010\372\345\047"}, - {0xFFAD, "\001\010\372\346\047"}, - {0xFFAE, "\001\010\372\347\047"}, - {0xFFAF, "\001\010\372\344\047"}, - {0xFFB0, "\001\010\372\145\047"}, - {0xFFB1, "\001\010\371\161\047"}, - {0xFFB2, "\001\010\371\170\047"}, - {0xFFB3, "\001\010\372\362\047"}, - {0xFFB4, "\001\010\372\125\047"}, - {0xFFB5, "\001\010\371\174\047"}, - {0xFFB6, "\001\010\372\160\047"}, - {0xFFB7, "\001\010\371\152\047"}, - {0xFFB8, "\001\010\371\117\047"}, - {0xFFB9, "\001\010\372\363\047"}, - {0xFFBA, "\001\010\371\201\047"}, - {0xFFBB, "\001\010\371\154\047"}, - {0xFFBC, "\001\010\371\200\047"}, - {0xFFBD, "\001\010\371\166\047"}, - {0xFFBE, "\001\010\371\150\047"}, - {0xFFC2, "\001\010\046\047"}, - {0xFFC3, "\001\010\373\015\047"}, - {0xFFC4, "\001\010\332\047"}, - {0xFFC5, "\001\010\373\012\047"}, - {0xFFC6, "\001\010\050\047"}, - {0xFFC7, "\001\010\371\260\047"}, - {0xFFCA, "\001\010\371\021\047"}, - {0xFFCB, "\001\010\373\013\047"}, - {0xFFCC, "\001\010\373\020\047"}, - {0xFFCD, "\001\010\371\122\047"}, - {0xFFCE, "\001\010\373\004\047"}, - {0xFFCF, "\001\010\372\251\047"}, - {0xFFD2, "\001\010\373\014\047"}, - {0xFFD3, "\001\010\114\047"}, - {0xFFD4, "\001\010\371\123\047"}, - {0xFFD5, "\001\010\373\005\047"}, - {0xFFD6, "\001\010\371\331\047"}, - {0xFFD7, "\001\010\371\051\047"}, - {0xFFDA, "\001\010\373\021\047"}, - {0xFFDB, "\001\010\373\022\047"}, - {0xFFDC, "\001\010\072\047"}, - {0xFFE0, "\015\372\212\062\056"}, - {0xFFE1, "\015\373\267\062\056"}, - {0xFFE2, "\134\372\116\062\056"}, - {0xFFE3, "\161\062\056"}, - {0xFFE4, "\212\375\001\062\056"}, - {0xFFE5, "\015\374\134\062\056"}, - {0xFFE6, "\015\374\131\062\056"}, - {0xFFE8, "\212\224\373\300\047"}, - {0xFFE9, "\043\013\022\042\047"}, - {0xFFEA, "\043\013\035\065\047"}, - {0xFFEB, "\043\013\022\037\047"}, - {0xFFEC, "\043\013\035\061\047"}, - {0xFFED, "\021\156\047"}, - {0xFFEE, "\252\133\047"}, - {0xFFFD, "\074\012\372\340"}, - {0xFFFE, "\375\351"}, + {0x0000, "\361\122\362\233"}, + {0x0001, "\355\320\360\155\362\252"}, + {0x0002, "\355\320\007\357\046\362\261"}, + {0x0003, "\116\007\357\046\362\215"}, + {0x0004, "\116\007\356\045\362\211"}, + {0x0005, "\360\167\362\210"}, + {0x0006, "\360\042\007\357\025\356\105\362\166"}, + {0x0007, "\361\323\362\170"}, + {0x0008, "\355\073\360\052\362\172"}, + {0x0009, "\357\045\356\335\362\222"}, + {0x000A, "\357\202\362\226"}, + {0x000B, "\357\045\256\362\265"}, + {0x000C, "\356\372\361\342\362\216"}, + {0x000D, "\361\257\007\360\114\362\175"}, + {0x000E, "\360\331\356\313\362\251"}, + {0x000F, "\013\356\313\362\250"}, + {0x0010, "\360\025\356\045\362\205"}, + {0x0011, "\355\155\356\155\110\362\177"}, + {0x0012, "\355\155\356\155\127\362\200"}, + {0x0013, "\355\155\356\155\136\362\201"}, + {0x0014, "\355\155\356\155\220\362\202"}, + {0x0015, "\360\042\007\357\025\300\362\230"}, + {0x0016, "\361\346\362\263"}, + {0x0017, "\116\007\356\045\007\355\016\362\214"}, + {0x0018, "\360\050\362\173"}, + {0x0019, "\116\007\361\343\362\207"}, + {0x001A, "\335\007\357\343\362\262"}, + {0x001B, "\360\025\362\213"}, + {0x001C, "\355\045\007\366\064\362\217"}, + {0x001D, "\355\045\007\366\247\362\220"}, + {0x001E, "\355\045\365\145\362\244"}, + {0x001F, "\355\045\007\374\362\362\264"}, + {0x0020, "\355\073"}, + {0x0021, "\037\355\312"}, + {0x0022, "\355\135\356\300"}, + {0x0023, "\357\112"}, + {0x0024, "\022\357\141"}, + {0x0025, "\022\355\057\355\245"}, + {0x0026, "\356\377"}, + {0x0027, "\355\306"}, + {0x0028, "\355\123\052"}, + {0x0029, "\355\123\053"}, + {0x002A, "\355\115"}, + {0x002B, "\057\214"}, + {0x002C, "\330"}, + {0x002D, "\355\007"}, + {0x002E, "\037"}, + {0x002F, "\246\355\044"}, + {0x0030, "\024\331"}, + {0x0031, "\024\110"}, + {0x0032, "\024\127"}, + {0x0033, "\024\136"}, + {0x0034, "\024\220"}, + {0x0035, "\024\230"}, + {0x0036, "\024\255"}, + {0x0037, "\024\252"}, + {0x0038, "\024\226"}, + {0x0039, "\024\257"}, + {0x003A, "\355\103"}, + {0x003B, "\356\104"}, + {0x003C, "\057\320\044"}, + {0x003D, "\057\173\044"}, + {0x003E, "\057\344\044"}, + {0x003F, "\037\355\313"}, + {0x0040, "\357\065"}, + {0x0041, "\001\010\006\063"}, + {0x0042, "\001\010\006\334"}, + {0x0043, "\001\010\006\313"}, + {0x0044, "\001\010\006\275"}, + {0x0045, "\001\010\006\130"}, + {0x0046, "\001\010\006\355\062"}, + {0x0047, "\001\010\006\266"}, + {0x0048, "\001\010\006\237"}, + {0x0049, "\001\010\006\103"}, + {0x004A, "\001\010\006\355\053"}, + {0x004B, "\001\010\006\352"}, + {0x004C, "\001\010\006\211"}, + {0x004D, "\001\010\006\276"}, + {0x004E, "\001\010\006\241"}, + {0x004F, "\001\010\006\064"}, + {0x0050, "\001\010\006\355\021"}, + {0x0051, "\001\010\006\355\173"}, + {0x0052, "\001\010\006\167"}, + {0x0053, "\001\010\006\223"}, + {0x0054, "\001\010\006\261"}, + {0x0055, "\001\010\006\132"}, + {0x0056, "\001\010\006\355\025"}, + {0x0057, "\001\010\006\347"}, + {0x0058, "\001\010\006\355\026"}, + {0x0059, "\001\010\006\265"}, + {0x005A, "\001\010\006\271"}, + {0x005B, "\122\052"}, + {0x005C, "\246\355\044\356\073"}, + {0x005D, "\122\221"}, + {0x005E, "\021\072"}, + {0x005F, "\355\007\101"}, + {0x0060, "\021\067"}, + {0x0061, "\001\005\006\063"}, + {0x0062, "\001\005\006\334"}, + {0x0063, "\001\005\006\313"}, + {0x0064, "\001\005\006\275"}, + {0x0065, "\001\005\006\130"}, + {0x0066, "\001\005\006\355\062"}, + {0x0067, "\001\005\006\266"}, + {0x0068, "\001\005\006\237"}, + {0x0069, "\001\005\006\103"}, + {0x006A, "\001\005\006\355\053"}, + {0x006B, "\001\005\006\352"}, + {0x006C, "\001\005\006\211"}, + {0x006D, "\001\005\006\276"}, + {0x006E, "\001\005\006\241"}, + {0x006F, "\001\005\006\064"}, + {0x0070, "\001\005\006\355\021"}, + {0x0071, "\001\005\006\355\173"}, + {0x0072, "\001\005\006\167"}, + {0x0073, "\001\005\006\223"}, + {0x0074, "\001\005\006\261"}, + {0x0075, "\001\005\006\132"}, + {0x0076, "\001\005\006\355\025"}, + {0x0077, "\001\005\006\347"}, + {0x0078, "\001\005\006\355\026"}, + {0x0079, "\001\005\006\265"}, + {0x007A, "\001\005\006\271"}, + {0x007B, "\356\051\052"}, + {0x007C, "\246\256"}, + {0x007D, "\356\051\053"}, + {0x007E, "\172"}, + {0x007F, "\361\344\362\204"}, + {0x0080, "\335\007\356\145\362\235"}, + {0x0081, "\372\072\344\373\277\362\221"}, + {0x0082, "\356\141\372\201\360\342\362\171"}, + {0x0083, "\360\060\356\141\360\342\362\231"}, + {0x0084, "\355\326\362\225"}, + {0x0085, "\044\033\243\362\232"}, + {0x0086, "\355\320\007\357\061\361\347\362\256"}, + {0x0087, "\116\007\357\061\361\347\362\212"}, + {0x0088, "\356\141\007\357\346\242\362\224"}, + {0x0089, "\357\346\242\164\367\340\362\223"}, + {0x008A, "\356\141\007\357\346\202\362\266"}, + {0x008B, "\357\202\361\156\015\360\041\101\362\236"}, + {0x008C, "\357\202\361\156\015\360\041\102\362\237"}, + {0x008D, "\355\326\367\223\362\243"}, + {0x008E, "\357\022\357\051\127\362\254"}, + {0x008F, "\357\022\357\051\136\362\255"}, + {0x0090, "\357\076\007\355\155\356\155\362\203"}, + {0x0091, "\362\057\357\012\110\362\241"}, + {0x0092, "\362\057\357\012\127\362\242"}, + {0x0093, "\370\372\013\371\005\356\045\362\260"}, + {0x0094, "\360\050\212\335\373\274\362\174"}, + {0x0095, "\361\052\013\363\003\362\227"}, + {0x0096, "\355\320\007\357\061\361\225\362\246"}, + {0x0097, "\116\007\357\061\361\225\362\206"}, + {0x0098, "\355\320\007\357\076\362\253"}, + {0x0099, "\357\205\007\335\366\242\357\051\362\247"}, + {0x009A, "\357\205\007\335\357\051\362\245"}, + {0x009B, "\357\205\007\375\071\007\355\155\362\176"}, + {0x009C, "\116\007\357\076\362\257"}, + {0x009D, "\355\155\007\375\060\365\154\362\234"}, + {0x009E, "\361\052\357\012\362\240"}, + {0x009F, "\355\155\007\373\267\362\167"}, + {0x00A0, "\355\073\357\201"}, + {0x00A1, "\037\355\312\355\143"}, + {0x00A2, "\022\357\074"}, + {0x00A3, "\022\361\032"}, + {0x00A4, "\022\355\272"}, + {0x00A5, "\022\362\111"}, + {0x00A6, "\246\256\360\100"}, + {0x00A7, "\361\153"}, + {0x00A8, "\165"}, + {0x00A9, "\022\360\137"}, + {0x00AA, "\357\176\361\142\360\255"}, + {0x00AB, "\355\135\052"}, + {0x00AC, "\057\356\364"}, + {0x00AD, "\355\126\355\315\362\071"}, + {0x00AE, "\022\204\365\361"}, + {0x00AF, "\174"}, + {0x00B0, "\022\357\130"}, + {0x00B1, "\057\372\246"}, + {0x00B2, "\355\074\127"}, + {0x00B3, "\355\074\136"}, + {0x00B4, "\021\062"}, + {0x00B5, "\022\370\354"}, + {0x00B6, "\356\242\007\357\237"}, + {0x00B7, "\037\355\137"}, + {0x00B8, "\274"}, + {0x00B9, "\355\074\110"}, + {0x00BA, "\357\176\361\142\370\273"}, + {0x00BB, "\355\135\221"}, + {0x00BC, "\355\105\110\357\017"}, + {0x00BD, "\355\105\110\355\133"}, + {0x00BE, "\355\105\136\357\303"}, + {0x00BF, "\037\355\313\355\143"}, + {0x00C0, "\001\010\006\063\021\067"}, + {0x00C1, "\001\010\006\063\021\062"}, + {0x00C2, "\001\010\006\063\021\072"}, + {0x00C3, "\001\010\006\063\172"}, + {0x00C4, "\001\010\006\063\165"}, + {0x00C5, "\001\010\006\063\302\013\040"}, + {0x00C6, "\001\010\006\355\305"}, + {0x00C7, "\001\010\006\313\274"}, + {0x00C8, "\001\010\006\130\021\067"}, + {0x00C9, "\001\010\006\130\021\062"}, + {0x00CA, "\001\010\006\130\021\072"}, + {0x00CB, "\001\010\006\130\165"}, + {0x00CC, "\001\010\006\103\021\067"}, + {0x00CD, "\001\010\006\103\021\062"}, + {0x00CE, "\001\010\006\103\021\072"}, + {0x00CF, "\001\010\006\103\165"}, + {0x00D0, "\001\010\006\360\225"}, + {0x00D1, "\001\010\006\241\172"}, + {0x00D2, "\001\010\006\064\021\067"}, + {0x00D3, "\001\010\006\064\021\062"}, + {0x00D4, "\001\010\006\064\021\072"}, + {0x00D5, "\001\010\006\064\172"}, + {0x00D6, "\001\010\006\064\165"}, + {0x00D7, "\057\356\355"}, + {0x00D8, "\001\010\006\064\232\361\134"}, + {0x00D9, "\001\010\006\132\021\067"}, + {0x00DA, "\001\010\006\132\021\062"}, + {0x00DB, "\001\010\006\132\021\072"}, + {0x00DC, "\001\010\006\132\165"}, + {0x00DD, "\001\010\006\265\021\062"}, + {0x00DE, "\001\010\006\362\001"}, + {0x00DF, "\001\005\006\223\356\324"}, + {0x00E0, "\001\005\006\063\021\067"}, + {0x00E1, "\001\005\006\063\021\062"}, + {0x00E2, "\001\005\006\063\021\072"}, + {0x00E3, "\001\005\006\063\172"}, + {0x00E4, "\001\005\006\063\165"}, + {0x00E5, "\001\005\006\063\302\013\040"}, + {0x00E6, "\001\005\006\355\305"}, + {0x00E7, "\001\005\006\313\274"}, + {0x00E8, "\001\005\006\130\021\067"}, + {0x00E9, "\001\005\006\130\021\062"}, + {0x00EA, "\001\005\006\130\021\072"}, + {0x00EB, "\001\005\006\130\165"}, + {0x00EC, "\001\005\006\103\021\067"}, + {0x00ED, "\001\005\006\103\021\062"}, + {0x00EE, "\001\005\006\103\021\072"}, + {0x00EF, "\001\005\006\103\165"}, + {0x00F0, "\001\005\006\360\225"}, + {0x00F1, "\001\005\006\241\172"}, + {0x00F2, "\001\005\006\064\021\067"}, + {0x00F3, "\001\005\006\064\021\062"}, + {0x00F4, "\001\005\006\064\021\072"}, + {0x00F5, "\001\005\006\064\172"}, + {0x00F6, "\001\005\006\064\165"}, + {0x00F7, "\057\357\135"}, + {0x00F8, "\001\005\006\064\232\361\134"}, + {0x00F9, "\001\005\006\132\021\067"}, + {0x00FA, "\001\005\006\132\021\062"}, + {0x00FB, "\001\005\006\132\021\072"}, + {0x00FC, "\001\005\006\132\165"}, + {0x00FD, "\001\005\006\265\021\062"}, + {0x00FE, "\001\005\006\362\001"}, + {0x00FF, "\001\005\006\265\165"}, + {0x0100, "\001\010\006\063\174"}, + {0x0101, "\001\005\006\063\174"}, + {0x0102, "\001\010\006\063\213"}, + {0x0103, "\001\005\006\063\213"}, + {0x0104, "\001\010\006\063\355\055"}, + {0x0105, "\001\005\006\063\355\055"}, + {0x0106, "\001\010\006\313\021\062"}, + {0x0107, "\001\005\006\313\021\062"}, + {0x0108, "\001\010\006\313\021\072"}, + {0x0109, "\001\005\006\313\021\072"}, + {0x010A, "\001\010\006\313\037\013\040"}, + {0x010B, "\001\005\006\313\037\013\040"}, + {0x010C, "\001\010\006\313\225"}, + {0x010D, "\001\005\006\313\225"}, + {0x010E, "\001\010\006\275\225"}, + {0x010F, "\001\005\006\275\225"}, + {0x0110, "\001\010\006\275\232"}, + {0x0111, "\001\005\006\275\232"}, + {0x0112, "\001\010\006\130\174"}, + {0x0113, "\001\005\006\130\174"}, + {0x0114, "\001\010\006\130\213"}, + {0x0115, "\001\005\006\130\213"}, + {0x0116, "\001\010\006\130\037\013\040"}, + {0x0117, "\001\005\006\130\037\013\040"}, + {0x0118, "\001\010\006\130\355\055"}, + {0x0119, "\001\005\006\130\355\055"}, + {0x011A, "\001\010\006\130\225"}, + {0x011B, "\001\005\006\130\225"}, + {0x011C, "\001\010\006\266\021\072"}, + {0x011D, "\001\005\006\266\021\072"}, + {0x011E, "\001\010\006\266\213"}, + {0x011F, "\001\005\006\266\213"}, + {0x0120, "\001\010\006\266\037\013\040"}, + {0x0121, "\001\005\006\266\037\013\040"}, + {0x0122, "\001\010\006\266\274"}, + {0x0123, "\001\005\006\266\274"}, + {0x0124, "\001\010\006\237\021\072"}, + {0x0125, "\001\005\006\237\021\072"}, + {0x0126, "\001\010\006\237\232"}, + {0x0127, "\001\005\006\237\232"}, + {0x0128, "\001\010\006\103\172"}, + {0x0129, "\001\005\006\103\172"}, + {0x012A, "\001\010\006\103\174"}, + {0x012B, "\001\005\006\103\174"}, + {0x012C, "\001\010\006\103\213"}, + {0x012D, "\001\005\006\103\213"}, + {0x012E, "\001\010\006\103\355\055"}, + {0x012F, "\001\005\006\103\355\055"}, + {0x0130, "\001\010\006\103\037\013\040"}, + {0x0131, "\001\005\006\103\270\037"}, + {0x0132, "\355\134\357\035\010\356\351\360\344"}, + {0x0133, "\355\134\357\035\005\356\351\360\344"}, + {0x0134, "\001\010\006\355\053\021\072"}, + {0x0135, "\001\005\006\355\053\021\072"}, + {0x0136, "\001\010\006\352\274"}, + {0x0137, "\001\005\006\352\274"}, + {0x0138, "\001\005\006\370\050"}, + {0x0139, "\001\010\006\211\021\062"}, + {0x013A, "\001\005\006\211\021\062"}, + {0x013B, "\001\010\006\211\274"}, + {0x013C, "\001\005\006\211\274"}, + {0x013D, "\001\010\006\211\225"}, + {0x013E, "\001\005\006\211\225"}, + {0x013F, "\001\010\006\211\037\355\137"}, + {0x0140, "\001\005\006\211\037\355\137"}, + {0x0141, "\001\010\006\211\232"}, + {0x0142, "\001\005\006\211\232"}, + {0x0143, "\001\010\006\241\021\062"}, + {0x0144, "\001\005\006\241\021\062"}, + {0x0145, "\001\010\006\241\274"}, + {0x0146, "\001\005\006\241\274"}, + {0x0147, "\001\010\006\241\225"}, + {0x0148, "\001\005\006\241\225"}, + {0x0149, "\001\005\006\241\373\276\357\120\355\306"}, + {0x014A, "\001\010\006\356\007"}, + {0x014B, "\001\005\006\356\007"}, + {0x014C, "\001\010\006\064\174"}, + {0x014D, "\001\005\006\064\174"}, + {0x014E, "\001\010\006\064\213"}, + {0x014F, "\001\005\006\064\213"}, + {0x0150, "\001\010\006\064\070\021\062"}, + {0x0151, "\001\005\006\064\070\021\062"}, + {0x0152, "\355\134\357\035\010\356\351\355\210"}, + {0x0153, "\355\134\357\035\005\356\351\355\210"}, + {0x0154, "\001\010\006\167\021\062"}, + {0x0155, "\001\005\006\167\021\062"}, + {0x0156, "\001\010\006\167\274"}, + {0x0157, "\001\005\006\167\274"}, + {0x0158, "\001\010\006\167\225"}, + {0x0159, "\001\005\006\167\225"}, + {0x015A, "\001\010\006\223\021\062"}, + {0x015B, "\001\005\006\223\021\062"}, + {0x015C, "\001\010\006\223\021\072"}, + {0x015D, "\001\005\006\223\021\072"}, + {0x015E, "\001\010\006\223\274"}, + {0x015F, "\001\005\006\223\274"}, + {0x0160, "\001\010\006\223\225"}, + {0x0161, "\001\005\006\223\225"}, + {0x0162, "\001\010\006\261\274"}, + {0x0163, "\001\005\006\261\274"}, + {0x0164, "\001\010\006\261\225"}, + {0x0165, "\001\005\006\261\225"}, + {0x0166, "\001\010\006\261\232"}, + {0x0167, "\001\005\006\261\232"}, + {0x0168, "\001\010\006\132\172"}, + {0x0169, "\001\005\006\132\172"}, + {0x016A, "\001\010\006\132\174"}, + {0x016B, "\001\005\006\132\174"}, + {0x016C, "\001\010\006\132\213"}, + {0x016D, "\001\005\006\132\213"}, + {0x016E, "\001\010\006\132\302\013\040"}, + {0x016F, "\001\005\006\132\302\013\040"}, + {0x0170, "\001\010\006\132\070\021\062"}, + {0x0171, "\001\005\006\132\070\021\062"}, + {0x0172, "\001\010\006\132\355\055"}, + {0x0173, "\001\005\006\132\355\055"}, + {0x0174, "\001\010\006\347\021\072"}, + {0x0175, "\001\005\006\347\021\072"}, + {0x0176, "\001\010\006\265\021\072"}, + {0x0177, "\001\005\006\265\021\072"}, + {0x0178, "\001\010\006\265\165"}, + {0x0179, "\001\010\006\271\021\062"}, + {0x017A, "\001\005\006\271\021\062"}, + {0x017B, "\001\010\006\271\037\013\040"}, + {0x017C, "\001\005\006\271\037\013\040"}, + {0x017D, "\001\010\006\271\225"}, + {0x017E, "\001\005\006\271\225"}, + {0x017F, "\001\005\006\223\355\264"}, + {0x0180, "\001\005\006\334\232"}, + {0x0181, "\001\010\006\334\337"}, + {0x0182, "\001\010\006\334\357\010"}, + {0x0183, "\001\005\006\334\357\010"}, + {0x0184, "\001\010\006\357\031\345"}, + {0x0185, "\001\005\006\357\031\345"}, + {0x0186, "\001\010\006\064\355\343"}, + {0x0187, "\001\010\006\313\337"}, + {0x0188, "\001\005\006\313\337"}, + {0x0189, "\001\010\006\275\362\302"}, + {0x018A, "\001\010\006\275\337"}, + {0x018B, "\001\010\006\275\357\010"}, + {0x018C, "\001\005\006\275\357\010"}, + {0x018D, "\001\005\006\356\060\356\154"}, + {0x018E, "\001\010\006\130\355\013"}, + {0x018F, "\001\010\006\356\041"}, + {0x0190, "\001\010\006\130\355\343"}, + {0x0191, "\001\010\006\355\062\355\064"}, + {0x0192, "\001\005\006\355\062\355\064"}, + {0x0193, "\001\010\006\266\337"}, + {0x0194, "\001\010\006\356\070"}, + {0x0195, "\001\005\006\367\127"}, + {0x0196, "\001\010\006\104"}, + {0x0197, "\001\010\006\103\232"}, + {0x0198, "\001\010\006\352\337"}, + {0x0199, "\001\005\006\352\337"}, + {0x019A, "\001\005\006\211\374\046"}, + {0x019B, "\001\005\006\356\346\232"}, + {0x019C, "\001\010\006\276\325"}, + {0x019D, "\001\010\006\241\355\064"}, + {0x019E, "\001\005\006\241\044\355\264\357\210\221"}, + {0x019F, "\001\010\006\064\172\355\137"}, + {0x01A0, "\001\010\006\064\336"}, + {0x01A1, "\001\005\006\064\336"}, + {0x01A2, "\001\010\006\355\106"}, + {0x01A3, "\001\005\006\355\106"}, + {0x01A4, "\001\010\006\355\021\337"}, + {0x01A5, "\001\005\006\355\021\337"}, + {0x01A6, "\001\006\362\133"}, + {0x01A7, "\001\010\006\360\174\345"}, + {0x01A8, "\001\005\006\360\174\345"}, + {0x01A9, "\001\010\006\356\167"}, + {0x01AA, "\001\006\356\167\355\013\356\002"}, + {0x01AB, "\001\005\006\261\355\064\357\264"}, + {0x01AC, "\001\010\006\261\337"}, + {0x01AD, "\001\005\006\261\337"}, + {0x01AE, "\001\010\006\261\355\064\355\214"}, + {0x01AF, "\001\010\006\132\336"}, + {0x01B0, "\001\005\006\132\336"}, + {0x01B1, "\001\010\006\262"}, + {0x01B2, "\001\010\006\355\025\337"}, + {0x01B3, "\001\010\006\265\337"}, + {0x01B4, "\001\005\006\265\337"}, + {0x01B5, "\001\010\006\271\232"}, + {0x01B6, "\001\005\006\271\232"}, + {0x01B7, "\001\010\006\355\321"}, + {0x01B8, "\001\010\006\355\321\355\013"}, + {0x01B9, "\001\005\006\355\321\355\013"}, + {0x01BA, "\001\005\006\355\321\355\064"}, + {0x01BB, "\001\006\127\232"}, + {0x01BC, "\001\010\006\357\102\345"}, + {0x01BD, "\001\005\006\357\102\345"}, + {0x01BE, "\001\006\355\224\007\355\226\232\355\143"}, + {0x01BF, "\001\006\360\007"}, + {0x01C0, "\001\006\356\152\365\250"}, + {0x01C1, "\001\006\356\152\370\135"}, + {0x01C2, "\001\006\356\152\362\320"}, + {0x01C3, "\001\006\356\152\355\214"}, + {0x01C4, "\001\010\006\356\064\225"}, + {0x01C5, "\001\010\006\275\164\001\005\271\225"}, + {0x01C6, "\001\005\006\356\064\225"}, + {0x01C7, "\001\010\006\361\034"}, + {0x01C8, "\001\010\006\211\164\001\005\355\053"}, + {0x01C9, "\001\005\006\361\034"}, + {0x01CA, "\001\010\006\361\114"}, + {0x01CB, "\001\010\006\241\164\001\005\355\053"}, + {0x01CC, "\001\005\006\361\114"}, + {0x01CD, "\001\010\006\063\225"}, + {0x01CE, "\001\005\006\063\225"}, + {0x01CF, "\001\010\006\103\225"}, + {0x01D0, "\001\005\006\103\225"}, + {0x01D1, "\001\010\006\064\225"}, + {0x01D2, "\001\005\006\064\225"}, + {0x01D3, "\001\010\006\132\225"}, + {0x01D4, "\001\005\006\132\225"}, + {0x01D5, "\001\010\006\132\165\020\174"}, + {0x01D6, "\001\005\006\132\165\020\174"}, + {0x01D7, "\001\010\006\132\165\020\021\062"}, + {0x01D8, "\001\005\006\132\165\020\021\062"}, + {0x01D9, "\001\010\006\132\165\020\225"}, + {0x01DA, "\001\005\006\132\165\020\225"}, + {0x01DB, "\001\010\006\132\165\020\021\067"}, + {0x01DC, "\001\005\006\132\165\020\021\067"}, + {0x01DD, "\001\005\006\130\325"}, + {0x01DE, "\001\010\006\063\165\020\174"}, + {0x01DF, "\001\005\006\063\165\020\174"}, + {0x01E0, "\001\010\006\063\037\013\040\020\174"}, + {0x01E1, "\001\005\006\063\037\013\040\020\174"}, + {0x01E2, "\001\010\006\355\305\174"}, + {0x01E3, "\001\005\006\355\305\174"}, + {0x01E4, "\001\010\006\266\232"}, + {0x01E5, "\001\005\006\266\232"}, + {0x01E6, "\001\010\006\266\225"}, + {0x01E7, "\001\005\006\266\225"}, + {0x01E8, "\001\010\006\352\225"}, + {0x01E9, "\001\005\006\352\225"}, + {0x01EA, "\001\010\006\064\355\055"}, + {0x01EB, "\001\005\006\064\355\055"}, + {0x01EC, "\001\010\006\064\355\055\020\174"}, + {0x01ED, "\001\005\006\064\355\055\020\174"}, + {0x01EE, "\001\010\006\355\321\225"}, + {0x01EF, "\001\005\006\355\321\225"}, + {0x01F0, "\001\005\006\355\053\225"}, + {0x01F1, "\001\010\006\356\064"}, + {0x01F2, "\001\010\006\275\164\001\005\271"}, + {0x01F3, "\001\005\006\356\064"}, + {0x01F4, "\001\010\006\266\021\062"}, + {0x01F5, "\001\005\006\266\021\062"}, + {0x01F6, "\001\010\006\367\130"}, + {0x01F7, "\001\010\006\360\007"}, + {0x01F8, "\001\010\006\241\067"}, + {0x01F9, "\001\005\006\241\067"}, + {0x01FA, "\001\010\006\063\302\013\040\020\021\062"}, + {0x01FB, "\001\005\006\063\302\013\040\020\021\062"}, + {0x01FC, "\001\010\006\355\305\021\062"}, + {0x01FD, "\001\005\006\355\305\021\062"}, + {0x01FE, "\001\010\006\064\232\021\062"}, + {0x01FF, "\001\005\006\064\232\021\062"}, + {0x0200, "\001\010\006\063\070\021\067"}, + {0x0201, "\001\005\006\063\070\021\067"}, + {0x0202, "\001\010\006\063\213\355\076"}, + {0x0203, "\001\005\006\063\213\355\076"}, + {0x0204, "\001\010\006\130\070\021\067"}, + {0x0205, "\001\005\006\130\070\021\067"}, + {0x0206, "\001\010\006\130\213\355\076"}, + {0x0207, "\001\005\006\130\213\355\076"}, + {0x0208, "\001\010\006\103\070\021\067"}, + {0x0209, "\001\005\006\103\070\021\067"}, + {0x020A, "\001\010\006\103\213\355\076"}, + {0x020B, "\001\005\006\103\213\355\076"}, + {0x020C, "\001\010\006\064\070\021\067"}, + {0x020D, "\001\005\006\064\070\021\067"}, + {0x020E, "\001\010\006\064\213\355\076"}, + {0x020F, "\001\005\006\064\213\355\076"}, + {0x0210, "\001\010\006\167\070\021\067"}, + {0x0211, "\001\005\006\167\070\021\067"}, + {0x0212, "\001\010\006\167\213\355\076"}, + {0x0213, "\001\005\006\167\213\355\076"}, + {0x0214, "\001\010\006\132\070\021\067"}, + {0x0215, "\001\005\006\132\070\021\067"}, + {0x0216, "\001\010\006\132\213\355\076"}, + {0x0217, "\001\005\006\132\213\355\076"}, + {0x0218, "\001\010\006\223\330\301"}, + {0x0219, "\001\005\006\223\330\301"}, + {0x021A, "\001\010\006\261\330\301"}, + {0x021B, "\001\005\006\261\330\301"}, + {0x021C, "\001\010\006\362\116"}, + {0x021D, "\001\005\006\362\116"}, + {0x021E, "\001\010\006\237\225"}, + {0x021F, "\001\005\006\237\225"}, + {0x0222, "\001\010\006\113"}, + {0x0223, "\001\005\006\113"}, + {0x0224, "\001\010\006\271\122"}, + {0x0225, "\001\005\006\271\122"}, + {0x0226, "\001\010\006\063\037\013\040"}, + {0x0227, "\001\005\006\063\037\013\040"}, + {0x0228, "\001\010\006\130\274"}, + {0x0229, "\001\005\006\130\274"}, + {0x022A, "\001\010\006\064\165\020\174"}, + {0x022B, "\001\005\006\064\165\020\174"}, + {0x022C, "\001\010\006\064\172\020\174"}, + {0x022D, "\001\005\006\064\172\020\174"}, + {0x022E, "\001\010\006\064\037\013\040"}, + {0x022F, "\001\005\006\064\037\013\040"}, + {0x0230, "\001\010\006\064\037\013\040\020\174"}, + {0x0231, "\001\005\006\064\037\013\040\020\174"}, + {0x0232, "\001\010\006\265\174"}, + {0x0233, "\001\005\006\265\174"}, + {0x0250, "\001\005\006\063\325"}, + {0x0251, "\001\005\006\203"}, + {0x0252, "\001\005\006\203\325"}, + {0x0253, "\001\005\006\334\337"}, + {0x0254, "\001\005\006\064\355\343"}, + {0x0255, "\001\005\006\313\356\002"}, + {0x0256, "\001\005\006\275\355\064\355\214"}, + {0x0257, "\001\005\006\275\337"}, + {0x0258, "\001\005\006\130\355\013"}, + {0x0259, "\001\005\006\356\041"}, + {0x025A, "\001\005\006\356\041\122"}, + {0x025B, "\001\005\006\326"}, + {0x025C, "\001\005\006\326\355\013"}, + {0x025D, "\001\005\006\326\355\013\122"}, + {0x025E, "\001\005\006\326\355\013\357\146"}, + {0x025F, "\001\005\006\355\053\270\037\232"}, + {0x0260, "\001\005\006\266\337"}, + {0x0261, "\001\005\006\266\365\133"}, + {0x0262, "\001\006\355\142\010\266"}, + {0x0263, "\001\005\006\356\070"}, + {0x0264, "\001\005\006\175\356\070"}, + {0x0265, "\001\005\006\237\325"}, + {0x0266, "\001\005\006\237\337"}, + {0x0267, "\001\005\006\356\007\337"}, + {0x0268, "\001\005\006\103\232"}, + {0x0269, "\001\005\006\104"}, + {0x026A, "\001\006\355\142\010\103"}, + {0x026B, "\001\005\006\211\172\355\137"}, + {0x026C, "\001\005\006\211\374\220"}, + {0x026D, "\001\005\006\211\355\064\355\214"}, + {0x026E, "\001\005\006\370\144"}, + {0x026F, "\001\005\006\276\325"}, + {0x0270, "\001\005\006\276\357\163\325"}, + {0x0271, "\001\005\006\276\355\064\357\264"}, + {0x0272, "\001\005\006\241\355\064\044\052"}, + {0x0273, "\001\005\006\241\355\064\355\214"}, + {0x0274, "\001\006\355\142\010\241"}, + {0x0275, "\001\005\006\064\232"}, + {0x0276, "\001\006\355\142\010\355\210"}, + {0x0277, "\001\005\006\201\357\146"}, + {0x0278, "\001\005\006\356\241"}, + {0x0279, "\001\005\006\167\325"}, + {0x027A, "\001\005\006\167\357\013\325"}, + {0x027B, "\001\005\006\167\337\325"}, + {0x027C, "\001\005\006\167\357\013"}, + {0x027D, "\001\005\006\167\355\064\355\214"}, + {0x027E, "\001\005\006\167\270\357\162"}, + {0x027F, "\001\005\006\167\270\357\162\355\013"}, + {0x0280, "\001\006\355\142\010\167"}, + {0x0281, "\001\006\355\142\010\167\355\143"}, + {0x0282, "\001\005\006\223\355\064\355\214"}, + {0x0283, "\001\005\006\356\167"}, + {0x0284, "\001\005\006\355\053\270\037\232\337"}, + {0x0285, "\001\005\006\356\167\375\247\355\143"}, + {0x0286, "\001\005\006\356\167\356\002"}, + {0x0287, "\001\005\006\261\325"}, + {0x0288, "\001\005\006\261\355\064\355\214"}, + {0x0289, "\001\005\006\132\232"}, + {0x028A, "\001\005\006\262"}, + {0x028B, "\001\005\006\355\025\007\355\144"}, + {0x028C, "\001\005\006\355\025\325"}, + {0x028D, "\001\005\006\347\325"}, + {0x028E, "\001\005\006\265\325"}, + {0x028F, "\001\006\355\142\010\265"}, + {0x0290, "\001\005\006\271\355\064\355\214"}, + {0x0291, "\001\005\006\271\356\002"}, + {0x0292, "\001\005\006\355\321"}, + {0x0293, "\001\005\006\355\321\356\002"}, + {0x0294, "\001\006\355\224\007\355\226"}, + {0x0295, "\001\006\355\224\007\355\226\355\013"}, + {0x0296, "\001\006\355\224\007\355\226\355\143"}, + {0x0297, "\001\006\313\377\036"}, + {0x0298, "\001\006\356\152\363\127"}, + {0x0299, "\001\006\355\142\010\334"}, + {0x029A, "\001\005\006\326\357\146"}, + {0x029B, "\001\006\355\142\010\266\337"}, + {0x029C, "\001\006\355\142\010\237"}, + {0x029D, "\001\005\006\355\053\356\247\365\121"}, + {0x029E, "\001\005\006\352\325"}, + {0x029F, "\001\006\355\142\010\211"}, + {0x02A0, "\001\005\006\355\173\337"}, + {0x02A1, "\001\006\355\224\007\355\226\232"}, + {0x02A2, "\001\006\355\224\007\355\226\232\355\013"}, + {0x02A3, "\001\005\006\355\134\356\064"}, + {0x02A4, "\001\005\006\355\134\365\241"}, + {0x02A5, "\001\005\006\355\134\356\064\356\002"}, + {0x02A6, "\001\005\006\355\134\362\040"}, + {0x02A7, "\001\005\006\355\134\375\156"}, + {0x02A8, "\001\005\006\355\134\375\114\356\002"}, + {0x02A9, "\001\005\006\355\134\366\055"}, + {0x02AA, "\001\005\006\355\134\370\211"}, + {0x02AB, "\001\005\006\355\134\370\235"}, + {0x02AC, "\001\006\361\163\363\130"}, + {0x02AD, "\001\006\361\163\363\122"}, + {0x02B0, "\001\200\005\237"}, + {0x02B1, "\001\200\005\237\337"}, + {0x02B2, "\001\200\005\355\053"}, + {0x02B3, "\001\200\005\167"}, + {0x02B4, "\001\200\005\167\325"}, + {0x02B5, "\001\200\005\167\337\325"}, + {0x02B6, "\001\200\355\142\010\167\355\143"}, + {0x02B7, "\001\200\005\347"}, + {0x02B8, "\001\200\005\265"}, + {0x02B9, "\001\200\355\235"}, + {0x02BA, "\001\200\374\241"}, + {0x02BB, "\001\200\330\356\154"}, + {0x02BC, "\001\200\355\306"}, + {0x02BD, "\001\200\330\357\322"}, + {0x02BE, "\001\200\360\170\044\053"}, + {0x02BF, "\001\200\360\170\044\052"}, + {0x02C0, "\001\200\355\224\007\355\226"}, + {0x02C1, "\001\200\355\224\007\355\226\355\013"}, + {0x02C2, "\001\200\355\003\007\061\015\033\052"}, + {0x02C3, "\001\200\355\003\007\061\015\033\053"}, + {0x02C4, "\001\200\355\003\007\061\015\050\102"}, + {0x02C5, "\001\200\355\003\007\061\015\050\101"}, + {0x02C6, "\001\200\021\072"}, + {0x02C7, "\225"}, + {0x02C8, "\001\200\243\256"}, + {0x02C9, "\001\200\174"}, + {0x02CA, "\001\200\021\062"}, + {0x02CB, "\001\200\021\067"}, + {0x02CC, "\001\200\243\256\101"}, + {0x02CD, "\001\200\174\101"}, + {0x02CE, "\001\200\021\067\101"}, + {0x02CF, "\001\200\021\062\101"}, + {0x02D0, "\001\200\127\251\375\255"}, + {0x02D1, "\001\200\037\356\131"}, + {0x02D2, "\001\200\356\061\044\053\360\111"}, + {0x02D3, "\001\200\356\061\044\052\360\111"}, + {0x02D4, "\001\200\355\014\102"}, + {0x02D5, "\001\200\355\014\101"}, + {0x02D6, "\001\200\057\214"}, + {0x02D7, "\001\200\057\355\020"}, + {0x02D8, "\213"}, + {0x02D9, "\037\013\040"}, + {0x02DA, "\302\013\040"}, + {0x02DB, "\355\055"}, + {0x02DC, "\175\172"}, + {0x02DD, "\070\021\062"}, + {0x02DE, "\001\200\122\007\374\061"}, + {0x02DF, "\001\200\021\013\355\033"}, + {0x02E0, "\001\200\356\070\005"}, + {0x02E1, "\001\200\211\005"}, + {0x02E2, "\001\200\223\005"}, + {0x02E3, "\001\200\355\026\005"}, + {0x02E4, "\001\200\355\224\007\355\226\355\013\005"}, + {0x02E5, "\001\200\246\007\345\362\037\102"}, + {0x02E6, "\001\200\246\007\345\102"}, + {0x02E7, "\001\200\246\007\345\371\024"}, + {0x02E8, "\001\200\246\007\345\101"}, + {0x02E9, "\001\200\246\007\345\362\037\101"}, + {0x02EA, "\001\200\057\007\345\007\360\224\362\114"}, + {0x02EB, "\001\200\057\007\345\007\360\224\360\011"}, + {0x02EC, "\001\200\360\003"}, + {0x02ED, "\001\200\355\043\362\373"}, + {0x02EE, "\001\200\070\355\306"}, + {0x0300, "\026\021\067"}, + {0x0301, "\026\021\062"}, + {0x0302, "\026\021\072"}, + {0x0303, "\026\172"}, + {0x0304, "\026\174"}, + {0x0305, "\026\355\007\102"}, + {0x0306, "\026\213"}, + {0x0307, "\026\037\013\040"}, + {0x0308, "\026\165"}, + {0x0309, "\026\122\013\040"}, + {0x030A, "\026\302\013\040"}, + {0x030B, "\026\070\021\062"}, + {0x030C, "\026\225"}, + {0x030D, "\026\243\256\013\040"}, + {0x030E, "\026\070\243\256\013\040"}, + {0x030F, "\026\070\021\067"}, + {0x0310, "\026\356\123"}, + {0x0311, "\026\213\355\076"}, + {0x0312, "\026\330\356\154\013\040"}, + {0x0313, "\026\330\013\040"}, + {0x0314, "\026\330\357\322\013\040"}, + {0x0315, "\026\330\013\040\044\053"}, + {0x0316, "\026\021\067\043"}, + {0x0317, "\026\021\062\043"}, + {0x0318, "\026\355\014\052\043"}, + {0x0319, "\026\355\014\221\043"}, + {0x031A, "\026\355\374\052\013\040"}, + {0x031B, "\026\336"}, + {0x031C, "\026\356\061\052\043"}, + {0x031D, "\026\355\014\102\043"}, + {0x031E, "\026\355\014\101\043"}, + {0x031F, "\026\057\214\043"}, + {0x0320, "\026\057\355\020\043"}, + {0x0321, "\026\355\064\357\264\043"}, + {0x0322, "\026\355\064\355\214\043"}, + {0x0323, "\026\037\043"}, + {0x0324, "\026\165\043"}, + {0x0325, "\026\302\043"}, + {0x0326, "\026\330\301"}, + {0x0327, "\026\274"}, + {0x0328, "\026\355\055"}, + {0x0329, "\026\243\256\301"}, + {0x032A, "\026\357\273\043"}, + {0x032B, "\026\201\043"}, + {0x032C, "\026\225\043"}, + {0x032D, "\026\021\072\043"}, + {0x032E, "\026\213\301"}, + {0x032F, "\026\213\355\076\301"}, + {0x0330, "\026\172\043"}, + {0x0331, "\026\174\043"}, + {0x0332, "\026\355\126\043"}, + {0x0333, "\026\070\355\126\043"}, + {0x0334, "\026\172\356\315"}, + {0x0335, "\026\246\356\314\356\056"}, + {0x0336, "\026\246\356\221\356\056"}, + {0x0337, "\026\246\355\044\356\314\356\056"}, + {0x0338, "\026\246\355\044\356\221\356\056"}, + {0x0339, "\026\356\061\044\053\043"}, + {0x033A, "\026\357\273\355\143\043"}, + {0x033B, "\026\035\043"}, + {0x033C, "\026\371\021\301"}, + {0x033D, "\026\355\026\013\040"}, + {0x033E, "\026\172\202"}, + {0x033F, "\026\070\355\126\013\040"}, + {0x0340, "\026\204\007\345\067"}, + {0x0341, "\026\204\007\345\062"}, + {0x0342, "\026\317\021\072"}, + {0x0343, "\026\317\360\142"}, + {0x0344, "\026\317\355\061\355\047"}, + {0x0345, "\026\317\104\043"}, + {0x0346, "\026\357\273\013\040"}, + {0x0347, "\026\057\173\043"}, + {0x0348, "\026\070\243\256\301"}, + {0x0349, "\026\355\374\052\043"}, + {0x034A, "\026\172\232\013\040"}, + {0x034B, "\026\360\327\013\040"}, + {0x034C, "\026\357\011\173\044\013\040"}, + {0x034D, "\026\366\073\052\020\053\301"}, + {0x034E, "\026\061\015\050\102\301"}, + {0x0360, "\026\070\172"}, + {0x0361, "\026\070\213\355\076"}, + {0x0362, "\026\070\061\015\033\053\301"}, + {0x0374, "\057\361\123\317"}, + {0x0375, "\057\361\123\043\317"}, + {0x037A, "\335\317\104\043"}, + {0x037E, "\037\355\313\317"}, + {0x0384, "\335\317\355\047"}, + {0x0385, "\335\317\355\061\355\047"}, + {0x0386, "\001\010\027\203\355\047"}, + {0x0387, "\335\317\362\334\375\157"}, + {0x0388, "\001\010\027\326\355\047"}, + {0x0389, "\001\010\027\224\355\047"}, + {0x038A, "\001\010\027\104\355\047"}, + {0x038C, "\001\010\027\355\036\355\047"}, + {0x038E, "\001\010\027\262\355\047"}, + {0x038F, "\001\010\027\201\355\047"}, + {0x0390, "\001\005\027\104\355\061\020\355\047"}, + {0x0391, "\001\010\027\203"}, + {0x0392, "\001\010\027\356\305"}, + {0x0393, "\001\010\027\356\070"}, + {0x0394, "\001\010\027\356\060"}, + {0x0395, "\001\010\027\326"}, + {0x0396, "\001\010\027\360\217"}, + {0x0397, "\001\010\027\224"}, + {0x0398, "\001\010\027\357\356"}, + {0x0399, "\001\010\027\104"}, + {0x039A, "\001\010\027\357\212"}, + {0x039B, "\001\010\027\356\346"}, + {0x039C, "\001\010\027\355\111"}, + {0x039D, "\001\010\027\356\025"}, + {0x039E, "\001\010\027\357\055"}, + {0x039F, "\001\010\027\355\036"}, + {0x03A0, "\001\010\027\355\233"}, + {0x03A1, "\001\010\027\356\036"}, + {0x03A3, "\001\010\027\357\030"}, + {0x03A4, "\001\010\027\361\356"}, + {0x03A5, "\001\010\027\262"}, + {0x03A6, "\001\010\027\356\241"}, + {0x03A7, "\001\010\027\356\341"}, + {0x03A8, "\001\010\027\357\015"}, + {0x03A9, "\001\010\027\201"}, + {0x03AA, "\001\010\027\104\355\061"}, + {0x03AB, "\001\010\027\262\355\061"}, + {0x03AC, "\001\005\027\203\355\047"}, + {0x03AD, "\001\005\027\326\355\047"}, + {0x03AE, "\001\005\027\224\355\047"}, + {0x03AF, "\001\005\027\104\355\047"}, + {0x03B0, "\001\005\027\262\355\061\020\355\047"}, + {0x03B1, "\001\005\027\203"}, + {0x03B2, "\001\005\027\356\305"}, + {0x03B3, "\001\005\027\356\070"}, + {0x03B4, "\001\005\027\356\060"}, + {0x03B5, "\001\005\027\326"}, + {0x03B6, "\001\005\027\360\217"}, + {0x03B7, "\001\005\027\224"}, + {0x03B8, "\001\005\027\357\356"}, + {0x03B9, "\001\005\027\104"}, + {0x03BA, "\001\005\027\357\212"}, + {0x03BB, "\001\005\027\356\346"}, + {0x03BC, "\001\005\027\355\111"}, + {0x03BD, "\001\005\027\356\025"}, + {0x03BE, "\001\005\027\357\055"}, + {0x03BF, "\001\005\027\355\036"}, + {0x03C0, "\001\005\027\355\233"}, + {0x03C1, "\001\005\027\356\036"}, + {0x03C2, "\001\005\027\357\030\032"}, + {0x03C3, "\001\005\027\357\030"}, + {0x03C4, "\001\005\027\361\356"}, + {0x03C5, "\001\005\027\262"}, + {0x03C6, "\001\005\027\356\241"}, + {0x03C7, "\001\005\027\356\341"}, + {0x03C8, "\001\005\027\357\015"}, + {0x03C9, "\001\005\027\201"}, + {0x03CA, "\001\005\027\104\355\061"}, + {0x03CB, "\001\005\027\262\355\061"}, + {0x03CC, "\001\005\027\355\036\355\047"}, + {0x03CD, "\001\005\027\262\355\047"}, + {0x03CE, "\001\005\027\201\355\047"}, + {0x03D0, "\022\317\356\305"}, + {0x03D1, "\022\317\357\356"}, + {0x03D2, "\022\317\262\122"}, + {0x03D3, "\022\317\262\021\062\020\122"}, + {0x03D4, "\022\317\262\165\020\122"}, + {0x03D5, "\022\317\356\241"}, + {0x03D6, "\022\317\355\233"}, + {0x03D7, "\022\317\367\355"}, + {0x03DA, "\001\027\361\340"}, + {0x03DB, "\001\005\027\361\340"}, + {0x03DC, "\001\027\360\177"}, + {0x03DD, "\001\005\027\360\177"}, + {0x03DE, "\001\027\356\344"}, + {0x03DF, "\001\005\027\356\344"}, + {0x03E0, "\001\027\361\300"}, + {0x03E1, "\001\005\027\361\300"}, + {0x03E2, "\001\010\355\117\363\273"}, + {0x03E3, "\001\005\355\117\363\272"}, + {0x03E4, "\001\010\355\117\360\236"}, + {0x03E5, "\001\005\355\117\360\236"}, + {0x03E6, "\001\010\355\117\357\220"}, + {0x03E7, "\001\005\355\117\357\220"}, + {0x03E8, "\001\010\355\117\360\330"}, + {0x03E9, "\001\005\355\117\360\330"}, + {0x03EA, "\001\010\355\117\360\205"}, + {0x03EB, "\001\005\355\117\360\205"}, + {0x03EC, "\001\010\355\117\361\364"}, + {0x03ED, "\001\005\355\117\361\364"}, + {0x03EE, "\001\010\355\117\355\217"}, + {0x03EF, "\001\005\355\117\355\217"}, + {0x03F0, "\022\317\357\212"}, + {0x03F1, "\022\317\356\036"}, + {0x03F2, "\022\317\370\214\357\030"}, + {0x03F3, "\001\027\362\117"}, + {0x0400, "\001\010\034\355\260\067"}, + {0x0401, "\001\010\034\360\350"}, + {0x0402, "\001\010\034\356\063"}, + {0x0403, "\001\010\034\360\304"}, + {0x0404, "\001\010\034\355\260\375\365"}, + {0x0405, "\001\010\034\356\165"}, + {0x0406, "\001\010\034\103\360\074"}, + {0x0407, "\001\010\034\003"}, + {0x0408, "\001\010\034\355\303"}, + {0x0409, "\001\010\034\361\033"}, + {0x040A, "\001\010\034\360\032"}, + {0x040B, "\001\010\034\362\011"}, + {0x040C, "\001\010\034\361\001"}, + {0x040D, "\001\010\034\103\067"}, + {0x040E, "\001\010\034\113\355\223"}, + {0x040F, "\001\010\034\356\320"}, + {0x0410, "\001\010\034\063"}, + {0x0411, "\001\010\034\356\147"}, + {0x0412, "\001\010\034\357\054"}, + {0x0413, "\001\010\034\355\254"}, + {0x0414, "\001\010\034\356\166"}, + {0x0415, "\001\010\034\355\260"}, + {0x0416, "\001\010\034\355\204"}, + {0x0417, "\001\010\034\355\367"}, + {0x0418, "\001\010\034\103"}, + {0x0419, "\001\010\034\103\355\223"}, + {0x041A, "\001\010\034\240"}, + {0x041B, "\001\010\034\356\325"}, + {0x041C, "\001\010\034\356\326"}, + {0x041D, "\001\010\034\356\010"}, + {0x041E, "\001\010\034\064"}, + {0x041F, "\001\010\034\355\172"}, + {0x0420, "\001\010\034\356\327"}, + {0x0421, "\001\010\034\356\173"}, + {0x0422, "\001\010\034\355\301"}, + {0x0423, "\001\010\034\113"}, + {0x0424, "\001\010\034\360\226"}, + {0x0425, "\001\010\034\355\054"}, + {0x0426, "\001\010\034\356\047"}, + {0x0427, "\001\010\034\355\071"}, + {0x0428, "\001\010\034\355\032"}, + {0x0429, "\001\010\034\360\130"}, + {0x042A, "\001\010\034\057\356\324"}, + {0x042B, "\001\010\034\357\060"}, + {0x042C, "\001\010\034\057\356\224"}, + {0x042D, "\001\010\034\217"}, + {0x042E, "\001\010\034\360\351"}, + {0x042F, "\001\010\034\360\341"}, + {0x0430, "\001\005\034\063"}, + {0x0431, "\001\005\034\356\147"}, + {0x0432, "\001\005\034\357\054"}, + {0x0433, "\001\005\034\355\254"}, + {0x0434, "\001\005\034\356\166"}, + {0x0435, "\001\005\034\355\260"}, + {0x0436, "\001\005\034\355\204"}, + {0x0437, "\001\005\034\355\367"}, + {0x0438, "\001\005\034\103"}, + {0x0439, "\001\005\034\103\355\223"}, + {0x043A, "\001\005\034\240"}, + {0x043B, "\001\005\034\356\325"}, + {0x043C, "\001\005\034\356\326"}, + {0x043D, "\001\005\034\356\010"}, + {0x043E, "\001\005\034\064"}, + {0x043F, "\001\005\034\355\172"}, + {0x0440, "\001\005\034\356\327"}, + {0x0441, "\001\005\034\356\173"}, + {0x0442, "\001\005\034\355\301"}, + {0x0443, "\001\005\034\113"}, + {0x0444, "\001\005\034\360\226"}, + {0x0445, "\001\005\034\355\054"}, + {0x0446, "\001\005\034\356\047"}, + {0x0447, "\001\005\034\355\071"}, + {0x0448, "\001\005\034\355\032"}, + {0x0449, "\001\005\034\360\130"}, + {0x044A, "\001\005\034\057\356\324"}, + {0x044B, "\001\005\034\357\060"}, + {0x044C, "\001\005\034\057\356\224"}, + {0x044D, "\001\005\034\217"}, + {0x044E, "\001\005\034\360\351"}, + {0x044F, "\001\005\034\360\341"}, + {0x0450, "\001\005\034\355\260\067"}, + {0x0451, "\001\005\034\360\350"}, + {0x0452, "\001\005\034\356\063"}, + {0x0453, "\001\005\034\360\304"}, + {0x0454, "\001\005\034\375\366\355\260"}, + {0x0455, "\001\005\034\356\165"}, + {0x0456, "\001\005\034\103\360\074"}, + {0x0457, "\001\005\034\003"}, + {0x0458, "\001\005\034\355\303"}, + {0x0459, "\001\005\034\361\033"}, + {0x045A, "\001\005\034\360\032"}, + {0x045B, "\001\005\034\362\011"}, + {0x045C, "\001\005\034\361\001"}, + {0x045D, "\001\005\034\103\067"}, + {0x045E, "\001\005\034\113\355\223"}, + {0x045F, "\001\005\034\356\320"}, + {0x0460, "\001\010\034\201"}, + {0x0461, "\001\005\034\201"}, + {0x0462, "\001\010\034\362\107"}, + {0x0463, "\001\005\034\362\107"}, + {0x0464, "\001\010\034\217\356\074"}, + {0x0465, "\001\005\034\217\356\074"}, + {0x0466, "\001\010\034\175\355\363"}, + {0x0467, "\001\005\034\175\355\363"}, + {0x0468, "\001\010\034\175\355\363\356\074"}, + {0x0469, "\001\005\034\175\355\363\356\074"}, + {0x046A, "\001\010\034\340\355\363"}, + {0x046B, "\001\005\034\340\355\363"}, + {0x046C, "\001\010\034\340\355\363\356\074"}, + {0x046D, "\001\005\034\340\355\363\356\074"}, + {0x046E, "\001\010\034\361\012"}, + {0x046F, "\001\005\034\361\012"}, + {0x0470, "\001\010\034\357\015"}, + {0x0471, "\001\005\034\357\015"}, + {0x0472, "\001\010\034\360\243"}, + {0x0473, "\001\005\034\360\243"}, + {0x0474, "\001\010\034\356\337"}, + {0x0475, "\001\005\034\356\337"}, + {0x0476, "\001\010\034\356\337\070\021\067"}, + {0x0477, "\001\005\034\356\337\070\021\067"}, + {0x0478, "\001\010\034\357\261"}, + {0x0479, "\001\005\034\357\261"}, + {0x047A, "\001\010\034\201\302"}, + {0x047B, "\001\005\034\201\302"}, + {0x047C, "\001\010\034\201\357\361"}, + {0x047D, "\001\005\034\201\357\361"}, + {0x047E, "\001\010\034\361\144"}, + {0x047F, "\001\005\034\361\144"}, + {0x0480, "\001\010\034\356\344"}, + {0x0481, "\001\005\034\356\344"}, + {0x0482, "\057\034\357\233"}, + {0x0483, "\026\034\357\361"}, + {0x0484, "\026\034\007\372\150"}, + {0x0485, "\026\034\365\176\361\207"}, + {0x0486, "\026\034\373\302\361\207"}, + {0x0488, "\057\034\363\250\007\357\233"}, + {0x0489, "\057\034\370\363"}, + {0x048C, "\001\010\034\057\361\310"}, + {0x048D, "\001\005\034\057\361\310"}, + {0x048E, "\001\010\034\356\327\360\044"}, + {0x048F, "\001\005\034\356\327\360\044"}, + {0x0490, "\001\010\034\355\254\357\163"}, + {0x0491, "\001\005\034\355\254\357\163"}, + {0x0492, "\001\010\034\355\254\232"}, + {0x0493, "\001\005\034\355\254\232"}, + {0x0494, "\001\010\034\355\254\122\355\137"}, + {0x0495, "\001\005\034\355\254\122\355\137"}, + {0x0496, "\001\010\034\355\204\355\102"}, + {0x0497, "\001\005\034\355\204\355\102"}, + {0x0498, "\001\010\034\355\367\274"}, + {0x0499, "\001\005\034\355\367\274"}, + {0x049A, "\001\010\034\240\357\210"}, + {0x049B, "\001\005\034\240\355\102"}, + {0x049C, "\001\010\034\240\246\256"}, + {0x049D, "\001\005\034\240\246\256"}, + {0x049E, "\001\010\034\240\232"}, + {0x049F, "\001\005\034\240\232"}, + {0x04A0, "\001\010\034\240\360\064"}, + {0x04A1, "\001\005\034\240\360\064"}, + {0x04A2, "\001\010\034\356\010\355\102"}, + {0x04A3, "\001\005\034\356\010\355\102"}, + {0x04A4, "\012\034\010\356\007"}, + {0x04A5, "\012\034\005\356\007"}, + {0x04A6, "\001\010\034\355\172\122\355\137"}, + {0x04A7, "\001\005\034\355\172\122\355\137"}, + {0x04A8, "\001\010\034\314\355\304"}, + {0x04A9, "\001\005\034\314\355\304"}, + {0x04AA, "\001\010\034\356\173\274"}, + {0x04AB, "\001\005\034\356\173\274"}, + {0x04AC, "\001\010\034\355\301\355\102"}, + {0x04AD, "\001\005\034\355\301\355\102"}, + {0x04AE, "\001\010\034\113\221"}, + {0x04AF, "\001\005\034\113\221"}, + {0x04B0, "\001\010\034\113\221\232"}, + {0x04B1, "\001\005\034\113\221\232"}, + {0x04B2, "\001\010\034\314\355\055"}, + {0x04B3, "\001\005\034\314\355\055"}, + {0x04B4, "\012\010\034\355\301\356\047"}, + {0x04B5, "\012\005\034\355\301\356\047"}, + {0x04B6, "\001\010\034\355\071\355\102"}, + {0x04B7, "\001\005\034\355\071\355\102"}, + {0x04B8, "\001\010\034\355\071\246\256"}, + {0x04B9, "\001\005\034\355\071\246\256"}, + {0x04BA, "\001\010\034\356\016"}, + {0x04BB, "\001\005\034\356\016"}, + {0x04BC, "\001\010\034\355\071\355\304"}, + {0x04BD, "\001\005\034\355\071\355\304"}, + {0x04BE, "\001\010\034\355\071\355\304\355\055"}, + {0x04BF, "\001\005\034\355\071\355\304\355\055"}, + {0x04C0, "\001\034\372\151"}, + {0x04C1, "\001\010\034\355\204\213"}, + {0x04C2, "\001\005\034\355\204\213"}, + {0x04C3, "\001\010\034\240\122"}, + {0x04C4, "\001\005\034\240\122"}, + {0x04C5, "\001\010\034\356\325\355\102"}, + {0x04C6, "\001\005\034\356\325\355\102"}, + {0x04C7, "\001\010\034\356\010\122"}, + {0x04C8, "\001\005\034\356\010\122"}, + {0x04C9, "\001\010\034\103\355\223\355\102"}, + {0x04CA, "\001\005\034\103\355\223\355\102"}, + {0x04CB, "\001\010\034\355\071\360\371"}, + {0x04CC, "\001\005\034\355\071\360\371"}, + {0x04CD, "\001\010\034\356\326\355\102"}, + {0x04CE, "\001\005\034\356\326\355\102"}, + {0x04D0, "\001\010\034\063\213"}, + {0x04D1, "\001\005\034\063\213"}, + {0x04D2, "\001\010\034\063\165"}, + {0x04D3, "\001\005\034\063\165"}, + {0x04D4, "\001\010\034\360\023"}, + {0x04D5, "\001\005\034\360\023"}, + {0x04D6, "\001\010\034\355\260\213"}, + {0x04D7, "\001\005\034\355\260\213"}, + {0x04D8, "\001\010\034\356\041"}, + {0x04D9, "\001\005\034\356\041"}, + {0x04DA, "\001\010\034\356\041\165"}, + {0x04DB, "\001\005\034\356\041\165"}, + {0x04DC, "\001\010\034\355\204\165"}, + {0x04DD, "\001\005\034\355\204\165"}, + {0x04DE, "\001\010\034\355\367\165"}, + {0x04DF, "\001\005\034\355\367\165"}, + {0x04E0, "\001\010\034\356\165\355\304"}, + {0x04E1, "\001\005\034\356\165\355\304"}, + {0x04E2, "\001\010\034\103\174"}, + {0x04E3, "\001\005\034\103\174"}, + {0x04E4, "\001\010\034\103\165"}, + {0x04E5, "\001\005\034\103\165"}, + {0x04E6, "\001\010\034\064\165"}, + {0x04E7, "\001\005\034\064\165"}, + {0x04E8, "\001\010\034\064\232"}, + {0x04E9, "\001\005\034\064\232"}, + {0x04EA, "\001\010\034\064\232\165"}, + {0x04EB, "\001\005\034\064\232\165"}, + {0x04EC, "\001\010\034\217\165"}, + {0x04ED, "\001\005\034\217\165"}, + {0x04EE, "\001\010\034\113\174"}, + {0x04EF, "\001\005\034\113\174"}, + {0x04F0, "\001\010\034\113\165"}, + {0x04F1, "\001\005\034\113\165"}, + {0x04F2, "\001\010\034\113\070\021\062"}, + {0x04F3, "\001\005\034\113\070\021\062"}, + {0x04F4, "\001\010\034\355\071\165"}, + {0x04F5, "\001\005\034\355\071\165"}, + {0x04F8, "\001\010\034\357\060\165"}, + {0x04F9, "\001\005\034\357\060\165"}, + {0x0531, "\001\010\125\360\063"}, + {0x0532, "\001\010\125\361\233"}, + {0x0533, "\001\010\125\360\375"}, + {0x0534, "\001\010\125\311"}, + {0x0535, "\001\010\125\357\057"}, + {0x0536, "\001\010\125\355\101"}, + {0x0537, "\001\010\125\217"}, + {0x0538, "\001\010\125\360\233"}, + {0x0539, "\001\010\125\356\263"}, + {0x053A, "\001\010\125\355\204"}, + {0x053B, "\001\010\125\357\177"}, + {0x053C, "\001\010\125\361\031"}, + {0x053D, "\001\010\125\356\342"}, + {0x053E, "\001\010\125\356\065"}, + {0x053F, "\001\010\125\360\305"}, + {0x0540, "\001\010\125\357\173"}, + {0x0541, "\001\010\125\355\177"}, + {0x0542, "\001\010\125\360\273"}, + {0x0543, "\001\010\125\356\063"}, + {0x0544, "\001\010\125\356\102"}, + {0x0545, "\001\010\125\357\172"}, + {0x0546, "\001\010\125\355\340"}, + {0x0547, "\001\010\125\355\032"}, + {0x0548, "\001\010\125\356\132"}, + {0x0549, "\001\010\125\355\024"}, + {0x054A, "\001\010\125\356\147"}, + {0x054B, "\001\010\125\356\320"}, + {0x054C, "\001\010\125\355\212"}, + {0x054D, "\001\010\125\356\121"}, + {0x054E, "\001\010\125\360\005"}, + {0x054F, "\001\010\125\360\200"}, + {0x0550, "\001\010\125\356\040"}, + {0x0551, "\001\010\125\362\046"}, + {0x0552, "\001\010\125\357\167"}, + {0x0553, "\001\010\125\361\170"}, + {0x0554, "\001\010\125\356\220"}, + {0x0555, "\001\010\125\306"}, + {0x0556, "\001\010\125\356\202"}, + {0x0559, "\001\200\125\356\061\052"}, + {0x055A, "\355\306\125"}, + {0x055B, "\057\357\115\356\052"}, + {0x055C, "\037\355\312\356\052"}, + {0x055D, "\330\125"}, + {0x055E, "\037\355\313\356\052"}, + {0x055F, "\022\357\114\356\052"}, + {0x0561, "\001\005\125\360\063"}, + {0x0562, "\001\005\125\361\233"}, + {0x0563, "\001\005\125\360\375"}, + {0x0564, "\001\005\125\311"}, + {0x0565, "\001\005\125\357\057"}, + {0x0566, "\001\005\125\355\101"}, + {0x0567, "\001\005\125\217"}, + {0x0568, "\001\005\125\360\233"}, + {0x0569, "\001\005\125\356\263"}, + {0x056A, "\001\005\125\355\204"}, + {0x056B, "\001\005\125\357\177"}, + {0x056C, "\001\005\125\361\031"}, + {0x056D, "\001\005\125\356\342"}, + {0x056E, "\001\005\125\356\065"}, + {0x056F, "\001\005\125\360\305"}, + {0x0570, "\001\005\125\357\173"}, + {0x0571, "\001\005\125\355\177"}, + {0x0572, "\001\005\125\360\273"}, + {0x0573, "\001\005\125\356\063"}, + {0x0574, "\001\005\125\356\102"}, + {0x0575, "\001\005\125\357\172"}, + {0x0576, "\001\005\125\355\340"}, + {0x0577, "\001\005\125\355\032"}, + {0x0578, "\001\005\125\356\132"}, + {0x0579, "\001\005\125\355\024"}, + {0x057A, "\001\005\125\356\147"}, + {0x057B, "\001\005\125\356\320"}, + {0x057C, "\001\005\125\355\212"}, + {0x057D, "\001\005\125\356\121"}, + {0x057E, "\001\005\125\360\005"}, + {0x057F, "\001\005\125\360\200"}, + {0x0580, "\001\005\125\356\040"}, + {0x0581, "\001\005\125\362\046"}, + {0x0582, "\001\005\125\357\167"}, + {0x0583, "\001\005\125\361\170"}, + {0x0584, "\001\005\125\356\220"}, + {0x0585, "\001\005\125\306"}, + {0x0586, "\001\005\125\356\202"}, + {0x0587, "\012\005\125\357\057\357\167"}, + {0x0589, "\037\356\052"}, + {0x058A, "\375\244\356\052"}, + {0x0591, "\021\222\363\001"}, + {0x0592, "\021\222\374\246"}, + {0x0593, "\021\222\363\256"}, + {0x0594, "\021\222\362\140\373\332"}, + {0x0595, "\021\222\362\140\360\256"}, + {0x0596, "\021\222\375\104"}, + {0x0597, "\021\222\374\042"}, + {0x0598, "\021\222\376\235"}, + {0x0599, "\021\222\361\240"}, + {0x059A, "\021\222\376\157"}, + {0x059B, "\021\222\375\164"}, + {0x059C, "\021\222\360\264"}, + {0x059D, "\021\222\360\264\371\022"}, + {0x059E, "\021\222\363\276\366\244"}, + {0x059F, "\021\222\367\365\366\045"}, + {0x05A0, "\021\222\375\100"}, + {0x05A1, "\021\222\372\170\360\256"}, + {0x05A3, "\021\222\360\117\367\077"}, + {0x05A4, "\021\222\360\117\370\314"}, + {0x05A5, "\021\222\371\055"}, + {0x05A6, "\021\222\375\163\375\355"}, + {0x05A7, "\021\222\365\175"}, + {0x05A8, "\021\222\361\240"}, + {0x05A9, "\021\222\375\105"}, + {0x05AA, "\021\222\376\155\363\107\376\171"}, + {0x05AB, "\021\222\372\074"}, + {0x05AC, "\021\222\367\202"}, + {0x05AD, "\021\222\365\240"}, + {0x05AE, "\021\222\375\265"}, + {0x05AF, "\272\370\274"}, + {0x05B0, "\037\222\363\301"}, + {0x05B1, "\037\222\357\165\374\245"}, + {0x05B2, "\037\222\357\165\356\374"}, + {0x05B3, "\037\222\357\165\357\300"}, + {0x05B4, "\037\222\360\322"}, + {0x05B5, "\037\222\375\271"}, + {0x05B6, "\037\222\375\070"}, + {0x05B7, "\037\222\356\374"}, + {0x05B8, "\037\222\357\300"}, + {0x05B9, "\037\222\360\325"}, + {0x05BB, "\037\222\370\043"}, + {0x05BC, "\037\222\355\011\113\357\232"}, + {0x05BD, "\037\222\370\321"}, + {0x05BE, "\355\234\137\370\266"}, + {0x05BF, "\037\222\357\021"}, + {0x05C0, "\355\234\137\372\161"}, + {0x05C1, "\037\222\357\077"}, + {0x05C2, "\037\222\374\316"}, + {0x05C3, "\355\234\137\374\342\372\162"}, + {0x05C4, "\057\222\037\344"}, + {0x05D0, "\001\137\355\372"}, + {0x05D1, "\001\137\357\072"}, + {0x05D2, "\001\137\360\303"}, + {0x05D3, "\001\137\356\317"}, + {0x05D4, "\001\137\357\170"}, + {0x05D5, "\001\137\355\051"}, + {0x05D6, "\001\137\360\020"}, + {0x05D7, "\001\137\367\161"}, + {0x05D8, "\001\137\362\056"}, + {0x05D9, "\001\137\362\124"}, + {0x05DA, "\001\137\254\032"}, + {0x05DB, "\001\137\254"}, + {0x05DC, "\001\137\356\347"}, + {0x05DD, "\001\137\356\357\032"}, + {0x05DE, "\001\137\356\357"}, + {0x05DF, "\001\137\357\251\032"}, + {0x05E0, "\001\137\357\251"}, + {0x05E1, "\001\137\361\301"}, + {0x05E2, "\001\137\360\062"}, + {0x05E3, "\001\137\355\172\032"}, + {0x05E4, "\001\137\355\172"}, + {0x05E5, "\001\137\357\366\032"}, + {0x05E6, "\001\137\357\366"}, + {0x05E7, "\001\137\373\364"}, + {0x05E8, "\001\137\357\321"}, + {0x05E9, "\001\137\355\310"}, + {0x05EA, "\001\137\357\347"}, + {0x05F0, "\012\137\357\056\070\355\051"}, + {0x05F1, "\012\137\357\056\355\051\356\272"}, + {0x05F2, "\012\137\357\056\070\362\124"}, + {0x05F3, "\355\234\137\366\154"}, + {0x05F4, "\355\234\137\366\153"}, + {0x060C, "\330\004"}, + {0x061B, "\356\104\004"}, + {0x061F, "\037\355\313\004"}, + {0x0621, "\001\004\156"}, + {0x0622, "\001\004\100\356\022\013\040"}, + {0x0623, "\001\004\100\156\013\040"}, + {0x0624, "\001\004\355\051\156\013\040"}, + {0x0625, "\001\004\100\156\043"}, + {0x0626, "\001\004\056\156\013\040"}, + {0x0627, "\001\004\100"}, + {0x0628, "\001\004\324"}, + {0x0629, "\001\004\233\356\354"}, + {0x062A, "\001\004\233"}, + {0x062B, "\001\004\355\060"}, + {0x062C, "\001\004\115"}, + {0x062D, "\001\004\111"}, + {0x062E, "\001\004\170"}, + {0x062F, "\001\004\355\316"}, + {0x0630, "\001\004\356\321"}, + {0x0631, "\001\004\343"}, + {0x0632, "\001\004\360\017"}, + {0x0633, "\001\004\245"}, + {0x0634, "\001\004\247"}, + {0x0635, "\001\004\377\004"}, + {0x0636, "\001\004\350"}, + {0x0637, "\001\004\355\046"}, + {0x0638, "\001\004\355\366"}, + {0x0639, "\001\004\355\027"}, + {0x063A, "\001\004\355\063"}, + {0x0640, "\361\355\004"}, + {0x0641, "\001\004\351"}, + {0x0642, "\001\004\355\037"}, + {0x0643, "\001\004\254"}, + {0x0644, "\001\004\206"}, + {0x0645, "\001\004\047"}, + {0x0646, "\001\004\215"}, + {0x0647, "\001\004\231"}, + {0x0648, "\001\004\355\051"}, + {0x0649, "\001\004\100\160"}, + {0x064A, "\001\004\056"}, + {0x064B, "\356\176\004"}, + {0x064C, "\357\122\004"}, + {0x064D, "\357\216\004"}, + {0x064E, "\356\175\004"}, + {0x064F, "\356\157\004"}, + {0x0650, "\356\215\004"}, + {0x0651, "\355\154\004"}, + {0x0652, "\357\036\004"}, + {0x0653, "\356\022\004\013\040"}, + {0x0654, "\156\004\013\040"}, + {0x0655, "\156\004\043"}, + {0x0660, "\024\355\030\331"}, + {0x0661, "\024\355\030\110"}, + {0x0662, "\024\355\030\127"}, + {0x0663, "\024\355\030\136"}, + {0x0664, "\024\355\030\220"}, + {0x0665, "\024\355\030\230"}, + {0x0666, "\024\355\030\255"}, + {0x0667, "\024\355\030\252"}, + {0x0668, "\024\355\030\226"}, + {0x0669, "\024\355\030\257"}, + {0x066A, "\022\355\057\355\245\004"}, + {0x066B, "\355\045\360\221\004"}, + {0x066C, "\355\045\357\233\004"}, + {0x066D, "\355\015\044\230\355\116\004"}, + {0x0670, "\001\004\100\013\040"}, + {0x0671, "\001\004\100\360\006"}, + {0x0672, "\001\004\100\156\361\136\013\040"}, + {0x0673, "\001\004\100\156\361\136\043"}, + {0x0674, "\001\004\156\356\276"}, + {0x0675, "\001\004\100\156\356\276"}, + {0x0676, "\001\004\355\051\156\356\276"}, + {0x0677, "\001\004\113\156\356\276"}, + {0x0678, "\001\004\056\156\356\276"}, + {0x0679, "\001\004\356\261"}, + {0x067A, "\001\004\356\262"}, + {0x067B, "\001\004\356\143"}, + {0x067C, "\001\004\233\302"}, + {0x067D, "\001\004\233\136\251\013\040\321\015\050\101"}, + {0x067E, "\001\004\356\237"}, + {0x067F, "\001\004\356\256"}, + {0x0680, "\001\004\356\144"}, + {0x0681, "\001\004\111\156\013\040"}, + {0x0682, "\001\004\111\127\251\362\313\357\376\355\307\357\132"}, + {0x0683, "\001\004\356\230"}, + {0x0684, "\001\004\356\164"}, + {0x0685, "\001\004\111\136\251\013\040"}, + {0x0686, "\001\004\356\124"}, + {0x0687, "\001\004\356\255"}, + {0x0688, "\001\004\357\126"}, + {0x0689, "\001\004\355\316\302"}, + {0x068A, "\001\004\355\316\037\043"}, + {0x068B, "\001\004\355\316\037\043\020\175\375\077"}, + {0x068C, "\001\004\357\121"}, + {0x068D, "\001\004\357\125"}, + {0x068E, "\001\004\357\144"}, + {0x068F, "\001\004\355\316\136\251\013\040\321\015\050\101"}, + {0x0690, "\001\004\355\316\220\251\013\040"}, + {0x0691, "\001\004\357\317"}, + {0x0692, "\001\004\343\175\355\025"}, + {0x0693, "\001\004\343\302"}, + {0x0694, "\001\004\343\037\043"}, + {0x0695, "\001\004\343\175\355\025\043"}, + {0x0696, "\001\004\343\037\043\020\037\013\040"}, + {0x0697, "\001\004\343\127\251\013\040"}, + {0x0698, "\001\004\357\207"}, + {0x0699, "\001\004\343\220\251\013\040"}, + {0x069A, "\001\004\245\037\043\020\037\013\040"}, + {0x069B, "\001\004\245\136\251\355\237"}, + {0x069C, "\001\004\245\136\251\355\237\020\136\251\013\040"}, + {0x069D, "\001\004\355\005\127\251\355\237"}, + {0x069E, "\001\004\355\005\136\251\013\040"}, + {0x069F, "\001\004\355\046\136\251\013\040"}, + {0x06A0, "\001\004\355\027\136\251\013\040"}, + {0x06A1, "\001\004\351\270\037"}, + {0x06A2, "\001\004\351\037\365\254"}, + {0x06A3, "\001\004\351\037\043"}, + {0x06A4, "\001\004\356\264"}, + {0x06A5, "\001\004\351\136\251\355\237"}, + {0x06A6, "\001\004\356\240"}, + {0x06A7, "\001\004\355\037\037\013\040"}, + {0x06A8, "\001\004\355\037\136\251\013\040"}, + {0x06A9, "\001\004\356\216"}, + {0x06AA, "\001\004\254\377\023"}, + {0x06AB, "\001\004\254\302"}, + {0x06AC, "\001\004\254\037\013\040"}, + {0x06AD, "\001\004\355\336"}, + {0x06AE, "\001\004\254\136\251\355\237"}, + {0x06AF, "\001\004\355\322"}, + {0x06B0, "\001\004\355\322\302"}, + {0x06B1, "\001\004\356\226"}, + {0x06B2, "\001\004\355\322\127\251\355\237"}, + {0x06B3, "\001\004\366\237"}, + {0x06B4, "\001\004\355\322\136\251\013\040"}, + {0x06B5, "\001\004\206\175\355\025"}, + {0x06B6, "\001\004\206\037\013\040"}, + {0x06B7, "\001\004\206\136\251\013\040"}, + {0x06B8, "\001\004\206\136\251\355\237"}, + {0x06B9, "\001\004\215\037\043"}, + {0x06BA, "\001\004\215\270\037"}, + {0x06BB, "\001\004\371\313\355\214"}, + {0x06BC, "\001\004\215\302"}, + {0x06BD, "\001\004\215\136\251\013\040"}, + {0x06BE, "\001\004\231\356\163"}, + {0x06BF, "\001\004\356\124\037\013\040"}, + {0x06C0, "\001\004\231\056\013\040"}, + {0x06C1, "\001\004\231\356\015"}, + {0x06C2, "\001\004\231\356\015\156\013\040"}, + {0x06C3, "\356\354\356\015"}, + {0x06C4, "\001\004\355\051\302"}, + {0x06C5, "\001\004\355\205\356\011"}, + {0x06C6, "\001\004\356\011"}, + {0x06C7, "\001\004\113"}, + {0x06C8, "\001\004\132"}, + {0x06C9, "\001\004\355\205\355\151"}, + {0x06CA, "\001\004\355\051\127\251\013\040"}, + {0x06CB, "\001\004\357\054"}, + {0x06CC, "\001\004\356\067\056"}, + {0x06CD, "\001\004\056\356\247"}, + {0x06CE, "\001\004\056\175\355\025"}, + {0x06CF, "\001\004\355\051\037\013\040"}, + {0x06D0, "\001\004\217"}, + {0x06D1, "\001\004\056\136\251\355\237"}, + {0x06D2, "\001\004\056\232"}, + {0x06D3, "\001\004\056\232\156\013\040"}, + {0x06D4, "\037\004"}, + {0x06D5, "\001\004\130"}, + {0x06D6, "\012\004\005\355\005\013\040\206\100\160"}, + {0x06D7, "\012\004\005\355\037\013\040\206\100\160"}, + {0x06D8, "\001\004\005\047\013\040\055"}, + {0x06D9, "\001\004\005\100\206\013\040"}, + {0x06DA, "\001\004\005\115\013\040"}, + {0x06DB, "\136\251\013\040\004"}, + {0x06DC, "\001\004\005\245\013\040"}, + {0x06DD, "\116\007\363\013\004"}, + {0x06DE, "\355\320\007\374\107\365\374\366\350\004"}, + {0x06DF, "\331\362\361\013\040\004"}, + {0x06E0, "\331\374\050\013\040\004"}, + {0x06E1, "\372\157\366\320\007\170\270\037\013\040\004"}, + {0x06E2, "\001\004\005\047\013\040\036"}, + {0x06E3, "\001\004\005\245\043"}, + {0x06E4, "\001\004\005\356\022\013\040"}, + {0x06E5, "\001\004\005\355\051"}, + {0x06E6, "\001\004\005\056"}, + {0x06E7, "\001\004\005\056\013\040"}, + {0x06E8, "\001\004\005\215\013\040"}, + {0x06E9, "\057\007\373\272\004"}, + {0x06EA, "\037\355\132\043\004"}, + {0x06EB, "\037\355\132\013\040\004"}, + {0x06EC, "\037\361\205\043\004"}, + {0x06ED, "\001\004\005\047\043"}, + {0x06F0, "\024\355\030\355\244\331"}, + {0x06F1, "\024\355\030\355\244\110"}, + {0x06F2, "\024\355\030\355\244\127"}, + {0x06F3, "\024\355\030\355\244\136"}, + {0x06F4, "\024\355\030\355\244\220"}, + {0x06F5, "\024\355\030\355\244\230"}, + {0x06F6, "\024\355\030\355\244\255"}, + {0x06F7, "\024\355\030\355\244\252"}, + {0x06F8, "\024\355\030\355\244\226"}, + {0x06F9, "\024\355\030\355\244\257"}, + {0x06FA, "\001\004\247\037\043"}, + {0x06FB, "\001\004\350\037\043"}, + {0x06FC, "\001\004\355\063\037\043"}, + {0x06FD, "\057\004\361\316\356\377"}, + {0x06FE, "\057\004\361\316\373\256\370\316"}, + {0x0700, "\116\007\361\153\161"}, + {0x0701, "\037\161\357\344"}, + {0x0702, "\037\161\357\342"}, + {0x0703, "\355\103\161\357\344"}, + {0x0704, "\355\103\161\357\342"}, + {0x0705, "\355\103\161\242"}, + {0x0706, "\355\103\161\356\376\044\052"}, + {0x0707, "\355\103\161\356\376\044\053"}, + {0x0708, "\355\103\161\357\344\356\376\044\052"}, + {0x0709, "\355\103\161\357\342\356\376\044\053"}, + {0x070A, "\365\064\161"}, + {0x070B, "\357\253\161\357\171"}, + {0x070C, "\371\064\161\357\171"}, + {0x070D, "\355\115\161\357\171"}, + {0x070F, "\022\357\114\161"}, + {0x0710, "\001\161\362\154"}, + {0x0711, "\001\161\362\154\013\040"}, + {0x0712, "\001\161\363\214"}, + {0x0713, "\001\161\360\312"}, + {0x0714, "\001\161\360\312\360\260"}, + {0x0715, "\001\161\360\220"}, + {0x0716, "\001\161\360\220\361\276\270\037"}, + {0x0717, "\001\161\360\340"}, + {0x0718, "\001\161\355\051"}, + {0x0719, "\001\161\360\020"}, + {0x071A, "\001\161\366\343"}, + {0x071B, "\001\161\362\054"}, + {0x071C, "\001\161\362\054\360\260"}, + {0x071D, "\001\161\362\132"}, + {0x071E, "\001\161\362\132\360\340"}, + {0x071F, "\001\161\370\113"}, + {0x0720, "\001\161\370\243"}, + {0x0721, "\001\161\047"}, + {0x0722, "\001\161\215"}, + {0x0723, "\001\161\361\311"}, + {0x0724, "\001\161\361\311\032"}, + {0x0725, "\001\161\362\165"}, + {0x0726, "\001\161\361\234"}, + {0x0727, "\001\161\361\234\355\013"}, + {0x0728, "\001\161\375\025"}, + {0x0729, "\001\161\373\366"}, + {0x072A, "\001\161\361\276"}, + {0x072B, "\001\161\247"}, + {0x072C, "\001\161\375\111"}, + {0x0730, "\357\271\161\013\040"}, + {0x0731, "\357\271\161\043"}, + {0x0732, "\357\271\161\356\034"}, + {0x0733, "\360\021\161\013\040"}, + {0x0734, "\360\021\161\043"}, + {0x0735, "\360\021\161\357\005"}, + {0x0736, "\361\260\161\013\040"}, + {0x0737, "\361\260\161\043"}, + {0x0738, "\362\141\161\357\005\242"}, + {0x0739, "\362\141\161\357\005\355\044"}, + {0x073A, "\360\321\161\013\040"}, + {0x073B, "\360\321\161\043"}, + {0x073C, "\366\333\161\356\034"}, + {0x073D, "\360\036\161\013\040"}, + {0x073E, "\360\036\161\043"}, + {0x073F, "\374\057\161"}, + {0x0740, "\037\360\255\161"}, + {0x0741, "\373\363\161"}, + {0x0742, "\374\111\161"}, + {0x0743, "\127\251\357\377\357\044\013\040"}, + {0x0744, "\127\251\357\377\357\044\355\237"}, + {0x0745, "\136\251\357\044\013\040"}, + {0x0746, "\136\251\357\044\355\237"}, + {0x0747, "\243\355\044\161\013\040"}, + {0x0748, "\243\355\044\161\301"}, + {0x0749, "\371\041\161"}, + {0x074A, "\363\034\161"}, + {0x0780, "\001\216\356\211"}, + {0x0781, "\001\216\363\267"}, + {0x0782, "\001\216\371\332"}, + {0x0783, "\001\216\357\320"}, + {0x0784, "\001\216\363\210"}, + {0x0785, "\001\216\370\153"}, + {0x0786, "\001\216\370\112"}, + {0x0787, "\001\216\362\312"}, + {0x0788, "\001\216\376\072"}, + {0x0789, "\001\216\371\067"}, + {0x078A, "\001\216\366\130"}, + {0x078B, "\001\216\365\261"}, + {0x078C, "\001\216\357\355"}, + {0x078D, "\001\216\370\244"}, + {0x078E, "\001\216\366\276"}, + {0x078F, "\001\216\366\234"}, + {0x0790, "\001\216\375\074"}, + {0x0791, "\001\216\365\201"}, + {0x0792, "\001\216\376\237"}, + {0x0793, "\001\216\375\110"}, + {0x0794, "\001\216\362\134"}, + {0x0795, "\001\216\372\166"}, + {0x0796, "\001\216\365\301"}, + {0x0797, "\001\216\375\133"}, + {0x0798, "\001\216\375\315"}, + {0x0799, "\001\216\366\341"}, + {0x079A, "\001\216\370\012"}, + {0x079B, "\001\216\375\200"}, + {0x079C, "\001\216\376\362"}, + {0x079D, "\001\216\363\341"}, + {0x079E, "\001\216\375\066"}, + {0x079F, "\001\216\365\350"}, + {0x07A0, "\001\216\355\176"}, + {0x07A1, "\001\216\356\135"}, + {0x07A2, "\001\216\363\016"}, + {0x07A3, "\001\216\366\210"}, + {0x07A4, "\001\216\374\025"}, + {0x07A5, "\001\216\376\113"}, + {0x07A6, "\216\362\271"}, + {0x07A7, "\216\376\375"}, + {0x07A8, "\216\367\172"}, + {0x07A9, "\216\377\045"}, + {0x07AA, "\216\372\124"}, + {0x07AB, "\216\372\140"}, + {0x07AC, "\216\377\021"}, + {0x07AD, "\216\377\042"}, + {0x07AE, "\216\372\070"}, + {0x07AF, "\216\377\063"}, + {0x07B0, "\216\357\036"}, + {0x0901, "\022\106\356\123"}, + {0x0902, "\022\106\355\222"}, + {0x0903, "\022\106\355\243"}, + {0x0905, "\001\106\063"}, + {0x0906, "\001\106\323"}, + {0x0907, "\001\106\103"}, + {0x0908, "\001\106\315"}, + {0x0909, "\001\106\113"}, + {0x090A, "\001\106\342"}, + {0x090B, "\001\106\167\205"}, + {0x090C, "\001\106\211\205"}, + {0x090D, "\001\106\217\355\357"}, + {0x090E, "\001\106\217\355\223"}, + {0x090F, "\001\106\217"}, + {0x0910, "\001\106\307"}, + {0x0911, "\001\106\064\355\357"}, + {0x0912, "\001\106\064\355\223"}, + {0x0913, "\001\106\306"}, + {0x0914, "\001\106\333"}, + {0x0915, "\001\106\240"}, + {0x0916, "\001\106\355\054"}, + {0x0917, "\001\106\355\017"}, + {0x0918, "\001\106\355\106"}, + {0x0919, "\001\106\355\066"}, + {0x091A, "\001\106\355\024"}, + {0x091B, "\001\106\355\240"}, + {0x091C, "\001\106\355\104"}, + {0x091D, "\001\106\355\251"}, + {0x091E, "\001\106\355\201"}, + {0x091F, "\001\106\355\100"}, + {0x0920, "\001\106\355\127"}, + {0x0921, "\001\106\355\120"}, + {0x0922, "\001\106\355\160"}, + {0x0923, "\001\106\355\141"}, + {0x0924, "\001\106\311"}, + {0x0925, "\001\106\355\072"}, + {0x0926, "\001\106\355\002"}, + {0x0927, "\001\106\355\162"}, + {0x0928, "\001\106\354"}, + {0x0929, "\001\106\361\115"}, + {0x092A, "\001\106\327"}, + {0x092B, "\001\106\355\124"}, + {0x092C, "\001\106\355\052"}, + {0x092D, "\001\106\355\153"}, + {0x092E, "\001\106\277"}, + {0x092F, "\001\106\305"}, + {0x0930, "\001\106\322"}, + {0x0931, "\001\106\355\212"}, + {0x0932, "\001\106\033"}, + {0x0933, "\001\106\355\263"}, + {0x0934, "\001\106\357\230"}, + {0x0935, "\001\106\355\241"}, + {0x0936, "\001\106\355\152"}, + {0x0937, "\001\106\355\032"}, + {0x0938, "\001\106\355\004"}, + {0x0939, "\001\106\314"}, + {0x093C, "\022\106\356\227"}, + {0x093D, "\022\106\357\067"}, + {0x093E, "\042\026\106\323"}, + {0x093F, "\042\026\106\103"}, + {0x0940, "\042\026\106\315"}, + {0x0941, "\042\026\106\113"}, + {0x0942, "\042\026\106\342"}, + {0x0943, "\042\026\106\167\205"}, + {0x0944, "\042\026\106\355\114\205"}, + {0x0945, "\042\026\106\217\355\357"}, + {0x0946, "\042\026\106\217\355\223"}, + {0x0947, "\042\026\106\217"}, + {0x0948, "\042\026\106\307"}, + {0x0949, "\042\026\106\064\355\357"}, + {0x094A, "\042\026\106\064\355\223"}, + {0x094B, "\042\026\106\306"}, + {0x094C, "\042\026\106\333"}, + {0x094D, "\022\106\355\242"}, + {0x0950, "\356\366\106"}, + {0x0951, "\057\357\115\106\372\125"}, + {0x0952, "\057\357\115\106\362\335"}, + {0x0953, "\021\067\106"}, + {0x0954, "\021\062\106"}, + {0x0958, "\001\106\356\245"}, + {0x0959, "\001\106\360\374"}, + {0x095A, "\001\106\360\275"}, + {0x095B, "\001\106\355\101"}, + {0x095C, "\001\106\365\207"}, + {0x095D, "\001\106\357\305"}, + {0x095E, "\001\106\355\225"}, + {0x095F, "\001\106\360\015"}, + {0x0960, "\001\106\355\114\205"}, + {0x0961, "\001\106\355\206\205"}, + {0x0962, "\042\026\106\211\205"}, + {0x0963, "\042\026\106\355\206\205"}, + {0x0964, "\360\162\106"}, + {0x0965, "\070\360\162\106"}, + {0x0966, "\024\106\331"}, + {0x0967, "\024\106\110"}, + {0x0968, "\024\106\127"}, + {0x0969, "\024\106\136"}, + {0x096A, "\024\106\220"}, + {0x096B, "\024\106\230"}, + {0x096C, "\024\106\255"}, + {0x096D, "\024\106\252"}, + {0x096E, "\024\106\226"}, + {0x096F, "\024\106\257"}, + {0x0970, "\022\106\357\114"}, + {0x0981, "\022\121\356\123"}, + {0x0982, "\022\121\355\222"}, + {0x0983, "\022\121\355\243"}, + {0x0985, "\001\121\063"}, + {0x0986, "\001\121\323"}, + {0x0987, "\001\121\103"}, + {0x0988, "\001\121\315"}, + {0x0989, "\001\121\113"}, + {0x098A, "\001\121\342"}, + {0x098B, "\001\121\167\205"}, + {0x098C, "\001\121\211\205"}, + {0x098F, "\001\121\217"}, + {0x0990, "\001\121\307"}, + {0x0993, "\001\121\306"}, + {0x0994, "\001\121\333"}, + {0x0995, "\001\121\240"}, + {0x0996, "\001\121\355\054"}, + {0x0997, "\001\121\355\017"}, + {0x0998, "\001\121\355\106"}, + {0x0999, "\001\121\355\066"}, + {0x099A, "\001\121\355\024"}, + {0x099B, "\001\121\355\240"}, + {0x099C, "\001\121\355\104"}, + {0x099D, "\001\121\355\251"}, + {0x099E, "\001\121\355\201"}, + {0x099F, "\001\121\355\100"}, + {0x09A0, "\001\121\355\127"}, + {0x09A1, "\001\121\355\120"}, + {0x09A2, "\001\121\355\160"}, + {0x09A3, "\001\121\355\141"}, + {0x09A4, "\001\121\311"}, + {0x09A5, "\001\121\355\072"}, + {0x09A6, "\001\121\355\002"}, + {0x09A7, "\001\121\355\162"}, + {0x09A8, "\001\121\354"}, + {0x09AA, "\001\121\327"}, + {0x09AB, "\001\121\355\124"}, + {0x09AC, "\001\121\355\052"}, + {0x09AD, "\001\121\355\153"}, + {0x09AE, "\001\121\277"}, + {0x09AF, "\001\121\305"}, + {0x09B0, "\001\121\322"}, + {0x09B2, "\001\121\033"}, + {0x09B6, "\001\121\355\152"}, + {0x09B7, "\001\121\355\032"}, + {0x09B8, "\001\121\355\004"}, + {0x09B9, "\001\121\314"}, + {0x09BC, "\022\121\356\227"}, + {0x09BE, "\042\026\121\323"}, + {0x09BF, "\042\026\121\103"}, + {0x09C0, "\042\026\121\315"}, + {0x09C1, "\042\026\121\113"}, + {0x09C2, "\042\026\121\342"}, + {0x09C3, "\042\026\121\167\205"}, + {0x09C4, "\042\026\121\355\114\205"}, + {0x09C7, "\042\026\121\217"}, + {0x09C8, "\042\026\121\307"}, + {0x09CB, "\042\026\121\306"}, + {0x09CC, "\042\026\121\333"}, + {0x09CD, "\022\121\355\242"}, + {0x09D7, "\057\007\355\265\121\333"}, + {0x09DC, "\001\121\355\212"}, + {0x09DD, "\001\121\357\305"}, + {0x09DF, "\001\121\360\015"}, + {0x09E0, "\001\121\355\114\205"}, + {0x09E1, "\001\121\355\206\205"}, + {0x09E2, "\042\026\121\211\205"}, + {0x09E3, "\042\026\121\355\206\205"}, + {0x09E6, "\024\121\331"}, + {0x09E7, "\024\121\110"}, + {0x09E8, "\024\121\127"}, + {0x09E9, "\024\121\136"}, + {0x09EA, "\024\121\220"}, + {0x09EB, "\024\121\230"}, + {0x09EC, "\024\121\255"}, + {0x09ED, "\024\121\252"}, + {0x09EE, "\024\121\226"}, + {0x09EF, "\024\121\257"}, + {0x09F0, "\001\121\322\164\246\355\044\371\061"}, + {0x09F1, "\001\121\322\164\246\355\044\301"}, + {0x09F2, "\057\121\357\316"}, + {0x09F3, "\022\121\357\316"}, + {0x09F4, "\356\103\355\272\121\110"}, + {0x09F5, "\356\103\355\272\121\127"}, + {0x09F6, "\356\103\355\272\121\136"}, + {0x09F7, "\356\103\355\272\121\220"}, + {0x09F8, "\356\103\355\272\121\360\223\355\020\110"}, + {0x09F9, "\360\223\355\272\121\356\043"}, + {0x09FA, "\362\160\121"}, + {0x0A02, "\022\150\363\131"}, + {0x0A05, "\001\150\063"}, + {0x0A06, "\001\150\323"}, + {0x0A07, "\001\150\103"}, + {0x0A08, "\001\150\315"}, + {0x0A09, "\001\150\113"}, + {0x0A0A, "\001\150\342"}, + {0x0A0F, "\001\150\355\200"}, + {0x0A10, "\001\150\307"}, + {0x0A13, "\001\150\306"}, + {0x0A14, "\001\150\333"}, + {0x0A15, "\001\150\240"}, + {0x0A16, "\001\150\355\054"}, + {0x0A17, "\001\150\355\017"}, + {0x0A18, "\001\150\355\106"}, + {0x0A19, "\001\150\355\066"}, + {0x0A1A, "\001\150\355\024"}, + {0x0A1B, "\001\150\355\240"}, + {0x0A1C, "\001\150\355\104"}, + {0x0A1D, "\001\150\375\217"}, + {0x0A1E, "\001\150\355\201"}, + {0x0A1F, "\001\150\355\100"}, + {0x0A20, "\001\150\355\127"}, + {0x0A21, "\001\150\355\120"}, + {0x0A22, "\001\150\355\160"}, + {0x0A23, "\001\150\355\141"}, + {0x0A24, "\001\150\311"}, + {0x0A25, "\001\150\355\072"}, + {0x0A26, "\001\150\355\002"}, + {0x0A27, "\001\150\355\162"}, + {0x0A28, "\001\150\354"}, + {0x0A2A, "\001\150\327"}, + {0x0A2B, "\001\150\355\124"}, + {0x0A2C, "\001\150\355\052"}, + {0x0A2D, "\001\150\355\153"}, + {0x0A2E, "\001\150\277"}, + {0x0A2F, "\001\150\305"}, + {0x0A30, "\001\150\322"}, + {0x0A32, "\001\150\033"}, + {0x0A33, "\001\150\355\263"}, + {0x0A35, "\001\150\355\241"}, + {0x0A36, "\001\150\355\152"}, + {0x0A38, "\001\150\355\004"}, + {0x0A39, "\001\150\314"}, + {0x0A3C, "\022\150\356\227"}, + {0x0A3E, "\042\026\150\323"}, + {0x0A3F, "\042\026\150\103"}, + {0x0A40, "\042\026\150\315"}, + {0x0A41, "\042\026\150\113"}, + {0x0A42, "\042\026\150\342"}, + {0x0A47, "\042\026\150\355\200"}, + {0x0A48, "\042\026\150\307"}, + {0x0A4B, "\042\026\150\306"}, + {0x0A4C, "\042\026\150\333"}, + {0x0A4D, "\022\150\355\242"}, + {0x0A59, "\001\150\360\374"}, + {0x0A5A, "\001\150\360\275"}, + {0x0A5B, "\001\150\355\101"}, + {0x0A5C, "\001\150\355\212"}, + {0x0A5E, "\001\150\355\225"}, + {0x0A66, "\024\150\331"}, + {0x0A67, "\024\150\110"}, + {0x0A68, "\024\150\127"}, + {0x0A69, "\024\150\136"}, + {0x0A6A, "\024\150\220"}, + {0x0A6B, "\024\150\230"}, + {0x0A6C, "\024\150\255"}, + {0x0A6D, "\024\150\252"}, + {0x0A6E, "\024\150\226"}, + {0x0A6F, "\024\150\257"}, + {0x0A70, "\375\210\150"}, + {0x0A71, "\362\301\150"}, + {0x0A72, "\367\227\150"}, + {0x0A73, "\372\131\150"}, + {0x0A74, "\360\227\372\100\150"}, + {0x0A81, "\022\144\356\123"}, + {0x0A82, "\022\144\355\222"}, + {0x0A83, "\022\144\355\243"}, + {0x0A85, "\001\144\063"}, + {0x0A86, "\001\144\323"}, + {0x0A87, "\001\144\103"}, + {0x0A88, "\001\144\315"}, + {0x0A89, "\001\144\113"}, + {0x0A8A, "\001\144\342"}, + {0x0A8B, "\001\144\167\205"}, + {0x0A8D, "\042\144\217\355\357"}, + {0x0A8F, "\001\144\217"}, + {0x0A90, "\001\144\307"}, + {0x0A91, "\042\144\064\355\357"}, + {0x0A93, "\001\144\306"}, + {0x0A94, "\001\144\333"}, + {0x0A95, "\001\144\240"}, + {0x0A96, "\001\144\355\054"}, + {0x0A97, "\001\144\355\017"}, + {0x0A98, "\001\144\355\106"}, + {0x0A99, "\001\144\355\066"}, + {0x0A9A, "\001\144\355\024"}, + {0x0A9B, "\001\144\355\240"}, + {0x0A9C, "\001\144\355\104"}, + {0x0A9D, "\001\144\355\251"}, + {0x0A9E, "\001\144\355\201"}, + {0x0A9F, "\001\144\355\100"}, + {0x0AA0, "\001\144\355\127"}, + {0x0AA1, "\001\144\355\120"}, + {0x0AA2, "\001\144\355\160"}, + {0x0AA3, "\001\144\355\141"}, + {0x0AA4, "\001\144\311"}, + {0x0AA5, "\001\144\355\072"}, + {0x0AA6, "\001\144\355\002"}, + {0x0AA7, "\001\144\355\162"}, + {0x0AA8, "\001\144\354"}, + {0x0AAA, "\001\144\327"}, + {0x0AAB, "\001\144\355\124"}, + {0x0AAC, "\001\144\355\052"}, + {0x0AAD, "\001\144\355\153"}, + {0x0AAE, "\001\144\277"}, + {0x0AAF, "\001\144\305"}, + {0x0AB0, "\001\144\322"}, + {0x0AB2, "\001\144\033"}, + {0x0AB3, "\001\144\355\263"}, + {0x0AB5, "\001\144\355\241"}, + {0x0AB6, "\001\144\355\152"}, + {0x0AB7, "\001\144\355\032"}, + {0x0AB8, "\001\144\355\004"}, + {0x0AB9, "\001\144\314"}, + {0x0ABC, "\022\144\356\227"}, + {0x0ABD, "\022\144\357\067"}, + {0x0ABE, "\042\026\144\323"}, + {0x0ABF, "\042\026\144\103"}, + {0x0AC0, "\042\026\144\315"}, + {0x0AC1, "\042\026\144\113"}, + {0x0AC2, "\042\026\144\342"}, + {0x0AC3, "\042\026\144\167\205"}, + {0x0AC4, "\042\026\144\355\114\205"}, + {0x0AC5, "\042\026\144\217\355\357"}, + {0x0AC7, "\042\026\144\217"}, + {0x0AC8, "\042\026\144\307"}, + {0x0AC9, "\042\026\144\064\355\357"}, + {0x0ACB, "\042\026\144\306"}, + {0x0ACC, "\042\026\144\333"}, + {0x0ACD, "\022\144\355\242"}, + {0x0AD0, "\356\366\144"}, + {0x0AE0, "\001\144\355\114\205"}, + {0x0AE6, "\363\307\144\331"}, + {0x0AE7, "\024\144\110"}, + {0x0AE8, "\024\144\127"}, + {0x0AE9, "\024\144\136"}, + {0x0AEA, "\024\144\220"}, + {0x0AEB, "\024\144\230"}, + {0x0AEC, "\024\144\255"}, + {0x0AED, "\024\144\252"}, + {0x0AEE, "\024\144\226"}, + {0x0AEF, "\024\144\257"}, + {0x0B01, "\022\142\356\123"}, + {0x0B02, "\022\142\355\222"}, + {0x0B03, "\022\142\355\243"}, + {0x0B05, "\001\142\063"}, + {0x0B06, "\001\142\323"}, + {0x0B07, "\001\142\103"}, + {0x0B08, "\001\142\315"}, + {0x0B09, "\001\142\113"}, + {0x0B0A, "\001\142\342"}, + {0x0B0B, "\001\142\167\205"}, + {0x0B0C, "\001\142\211\205"}, + {0x0B0F, "\001\142\217"}, + {0x0B10, "\001\142\307"}, + {0x0B13, "\001\142\306"}, + {0x0B14, "\001\142\333"}, + {0x0B15, "\001\142\240"}, + {0x0B16, "\001\142\355\054"}, + {0x0B17, "\001\142\355\017"}, + {0x0B18, "\001\142\355\106"}, + {0x0B19, "\001\142\355\066"}, + {0x0B1A, "\001\142\355\024"}, + {0x0B1B, "\001\142\355\240"}, + {0x0B1C, "\001\142\355\104"}, + {0x0B1D, "\001\142\355\251"}, + {0x0B1E, "\001\142\355\201"}, + {0x0B1F, "\001\142\355\100"}, + {0x0B20, "\001\142\355\127"}, + {0x0B21, "\001\142\355\120"}, + {0x0B22, "\001\142\355\160"}, + {0x0B23, "\001\142\355\141"}, + {0x0B24, "\001\142\311"}, + {0x0B25, "\001\142\355\072"}, + {0x0B26, "\001\142\355\002"}, + {0x0B27, "\001\142\355\162"}, + {0x0B28, "\001\142\354"}, + {0x0B2A, "\001\142\327"}, + {0x0B2B, "\001\142\355\124"}, + {0x0B2C, "\001\142\355\052"}, + {0x0B2D, "\001\142\355\153"}, + {0x0B2E, "\001\142\277"}, + {0x0B2F, "\001\142\305"}, + {0x0B30, "\001\142\322"}, + {0x0B32, "\001\142\033"}, + {0x0B33, "\001\142\355\263"}, + {0x0B36, "\001\142\355\152"}, + {0x0B37, "\001\142\356\252"}, + {0x0B38, "\001\142\355\004"}, + {0x0B39, "\001\142\314"}, + {0x0B3C, "\022\142\356\227"}, + {0x0B3D, "\022\142\357\067"}, + {0x0B3E, "\042\026\142\323"}, + {0x0B3F, "\042\026\142\103"}, + {0x0B40, "\042\026\142\315"}, + {0x0B41, "\042\026\142\113"}, + {0x0B42, "\042\026\142\342"}, + {0x0B43, "\042\026\142\167\205"}, + {0x0B47, "\042\026\142\217"}, + {0x0B48, "\042\026\142\307"}, + {0x0B4B, "\042\026\142\306"}, + {0x0B4C, "\042\026\142\333"}, + {0x0B4D, "\022\142\355\242"}, + {0x0B56, "\057\007\355\265\142\307"}, + {0x0B57, "\057\007\355\265\142\333"}, + {0x0B5C, "\001\142\355\212"}, + {0x0B5D, "\001\142\357\305"}, + {0x0B5F, "\001\142\360\015"}, + {0x0B60, "\001\142\355\114\205"}, + {0x0B61, "\001\142\355\206\205"}, + {0x0B66, "\024\142\331"}, + {0x0B67, "\024\142\110"}, + {0x0B68, "\024\142\127"}, + {0x0B69, "\024\142\136"}, + {0x0B6A, "\024\142\220"}, + {0x0B6B, "\024\142\230"}, + {0x0B6C, "\024\142\255"}, + {0x0B6D, "\024\142\252"}, + {0x0B6E, "\024\142\226"}, + {0x0B6F, "\024\142\257"}, + {0x0B70, "\362\160\142"}, + {0x0B82, "\022\171\355\222"}, + {0x0B83, "\022\171\355\243"}, + {0x0B85, "\001\171\063"}, + {0x0B86, "\001\171\323"}, + {0x0B87, "\001\171\103"}, + {0x0B88, "\001\171\315"}, + {0x0B89, "\001\171\113"}, + {0x0B8A, "\001\171\342"}, + {0x0B8E, "\001\171\217"}, + {0x0B8F, "\001\171\355\200"}, + {0x0B90, "\001\171\307"}, + {0x0B92, "\001\171\064"}, + {0x0B93, "\001\171\306"}, + {0x0B94, "\001\171\333"}, + {0x0B95, "\001\171\240"}, + {0x0B99, "\001\171\355\066"}, + {0x0B9A, "\001\171\355\024"}, + {0x0B9C, "\001\171\355\104"}, + {0x0B9E, "\001\171\355\201"}, + {0x0B9F, "\001\171\355\100"}, + {0x0BA3, "\001\171\355\141"}, + {0x0BA4, "\001\171\311"}, + {0x0BA8, "\001\171\354"}, + {0x0BA9, "\001\171\361\115"}, + {0x0BAA, "\001\171\327"}, + {0x0BAE, "\001\171\277"}, + {0x0BAF, "\001\171\305"}, + {0x0BB0, "\001\171\322"}, + {0x0BB1, "\001\171\355\212"}, + {0x0BB2, "\001\171\033"}, + {0x0BB3, "\001\171\355\263"}, + {0x0BB4, "\001\171\357\230"}, + {0x0BB5, "\001\171\355\241"}, + {0x0BB7, "\001\171\356\252"}, + {0x0BB8, "\001\171\355\004"}, + {0x0BB9, "\001\171\314"}, + {0x0BBE, "\042\026\171\323"}, + {0x0BBF, "\042\026\171\103"}, + {0x0BC0, "\042\026\171\315"}, + {0x0BC1, "\042\026\171\113"}, + {0x0BC2, "\042\026\171\342"}, + {0x0BC6, "\042\026\171\217"}, + {0x0BC7, "\042\026\171\355\200"}, + {0x0BC8, "\042\026\171\307"}, + {0x0BCA, "\042\026\171\064"}, + {0x0BCB, "\042\026\171\306"}, + {0x0BCC, "\042\026\171\333"}, + {0x0BCD, "\022\171\355\242"}, + {0x0BD7, "\057\007\355\265\171\333"}, + {0x0BE7, "\024\171\110"}, + {0x0BE8, "\024\171\127"}, + {0x0BE9, "\024\171\136"}, + {0x0BEA, "\024\171\220"}, + {0x0BEB, "\024\171\230"}, + {0x0BEC, "\024\171\255"}, + {0x0BED, "\024\171\252"}, + {0x0BEE, "\024\171\226"}, + {0x0BEF, "\024\171\257"}, + {0x0BF0, "\210\171\355\034"}, + {0x0BF1, "\210\171\355\245"}, + {0x0BF2, "\210\171\355\271"}, + {0x0C01, "\022\141\356\123"}, + {0x0C02, "\022\141\355\222"}, + {0x0C03, "\022\141\355\243"}, + {0x0C05, "\001\141\063"}, + {0x0C06, "\001\141\323"}, + {0x0C07, "\001\141\103"}, + {0x0C08, "\001\141\315"}, + {0x0C09, "\001\141\113"}, + {0x0C0A, "\001\141\342"}, + {0x0C0B, "\001\141\167\205"}, + {0x0C0C, "\001\141\211\205"}, + {0x0C0E, "\001\141\217"}, + {0x0C0F, "\001\141\355\200"}, + {0x0C10, "\001\141\307"}, + {0x0C12, "\001\141\064"}, + {0x0C13, "\001\141\306"}, + {0x0C14, "\001\141\333"}, + {0x0C15, "\001\141\240"}, + {0x0C16, "\001\141\355\054"}, + {0x0C17, "\001\141\355\017"}, + {0x0C18, "\001\141\355\106"}, + {0x0C19, "\001\141\355\066"}, + {0x0C1A, "\001\141\355\024"}, + {0x0C1B, "\001\141\355\240"}, + {0x0C1C, "\001\141\355\104"}, + {0x0C1D, "\001\141\355\251"}, + {0x0C1E, "\001\141\355\201"}, + {0x0C1F, "\001\141\355\100"}, + {0x0C20, "\001\141\355\127"}, + {0x0C21, "\001\141\355\120"}, + {0x0C22, "\001\141\355\160"}, + {0x0C23, "\001\141\355\141"}, + {0x0C24, "\001\141\311"}, + {0x0C25, "\001\141\355\072"}, + {0x0C26, "\001\141\355\002"}, + {0x0C27, "\001\141\355\162"}, + {0x0C28, "\001\141\354"}, + {0x0C2A, "\001\141\327"}, + {0x0C2B, "\001\141\355\124"}, + {0x0C2C, "\001\141\355\052"}, + {0x0C2D, "\001\141\355\153"}, + {0x0C2E, "\001\141\277"}, + {0x0C2F, "\001\141\305"}, + {0x0C30, "\001\141\322"}, + {0x0C31, "\001\141\355\212"}, + {0x0C32, "\001\141\033"}, + {0x0C33, "\001\141\355\263"}, + {0x0C35, "\001\141\355\241"}, + {0x0C36, "\001\141\355\152"}, + {0x0C37, "\001\141\355\032"}, + {0x0C38, "\001\141\355\004"}, + {0x0C39, "\001\141\314"}, + {0x0C3E, "\042\026\141\323"}, + {0x0C3F, "\042\026\141\103"}, + {0x0C40, "\042\026\141\315"}, + {0x0C41, "\042\026\141\113"}, + {0x0C42, "\042\026\141\342"}, + {0x0C43, "\042\026\141\167\205"}, + {0x0C44, "\042\026\141\355\114\205"}, + {0x0C46, "\042\026\141\130"}, + {0x0C47, "\042\026\141\355\200"}, + {0x0C48, "\042\026\141\307"}, + {0x0C4A, "\042\026\141\064"}, + {0x0C4B, "\042\026\141\306"}, + {0x0C4C, "\042\026\141\333"}, + {0x0C4D, "\022\141\355\242"}, + {0x0C55, "\057\007\355\265\141"}, + {0x0C56, "\057\007\355\265\141\307"}, + {0x0C60, "\001\141\355\114\205"}, + {0x0C61, "\001\141\355\206\205"}, + {0x0C66, "\024\141\331"}, + {0x0C67, "\024\141\110"}, + {0x0C68, "\024\141\127"}, + {0x0C69, "\024\141\136"}, + {0x0C6A, "\024\141\220"}, + {0x0C6B, "\024\141\230"}, + {0x0C6C, "\024\141\255"}, + {0x0C6D, "\024\141\252"}, + {0x0C6E, "\024\141\226"}, + {0x0C6F, "\024\141\257"}, + {0x0C82, "\022\140\355\222"}, + {0x0C83, "\022\140\355\243"}, + {0x0C85, "\001\140\063"}, + {0x0C86, "\001\140\323"}, + {0x0C87, "\001\140\103"}, + {0x0C88, "\001\140\315"}, + {0x0C89, "\001\140\113"}, + {0x0C8A, "\001\140\342"}, + {0x0C8B, "\001\140\167\205"}, + {0x0C8C, "\001\140\211\205"}, + {0x0C8E, "\001\140\217"}, + {0x0C8F, "\001\140\355\200"}, + {0x0C90, "\001\140\307"}, + {0x0C92, "\001\140\064"}, + {0x0C93, "\001\140\306"}, + {0x0C94, "\001\140\333"}, + {0x0C95, "\001\140\240"}, + {0x0C96, "\001\140\355\054"}, + {0x0C97, "\001\140\355\017"}, + {0x0C98, "\001\140\355\106"}, + {0x0C99, "\001\140\355\066"}, + {0x0C9A, "\001\140\355\024"}, + {0x0C9B, "\001\140\355\240"}, + {0x0C9C, "\001\140\355\104"}, + {0x0C9D, "\001\140\355\251"}, + {0x0C9E, "\001\140\355\201"}, + {0x0C9F, "\001\140\355\100"}, + {0x0CA0, "\001\140\355\127"}, + {0x0CA1, "\001\140\355\120"}, + {0x0CA2, "\001\140\355\160"}, + {0x0CA3, "\001\140\355\141"}, + {0x0CA4, "\001\140\311"}, + {0x0CA5, "\001\140\355\072"}, + {0x0CA6, "\001\140\355\002"}, + {0x0CA7, "\001\140\355\162"}, + {0x0CA8, "\001\140\354"}, + {0x0CAA, "\001\140\327"}, + {0x0CAB, "\001\140\355\124"}, + {0x0CAC, "\001\140\355\052"}, + {0x0CAD, "\001\140\355\153"}, + {0x0CAE, "\001\140\277"}, + {0x0CAF, "\001\140\305"}, + {0x0CB0, "\001\140\322"}, + {0x0CB1, "\001\140\355\212"}, + {0x0CB2, "\001\140\033"}, + {0x0CB3, "\001\140\355\263"}, + {0x0CB5, "\001\140\355\241"}, + {0x0CB6, "\001\140\355\152"}, + {0x0CB7, "\001\140\355\032"}, + {0x0CB8, "\001\140\355\004"}, + {0x0CB9, "\001\140\314"}, + {0x0CBE, "\042\026\140\323"}, + {0x0CBF, "\042\026\140\103"}, + {0x0CC0, "\042\026\140\315"}, + {0x0CC1, "\042\026\140\113"}, + {0x0CC2, "\042\026\140\342"}, + {0x0CC3, "\042\026\140\167\205"}, + {0x0CC4, "\042\026\140\355\114\205"}, + {0x0CC6, "\042\026\140\217"}, + {0x0CC7, "\042\026\140\355\200"}, + {0x0CC8, "\042\026\140\307"}, + {0x0CCA, "\042\026\140\064"}, + {0x0CCB, "\042\026\140\306"}, + {0x0CCC, "\042\026\140\333"}, + {0x0CCD, "\022\140\355\242"}, + {0x0CD5, "\057\007\355\265\140"}, + {0x0CD6, "\057\007\355\265\140\307"}, + {0x0CDE, "\001\140\355\225"}, + {0x0CE0, "\001\140\355\114\205"}, + {0x0CE1, "\001\140\355\206\205"}, + {0x0CE6, "\024\140\331"}, + {0x0CE7, "\024\140\110"}, + {0x0CE8, "\024\140\127"}, + {0x0CE9, "\024\140\136"}, + {0x0CEA, "\024\140\220"}, + {0x0CEB, "\024\140\230"}, + {0x0CEC, "\024\140\255"}, + {0x0CED, "\024\140\252"}, + {0x0CEE, "\024\140\226"}, + {0x0CEF, "\024\140\257"}, + {0x0D02, "\022\145\355\222"}, + {0x0D03, "\022\145\355\243"}, + {0x0D05, "\001\145\063"}, + {0x0D06, "\001\145\323"}, + {0x0D07, "\001\145\103"}, + {0x0D08, "\001\145\315"}, + {0x0D09, "\001\145\113"}, + {0x0D0A, "\001\145\342"}, + {0x0D0B, "\001\145\167\205"}, + {0x0D0C, "\001\145\211\205"}, + {0x0D0E, "\001\145\217"}, + {0x0D0F, "\001\145\355\200"}, + {0x0D10, "\001\145\307"}, + {0x0D12, "\001\145\064"}, + {0x0D13, "\001\145\306"}, + {0x0D14, "\001\145\333"}, + {0x0D15, "\001\145\240"}, + {0x0D16, "\001\145\355\054"}, + {0x0D17, "\001\145\355\017"}, + {0x0D18, "\001\145\355\106"}, + {0x0D19, "\001\145\355\066"}, + {0x0D1A, "\001\145\355\024"}, + {0x0D1B, "\001\145\355\240"}, + {0x0D1C, "\001\145\355\104"}, + {0x0D1D, "\001\145\355\251"}, + {0x0D1E, "\001\145\355\201"}, + {0x0D1F, "\001\145\355\100"}, + {0x0D20, "\001\145\355\127"}, + {0x0D21, "\001\145\355\120"}, + {0x0D22, "\001\145\355\160"}, + {0x0D23, "\001\145\355\141"}, + {0x0D24, "\001\145\311"}, + {0x0D25, "\001\145\355\072"}, + {0x0D26, "\001\145\355\002"}, + {0x0D27, "\001\145\355\162"}, + {0x0D28, "\001\145\354"}, + {0x0D2A, "\001\145\327"}, + {0x0D2B, "\001\145\355\124"}, + {0x0D2C, "\001\145\355\052"}, + {0x0D2D, "\001\145\355\153"}, + {0x0D2E, "\001\145\277"}, + {0x0D2F, "\001\145\305"}, + {0x0D30, "\001\145\322"}, + {0x0D31, "\001\145\355\212"}, + {0x0D32, "\001\145\033"}, + {0x0D33, "\001\145\355\263"}, + {0x0D34, "\001\145\357\230"}, + {0x0D35, "\001\145\355\241"}, + {0x0D36, "\001\145\355\152"}, + {0x0D37, "\001\145\355\032"}, + {0x0D38, "\001\145\355\004"}, + {0x0D39, "\001\145\314"}, + {0x0D3E, "\042\026\145\323"}, + {0x0D3F, "\042\026\145\103"}, + {0x0D40, "\042\026\145\315"}, + {0x0D41, "\042\026\145\113"}, + {0x0D42, "\042\026\145\342"}, + {0x0D43, "\042\026\145\167\205"}, + {0x0D46, "\042\026\145\217"}, + {0x0D47, "\042\026\145\355\200"}, + {0x0D48, "\042\026\145\307"}, + {0x0D4A, "\042\026\145\064"}, + {0x0D4B, "\042\026\145\306"}, + {0x0D4C, "\042\026\145\333"}, + {0x0D4D, "\022\145\355\242"}, + {0x0D57, "\057\007\355\265\145\333"}, + {0x0D60, "\001\145\355\114\205"}, + {0x0D61, "\001\145\355\206\205"}, + {0x0D66, "\024\145\331"}, + {0x0D67, "\024\145\110"}, + {0x0D68, "\024\145\127"}, + {0x0D69, "\024\145\136"}, + {0x0D6A, "\024\145\220"}, + {0x0D6B, "\024\145\230"}, + {0x0D6C, "\024\145\255"}, + {0x0D6D, "\024\145\252"}, + {0x0D6E, "\024\145\226"}, + {0x0D6F, "\024\145\257"}, + {0x0D82, "\022\356\114\362\336"}, + {0x0D83, "\022\356\114\376\043"}, + {0x0D85, "\001\152\363\014"}, + {0x0D86, "\001\152\377\002"}, + {0x0D87, "\001\152\376\364"}, + {0x0D88, "\001\152\376\365"}, + {0x0D89, "\001\152\367\241"}, + {0x0D8A, "\001\152\377\047"}, + {0x0D8B, "\001\152\372\133"}, + {0x0D8C, "\001\152\372\141"}, + {0x0D8D, "\001\152\367\230"}, + {0x0D8E, "\001\152\367\231"}, + {0x0D8F, "\001\152\367\201"}, + {0x0D90, "\001\152\367\203"}, + {0x0D91, "\001\152\377\041"}, + {0x0D92, "\001\152\377\044"}, + {0x0D93, "\001\152\363\020"}, + {0x0D94, "\001\152\372\137"}, + {0x0D95, "\001\152\377\065"}, + {0x0D96, "\001\152\362\344"}, + {0x0D9A, "\001\152\355\221\360\366"}, + {0x0D9B, "\001\152\355\227\360\366"}, + {0x0D9C, "\001\152\355\221\357\153"}, + {0x0D9D, "\001\152\355\227\357\153"}, + {0x0D9E, "\001\152\367\361\361\132"}, + {0x0D9F, "\001\152\357\026\357\153"}, + {0x0DA0, "\001\152\355\221\361\363"}, + {0x0DA1, "\001\152\355\227\361\363"}, + {0x0DA2, "\001\152\355\221\357\136"}, + {0x0DA3, "\001\152\355\227\357\136"}, + {0x0DA4, "\001\152\357\372\361\132"}, + {0x0DA5, "\001\152\357\372\374\222\372\061"}, + {0x0DA6, "\001\152\357\026\357\136"}, + {0x0DA7, "\001\152\355\221\362\047"}, + {0x0DA8, "\001\152\355\227\362\047"}, + {0x0DA9, "\001\152\355\221\357\127"}, + {0x0DAA, "\001\152\355\227\357\127"}, + {0x0DAB, "\001\152\357\241\361\106"}, + {0x0DAC, "\001\152\357\026\357\127"}, + {0x0DAD, "\001\152\355\221\361\357"}, + {0x0DAE, "\001\152\355\227\361\357"}, + {0x0DAF, "\001\152\355\221\357\124"}, + {0x0DB0, "\001\152\355\227\357\124"}, + {0x0DB1, "\001\152\357\123\361\106"}, + {0x0DB3, "\001\152\357\026\357\124"}, + {0x0DB4, "\001\152\355\221\361\161"}, + {0x0DB5, "\001\152\355\227\361\161"}, + {0x0DB6, "\001\152\355\221\357\070"}, + {0x0DB7, "\001\152\355\227\357\070"}, + {0x0DB8, "\001\152\370\304"}, + {0x0DB9, "\001\152\362\322\357\070"}, + {0x0DBA, "\001\152\376\156"}, + {0x0DBB, "\001\152\374\044"}, + {0x0DBD, "\001\152\357\123\361\023"}, + {0x0DC0, "\001\152\376\014"}, + {0x0DC1, "\001\152\357\372\377\006"}, + {0x0DC2, "\001\152\357\241\363\271"}, + {0x0DC3, "\001\152\357\123\374\230"}, + {0x0DC4, "\001\152\366\322"}, + {0x0DC5, "\001\152\357\241\361\023"}, + {0x0DC6, "\001\152\366\051"}, + {0x0DCA, "\022\356\114\362\310"}, + {0x0DCF, "\042\026\152\360\024"}, + {0x0DD0, "\042\026\152\357\224\362\152"}, + {0x0DD1, "\042\026\152\356\006\362\152"}, + {0x0DD2, "\042\026\152\357\224\360\352"}, + {0x0DD3, "\042\026\152\356\006\360\352"}, + {0x0DD4, "\042\026\152\357\224\361\232"}, + {0x0DD6, "\042\026\152\356\006\361\232"}, + {0x0DD8, "\042\026\152\360\310"}, + {0x0DD9, "\042\026\152\356\217"}, + {0x0DDA, "\042\026\356\114\356\006\356\217"}, + {0x0DDB, "\042\026\152\370\036\365\243"}, + {0x0DDC, "\042\026\356\114\356\217\357\161\360\024"}, + {0x0DDD, "\042\026\152\356\217\357\161\356\006\360\024"}, + {0x0DDE, "\042\026\152\356\217\357\161\357\154"}, + {0x0DDF, "\042\026\356\114\357\154"}, + {0x0DF2, "\042\026\152\356\006\360\310"}, + {0x0DF3, "\042\026\152\356\006\357\154"}, + {0x0DF4, "\355\234\152\370\044"}, + {0x0E01, "\001\153\355\167\367\373"}, + {0x0E02, "\001\153\355\261\357\220"}, + {0x0E03, "\001\153\355\261\370\007"}, + {0x0E04, "\001\153\355\261\370\010"}, + {0x0E05, "\001\153\355\261\370\005"}, + {0x0E06, "\001\153\355\261\374\036"}, + {0x0E07, "\001\153\356\225\371\220"}, + {0x0E08, "\001\153\355\277\361\362"}, + {0x0E09, "\001\153\355\277\375\135"}, + {0x0E0A, "\001\153\355\277\375\130"}, + {0x0E0B, "\001\153\355\070\355\070"}, + {0x0E0C, "\001\153\355\277\375\146"}, + {0x0E0D, "\001\153\355\040\376\164"}, + {0x0E0E, "\001\153\355\252\375\126"}, + {0x0E0F, "\001\153\355\176\372\165"}, + {0x0E10, "\001\153\355\077\357\354"}, + {0x0E11, "\001\153\355\077\371\101"}, + {0x0E12, "\001\153\355\077\372\220"}, + {0x0E13, "\001\153\355\113\371\173"}, + {0x0E14, "\001\153\355\252\365\242"}, + {0x0E15, "\001\153\355\176\375\102"}, + {0x0E16, "\001\153\355\077\375\172"}, + {0x0E17, "\001\153\355\077\375\166"}, + {0x0E18, "\001\153\355\077\375\170"}, + {0x0E19, "\001\153\355\113\355\340"}, + {0x0E1A, "\001\153\355\377\363\043"}, + {0x0E1B, "\001\153\355\273\372\245"}, + {0x0E1C, "\001\153\356\033\372\217"}, + {0x0E1D, "\001\153\356\014\355\225"}, + {0x0E1E, "\001\153\356\033\372\211"}, + {0x0E1F, "\001\153\356\014\366\043"}, + {0x0E20, "\001\153\356\033\374\216"}, + {0x0E21, "\001\153\355\136\277"}, + {0x0E22, "\001\153\355\040\376\152"}, + {0x0E23, "\001\153\355\174\374\106"}, + {0x0E24, "\001\153\357\315"}, + {0x0E25, "\001\153\355\170\361\030"}, + {0x0E26, "\001\153\356\352"}, + {0x0E27, "\001\153\355\150\362\105"}, + {0x0E28, "\001\153\355\070\374\213"}, + {0x0E29, "\001\153\355\070\374\112"}, + {0x0E2A, "\001\153\355\070\357\333"}, + {0x0E2B, "\001\153\355\107\366\346"}, + {0x0E2C, "\001\153\355\170\375\145"}, + {0x0E2D, "\001\153\064\355\373"}, + {0x0E2E, "\001\153\355\107\371\315"}, + {0x0E2F, "\001\153\372\171"}, + {0x0E30, "\001\153\355\125\063"}, + {0x0E31, "\001\153\361\047\366\314\362\306"}, + {0x0E32, "\001\153\355\125\323"}, + {0x0E33, "\001\153\355\125\356\277"}, + {0x0E34, "\001\153\355\125\103"}, + {0x0E35, "\001\153\355\125\315"}, + {0x0E36, "\001\153\355\125\356\235"}, + {0x0E37, "\001\153\355\125\372\134"}, + {0x0E38, "\001\153\355\125\113"}, + {0x0E39, "\001\153\355\125\342"}, + {0x0E3A, "\001\153\372\213"}, + {0x0E3F, "\022\355\272\355\147\363\022"}, + {0x0E40, "\001\153\355\125\217"}, + {0x0E41, "\001\153\355\125\376\366"}, + {0x0E42, "\001\153\355\125\064"}, + {0x0E43, "\001\153\355\125\307\370\306"}, + {0x0E44, "\001\153\355\125\307\370\305"}, + {0x0E45, "\001\153\370\127"}, + {0x0E46, "\001\153\370\310"}, + {0x0E47, "\001\153\370\307"}, + {0x0E48, "\001\153\355\270\360\227"}, + {0x0E49, "\001\153\355\270\355\077"}, + {0x0E4A, "\001\153\355\270\375\254"}, + {0x0E4B, "\001\153\355\270\375\132"}, + {0x0E4C, "\001\153\375\167"}, + {0x0E4D, "\001\153\371\241"}, + {0x0E4E, "\001\153\376\153"}, + {0x0E4F, "\001\153\366\100"}, + {0x0E50, "\024\355\147\331"}, + {0x0E51, "\024\355\147\110"}, + {0x0E52, "\024\355\147\127"}, + {0x0E53, "\024\355\147\136"}, + {0x0E54, "\024\355\147\220"}, + {0x0E55, "\024\355\147\230"}, + {0x0E56, "\024\355\147\255"}, + {0x0E57, "\024\355\147\252"}, + {0x0E58, "\024\355\147\226"}, + {0x0E59, "\024\355\147\257"}, + {0x0E5A, "\335\355\147\362\325"}, + {0x0E5B, "\335\355\147\370\004"}, + {0x0E81, "\001\227\355\167"}, + {0x0E82, "\001\227\355\261\356\115"}, + {0x0E84, "\001\227\355\261\356\122"}, + {0x0E87, "\001\227\356\225"}, + {0x0E88, "\001\227\355\277"}, + {0x0E8A, "\001\227\355\070\356\122"}, + {0x0E8D, "\001\227\357\063"}, + {0x0E94, "\001\227\355\252"}, + {0x0E95, "\001\227\355\176"}, + {0x0E96, "\001\227\355\077\356\115"}, + {0x0E97, "\001\227\355\077\356\122"}, + {0x0E99, "\001\227\355\113"}, + {0x0E9A, "\001\227\355\377"}, + {0x0E9B, "\001\227\355\273"}, + {0x0E9C, "\001\227\356\033\356\115"}, + {0x0E9D, "\001\227\356\014\356\122"}, + {0x0E9E, "\001\227\356\033\356\122"}, + {0x0E9F, "\001\227\356\014\356\115"}, + {0x0EA1, "\001\227\355\136"}, + {0x0EA2, "\001\227\355\040"}, + {0x0EA3, "\001\227\355\170\361\030"}, + {0x0EA5, "\001\227\355\170\370\207"}, + {0x0EA7, "\001\227\355\150"}, + {0x0EAA, "\001\227\355\070\356\115"}, + {0x0EAB, "\001\227\355\107\356\115"}, + {0x0EAD, "\001\227\064"}, + {0x0EAE, "\001\227\355\107\356\122"}, + {0x0EAF, "\251\007\357\345\370\132"}, + {0x0EB0, "\042\026\227\063"}, + {0x0EB1, "\042\026\227\355\270\367\360"}, + {0x0EB2, "\042\026\227\323"}, + {0x0EB3, "\042\026\227\356\277"}, + {0x0EB4, "\042\026\227\103"}, + {0x0EB5, "\042\026\227\315"}, + {0x0EB6, "\042\026\227\132"}, + {0x0EB7, "\042\026\227\376\003"}, + {0x0EB8, "\042\026\227\113"}, + {0x0EB9, "\042\026\227\342"}, + {0x0EBB, "\042\026\227\355\270\370\037"}, + {0x0EBC, "\360\172\026\227\355\170"}, + {0x0EBD, "\360\172\026\227\357\063"}, + {0x0EC0, "\042\026\227\217"}, + {0x0EC1, "\042\026\227\355\200"}, + {0x0EC2, "\042\026\227\064"}, + {0x0EC3, "\042\026\227\363\012"}, + {0x0EC4, "\042\026\227\307"}, + {0x0EC6, "\022\355\042\355\167\033"}, + {0x0EC8, "\204\007\345\355\042\355\270\377\027"}, + {0x0EC9, "\204\007\345\355\042\355\270\355\077"}, + {0x0ECA, "\204\007\345\355\042\355\270\355\217"}, + {0x0ECB, "\204\007\345\355\042\277\375\131"}, + {0x0ECC, "\057\360\153\355\042"}, + {0x0ECD, "\022\355\042\371\237"}, + {0x0ED0, "\024\355\042\331"}, + {0x0ED1, "\024\355\042\110"}, + {0x0ED2, "\024\355\042\127"}, + {0x0ED3, "\024\355\042\136"}, + {0x0ED4, "\024\355\042\220"}, + {0x0ED5, "\024\355\042\230"}, + {0x0ED6, "\024\355\042\255"}, + {0x0ED7, "\024\355\042\252"}, + {0x0ED8, "\024\355\042\226"}, + {0x0ED9, "\024\355\042\257"}, + {0x0EDC, "\022\355\042\355\107\355\113"}, + {0x0EDD, "\022\355\042\355\107\355\136"}, + {0x0F00, "\002\107\356\366"}, + {0x0F01, "\057\120\356\206\355\302\355\207\063\375\260"}, + {0x0F02, "\057\120\356\206\355\302\355\207\360\040\361\272\360\071\277"}, + {0x0F03, "\057\120\356\206\355\302\355\207\360\040\356\206\356\046\277"}, + {0x0F04, "\057\120\355\302\355\207\370\312\277\372\132"}, + {0x0F05, "\057\120\355\302\355\207\374\257\277\366\056"}, + {0x0F06, "\057\120\356\057\355\302\355\207\361\166\355\274\277"}, + {0x0F07, "\057\120\355\302\355\207\356\046\355\274\277"}, + {0x0F08, "\057\120\374\233\355\274"}, + {0x0F09, "\057\120\363\165\355\302\355\207"}, + {0x0F0A, "\057\120\363\142\374\271\355\302\355\207"}, + {0x0F0B, "\057\120\367\221\356\046"}, + {0x0F0C, "\057\365\356\120\356\046\363\166"}, + {0x0F0D, "\057\120\355\274"}, + {0x0F0E, "\057\120\360\031\355\274"}, + {0x0F0F, "\057\120\356\046\355\274"}, + {0x0F10, "\057\120\360\031\356\046\355\274"}, + {0x0F11, "\057\120\374\065\363\275\374\367\355\274"}, + {0x0F12, "\057\120\361\261\360\300\355\274"}, + {0x0F13, "\057\120\356\057\360\216\355\213\355\334\355\264\361\362"}, + {0x0F14, "\057\120\356\206\356\046"}, + {0x0F15, "\361\035\375\201\363\254\355\213"}, + {0x0F16, "\361\035\120\370\152\355\213"}, + {0x0F17, "\057\120\357\066\374\261\366\146\362\161\355\213"}, + {0x0F18, "\057\120\357\066\362\163\327"}, + {0x0F19, "\057\120\357\066\374\237\375\264"}, + {0x0F1A, "\057\120\355\346\356\323\360\262"}, + {0x0F1B, "\057\120\355\346\356\323\360\315"}, + {0x0F1C, "\057\120\355\346\356\323\357\157"}, + {0x0F1D, "\057\120\355\346\356\360\360\262"}, + {0x0F1E, "\057\120\355\346\356\360\360\315"}, + {0x0F1F, "\057\120\355\346\356\323\355\346\356\360"}, + {0x0F20, "\024\120\331"}, + {0x0F21, "\024\120\110"}, + {0x0F22, "\024\120\127"}, + {0x0F23, "\024\120\136"}, + {0x0F24, "\024\120\220"}, + {0x0F25, "\024\120\230"}, + {0x0F26, "\024\120\255"}, + {0x0F27, "\024\120\252"}, + {0x0F28, "\024\120\226"}, + {0x0F29, "\024\120\257"}, + {0x0F2A, "\024\120\110\355\020\110\355\133"}, + {0x0F2B, "\024\120\127\355\020\110\355\133"}, + {0x0F2C, "\024\120\136\355\020\110\355\133"}, + {0x0F2D, "\024\120\220\355\020\110\355\133"}, + {0x0F2E, "\024\120\230\355\020\110\355\133"}, + {0x0F2F, "\024\120\255\355\020\110\355\133"}, + {0x0F30, "\024\120\252\355\020\110\355\133"}, + {0x0F31, "\024\120\226\355\020\110\355\133"}, + {0x0F32, "\024\120\257\355\020\110\355\133"}, + {0x0F33, "\024\120\331\355\020\110\355\133"}, + {0x0F34, "\057\120\363\164\355\213"}, + {0x0F35, "\057\120\361\110\360\103\360\030\362\142"}, + {0x0F36, "\057\120\356\057\360\216\355\213\360\102\361\054\356\150"}, + {0x0F37, "\057\120\361\110\360\103\374\260\355\213"}, + {0x0F38, "\057\120\356\151\355\207"}, + {0x0F39, "\057\120\355\177\362\164"}, + {0x0F3A, "\057\120\360\302\355\213\360\307"}, + {0x0F3B, "\057\120\360\302\355\213\360\306"}, + {0x0F3C, "\057\120\355\373\360\372\360\307"}, + {0x0F3D, "\057\120\355\373\360\372\360\306"}, + {0x0F3E, "\057\120\376\154\362\044"}, + {0x0F3F, "\057\120\370\267\362\044"}, + {0x0F40, "\001\107\240"}, + {0x0F41, "\001\107\355\054"}, + {0x0F42, "\001\107\355\017"}, + {0x0F43, "\001\107\355\106"}, + {0x0F44, "\001\107\355\066"}, + {0x0F45, "\001\107\357\073"}, + {0x0F46, "\001\107\355\032"}, + {0x0F47, "\001\107\357\206"}, + {0x0F49, "\001\107\355\201"}, + {0x0F4A, "\001\107\355\100"}, + {0x0F4B, "\001\107\355\127"}, + {0x0F4C, "\001\107\355\120"}, + {0x0F4D, "\001\107\355\160"}, + {0x0F4E, "\001\107\355\141"}, + {0x0F4F, "\001\107\311"}, + {0x0F50, "\001\107\355\072"}, + {0x0F51, "\001\107\355\002"}, + {0x0F52, "\001\107\355\162"}, + {0x0F53, "\001\107\354"}, + {0x0F54, "\001\107\327"}, + {0x0F55, "\001\107\355\124"}, + {0x0F56, "\001\107\355\052"}, + {0x0F57, "\001\107\355\153"}, + {0x0F58, "\001\107\277"}, + {0x0F59, "\001\107\355\177"}, + {0x0F5A, "\001\107\362\043"}, + {0x0F5B, "\001\107\356\065"}, + {0x0F5C, "\001\107\360\214"}, + {0x0F5D, "\001\107\355\050"}, + {0x0F5E, "\001\107\355\365"}, + {0x0F5F, "\001\107\355\101"}, + {0x0F60, "\001\107\360\035"}, + {0x0F61, "\001\107\305"}, + {0x0F62, "\001\107\322"}, + {0x0F63, "\001\107\033"}, + {0x0F64, "\001\107\357\325"}, + {0x0F65, "\001\107\356\252"}, + {0x0F66, "\001\107\355\004"}, + {0x0F67, "\001\107\314"}, + {0x0F68, "\001\107\063"}, + {0x0F69, "\001\107\357\223"}, + {0x0F6A, "\001\107\322\044\263\356\201"}, + {0x0F71, "\042\026\107\323"}, + {0x0F72, "\042\026\107\103"}, + {0x0F73, "\042\026\107\315"}, + {0x0F74, "\042\026\107\113"}, + {0x0F75, "\042\026\107\342"}, + {0x0F76, "\042\026\107\167\205"}, + {0x0F77, "\042\026\107\355\114\205"}, + {0x0F78, "\042\026\107\211\205"}, + {0x0F79, "\042\026\107\355\206\205"}, + {0x0F7A, "\042\026\107\217"}, + {0x0F7B, "\042\026\107\355\200"}, + {0x0F7C, "\042\026\107\064"}, + {0x0F7D, "\042\026\107\306"}, + {0x0F7E, "\057\120\374\102\355\070\355\066\355\174"}, + {0x0F7F, "\057\120\361\272\360\071"}, + {0x0F80, "\042\026\103\355\013"}, + {0x0F81, "\042\026\315\355\013"}, + {0x0F82, "\057\120\360\030\362\142\361\131\355\002"}, + {0x0F83, "\057\120\374\341\370\142"}, + {0x0F84, "\057\120\366\311"}, + {0x0F85, "\057\120\372\152"}, + {0x0F86, "\057\120\370\141\355\213"}, + {0x0F87, "\057\120\360\011\355\213"}, + {0x0F88, "\057\120\370\140\355\177\356\150"}, + {0x0F89, "\057\120\370\311\356\150"}, + {0x0F8A, "\057\120\360\301\356\150\361\262"}, + {0x0F8B, "\057\120\360\301\370\313\361\262"}, + {0x0F90, "\001\107\240\236"}, + {0x0F91, "\001\107\355\054\236"}, + {0x0F92, "\001\107\355\017\236"}, + {0x0F93, "\001\107\355\106\236"}, + {0x0F94, "\001\107\355\066\236"}, + {0x0F95, "\001\107\357\073\236"}, + {0x0F96, "\001\107\355\032\236"}, + {0x0F97, "\001\107\357\206\236"}, + {0x0F99, "\001\107\377\050"}, + {0x0F9A, "\001\107\355\100\236"}, + {0x0F9B, "\001\107\355\127\236"}, + {0x0F9C, "\001\107\355\120\236"}, + {0x0F9D, "\001\107\355\160\236"}, + {0x0F9E, "\001\107\355\141\236"}, + {0x0F9F, "\001\107\311\236"}, + {0x0FA0, "\001\107\355\072\236"}, + {0x0FA1, "\001\107\355\002\236"}, + {0x0FA2, "\001\107\355\162\236"}, + {0x0FA3, "\001\107\354\236"}, + {0x0FA4, "\001\107\327\236"}, + {0x0FA5, "\001\107\355\124\236"}, + {0x0FA6, "\001\107\355\052\236"}, + {0x0FA7, "\001\107\355\153\236"}, + {0x0FA8, "\001\107\277\236"}, + {0x0FA9, "\001\107\355\177\236"}, + {0x0FAA, "\001\107\362\043\236"}, + {0x0FAB, "\001\107\356\065\236"}, + {0x0FAC, "\001\107\360\214\236"}, + {0x0FAD, "\001\107\355\050\236"}, + {0x0FAE, "\001\107\355\365\236"}, + {0x0FAF, "\001\107\355\101\236"}, + {0x0FB0, "\001\107\360\035\236"}, + {0x0FB1, "\001\107\305\236"}, + {0x0FB2, "\001\107\322\236"}, + {0x0FB3, "\001\107\033\236"}, + {0x0FB4, "\001\107\357\325\375\363"}, + {0x0FB5, "\001\107\356\252\236"}, + {0x0FB6, "\001\107\355\004\236"}, + {0x0FB7, "\001\107\314\236"}, + {0x0FB8, "\001\107\063\236"}, + {0x0FB9, "\001\107\357\223\236\357\223"}, + {0x0FBA, "\001\107\355\050\236\044\263\356\201"}, + {0x0FBB, "\001\107\236\305\044\263\356\201"}, + {0x0FBC, "\001\107\236\322\044\263\356\201"}, + {0x0FBE, "\057\120\356\021\356\037\355\054"}, + {0x0FBF, "\057\120\356\021\356\037\355\054\360\102\361\054\356\150"}, + {0x0FC0, "\057\120\007\356\306\361\376\366\103"}, + {0x0FC1, "\057\120\007\356\306\361\376\366\041"}, + {0x0FC2, "\057\120\007\356\306\363\231\375\155"}, + {0x0FC3, "\374\315\120\007\356\306\374\234\363\216"}, + {0x0FC4, "\022\120\365\331\356\003"}, + {0x0FC5, "\022\120\361\251\361\271"}, + {0x0FC6, "\022\120\372\146\366\147"}, + {0x0FC7, "\022\120\361\251\361\271\361\261\360\300"}, + {0x0FC8, "\022\120\361\166\327"}, + {0x0FC9, "\022\120\356\363\356\003"}, + {0x0FCA, "\022\120\356\363\356\003\360\031\362\162"}, + {0x0FCB, "\022\120\356\363\356\003\357\157\360\037"}, + {0x0FCC, "\022\120\356\363\355\377\363\103\360\037"}, + {0x0FCF, "\057\120\355\346\356\360\357\157"}, + {0x1000, "\001\176\240"}, + {0x1001, "\001\176\355\054"}, + {0x1002, "\001\176\355\017"}, + {0x1003, "\001\176\355\106"}, + {0x1004, "\001\176\355\066"}, + {0x1005, "\001\176\355\024"}, + {0x1006, "\001\176\355\240"}, + {0x1007, "\001\176\355\104"}, + {0x1008, "\001\176\355\251"}, + {0x1009, "\001\176\355\201"}, + {0x100A, "\001\176\377\055"}, + {0x100B, "\001\176\355\100"}, + {0x100C, "\001\176\355\127"}, + {0x100D, "\001\176\355\120"}, + {0x100E, "\001\176\355\160"}, + {0x100F, "\001\176\355\141"}, + {0x1010, "\001\176\311"}, + {0x1011, "\001\176\355\072"}, + {0x1012, "\001\176\355\002"}, + {0x1013, "\001\176\355\162"}, + {0x1014, "\001\176\354"}, + {0x1015, "\001\176\327"}, + {0x1016, "\001\176\355\124"}, + {0x1017, "\001\176\355\052"}, + {0x1018, "\001\176\355\153"}, + {0x1019, "\001\176\277"}, + {0x101A, "\001\176\305"}, + {0x101B, "\001\176\322"}, + {0x101C, "\001\176\033"}, + {0x101D, "\001\176\355\050"}, + {0x101E, "\001\176\355\004"}, + {0x101F, "\001\176\314"}, + {0x1020, "\001\176\355\263"}, + {0x1021, "\001\176\323"}, + {0x1023, "\001\176\103"}, + {0x1024, "\001\176\315"}, + {0x1025, "\001\176\113"}, + {0x1026, "\001\176\342"}, + {0x1027, "\001\176\217"}, + {0x1029, "\001\176\064"}, + {0x102A, "\001\176\333"}, + {0x102C, "\042\026\176\323"}, + {0x102D, "\042\026\176\103"}, + {0x102E, "\042\026\176\315"}, + {0x102F, "\042\026\176\113"}, + {0x1030, "\042\026\176\342"}, + {0x1031, "\042\026\176\217"}, + {0x1032, "\042\026\176\307"}, + {0x1036, "\022\355\031\355\222"}, + {0x1037, "\037\043\355\031"}, + {0x1038, "\355\243\355\031"}, + {0x1039, "\022\355\031\355\242"}, + {0x1040, "\024\355\031\331"}, + {0x1041, "\024\355\031\110"}, + {0x1042, "\024\355\031\127"}, + {0x1043, "\024\355\031\136"}, + {0x1044, "\024\355\031\220"}, + {0x1045, "\024\355\031\230"}, + {0x1046, "\024\355\031\255"}, + {0x1047, "\024\355\031\252"}, + {0x1048, "\024\355\031\226"}, + {0x1049, "\024\355\031\257"}, + {0x104A, "\057\355\031\355\142\361\305"}, + {0x104B, "\057\355\031\361\305"}, + {0x104C, "\022\355\031\370\200"}, + {0x104D, "\022\355\031\362\300"}, + {0x104E, "\022\355\031\370\143"}, + {0x104F, "\022\355\031\366\300"}, + {0x1050, "\001\176\355\152"}, + {0x1051, "\001\176\355\032"}, + {0x1052, "\001\176\167\205"}, + {0x1053, "\001\176\355\114\205"}, + {0x1054, "\001\176\211\205"}, + {0x1055, "\001\176\355\206\205"}, + {0x1056, "\042\026\176\167\205"}, + {0x1057, "\042\026\176\355\114\205"}, + {0x1058, "\042\026\176\211\205"}, + {0x1059, "\042\026\176\355\206\205"}, + {0x10A0, "\001\146\253\357\064"}, + {0x10A1, "\001\146\253\360\066"}, + {0x10A2, "\001\146\253\360\257"}, + {0x10A3, "\001\146\253\360\211"}, + {0x10A4, "\001\146\253\377\016"}, + {0x10A5, "\001\146\253\360\002"}, + {0x10A6, "\001\146\253\362\150"}, + {0x10A7, "\001\146\253\357\354"}, + {0x10A8, "\001\146\253\357\175"}, + {0x10A9, "\001\146\253\360\364"}, + {0x10AA, "\001\146\253\361\022"}, + {0x10AB, "\001\146\253\357\231"}, + {0x10AC, "\001\146\253\361\105"}, + {0x10AD, "\001\146\253\357\256"}, + {0x10AE, "\001\146\253\372\143"}, + {0x10AF, "\001\146\253\360\356"}, + {0x10B0, "\001\146\253\374\047"}, + {0x10B1, "\001\146\253\361\302"}, + {0x10B2, "\001\146\253\361\351"}, + {0x10B3, "\001\146\253\361\146"}, + {0x10B4, "\001\146\253\361\165"}, + {0x10B5, "\001\146\253\360\373"}, + {0x10B6, "\001\146\253\360\274"}, + {0x10B7, "\001\146\253\361\237"}, + {0x10B8, "\001\146\253\357\077"}, + {0x10B9, "\001\146\253\361\365"}, + {0x10BA, "\001\146\253\362\045"}, + {0x10BB, "\001\146\253\360\215"}, + {0x10BC, "\001\146\253\362\041"}, + {0x10BD, "\001\146\253\361\361"}, + {0x10BE, "\001\146\253\357\217"}, + {0x10BF, "\001\146\253\360\204"}, + {0x10C0, "\001\146\253\360\320"}, + {0x10C1, "\001\146\253\362\153"}, + {0x10C2, "\001\146\253\360\353"}, + {0x10C3, "\001\146\253\362\073"}, + {0x10C4, "\001\146\253\360\316"}, + {0x10C5, "\001\146\253\360\333"}, + {0x10D0, "\001\146\250\357\064"}, + {0x10D1, "\001\146\250\360\066"}, + {0x10D2, "\001\146\250\360\257"}, + {0x10D3, "\001\146\250\360\211"}, + {0x10D4, "\001\146\250\377\017"}, + {0x10D5, "\001\146\250\360\002"}, + {0x10D6, "\001\146\250\362\150"}, + {0x10D7, "\001\146\250\357\354"}, + {0x10D8, "\001\146\250\357\175"}, + {0x10D9, "\001\146\250\360\364"}, + {0x10DA, "\001\146\250\361\022"}, + {0x10DB, "\001\146\250\357\231"}, + {0x10DC, "\001\146\250\361\105"}, + {0x10DD, "\001\146\250\357\256"}, + {0x10DE, "\001\146\250\355\232"}, + {0x10DF, "\001\146\250\360\356"}, + {0x10E0, "\001\146\250\374\033"}, + {0x10E1, "\001\146\250\361\302"}, + {0x10E2, "\001\146\250\361\351"}, + {0x10E3, "\001\146\250\361\146"}, + {0x10E4, "\001\146\250\361\165"}, + {0x10E5, "\001\146\250\360\373"}, + {0x10E6, "\001\146\250\360\274"}, + {0x10E7, "\001\146\250\361\237"}, + {0x10E8, "\001\146\250\357\077"}, + {0x10E9, "\001\146\250\361\365"}, + {0x10EA, "\001\146\250\362\045"}, + {0x10EB, "\001\146\250\360\215"}, + {0x10EC, "\001\146\250\362\041"}, + {0x10ED, "\001\146\250\361\361"}, + {0x10EE, "\001\146\250\357\217"}, + {0x10EF, "\001\146\250\360\204"}, + {0x10F0, "\001\146\250\360\320"}, + {0x10F1, "\001\146\250\362\153"}, + {0x10F2, "\001\146\250\360\353"}, + {0x10F3, "\001\146\250\362\073"}, + {0x10F4, "\001\146\250\360\316"}, + {0x10F5, "\001\146\250\360\333"}, + {0x10F6, "\001\146\250\356\200"}, + {0x10FB, "\355\045\007\357\266\366\302"}, + {0x1100, "\014\117\355\333"}, + {0x1101, "\014\117\357\040"}, + {0x1102, "\014\117\355\337"}, + {0x1103, "\014\117\355\360"}, + {0x1104, "\014\117\357\340"}, + {0x1105, "\014\117\355\350"}, + {0x1106, "\014\117\355\335"}, + {0x1107, "\014\117\355\345"}, + {0x1108, "\014\117\357\336"}, + {0x1109, "\014\117\355\351"}, + {0x110A, "\014\117\357\041"}, + {0x110B, "\014\117\355\327"}, + {0x110C, "\014\117\355\276"}, + {0x110D, "\014\117\357\337"}, + {0x110E, "\014\117\355\356"}, + {0x110F, "\014\117\355\330"}, + {0x1110, "\014\117\355\355"}, + {0x1111, "\014\117\355\344"}, + {0x1112, "\014\117\355\325"}, + {0x1113, "\014\117\361\111"}, + {0x1114, "\014\117\361\335"}, + {0x1115, "\014\117\357\247"}, + {0x1116, "\014\117\371\247"}, + {0x1117, "\014\117\362\006"}, + {0x1118, "\014\117\361\264"}, + {0x1119, "\014\117\361\336"}, + {0x111A, "\014\117\357\023"}, + {0x111B, "\014\117\367\363"}, + {0x111C, "\014\117\357\235"}, + {0x111D, "\014\117\357\213"}, + {0x111E, "\014\117\361\172"}, + {0x111F, "\014\117\372\237"}, + {0x1120, "\014\117\361\200"}, + {0x1121, "\014\117\357\002"}, + {0x1122, "\014\117\361\174"}, + {0x1123, "\014\117\361\175"}, + {0x1124, "\014\117\372\241"}, + {0x1125, "\014\117\372\243"}, + {0x1126, "\014\117\372\242"}, + {0x1127, "\014\117\361\177"}, + {0x1128, "\014\117\372\244"}, + {0x1129, "\014\117\361\176"}, + {0x112A, "\014\117\361\173"}, + {0x112B, "\014\117\357\215"}, + {0x112C, "\014\117\360\365"}, + {0x112D, "\014\117\357\326"}, + {0x112E, "\014\117\361\320"}, + {0x112F, "\014\117\357\330"}, + {0x1130, "\014\117\361\321"}, + {0x1131, "\014\117\374\330"}, + {0x1132, "\014\117\357\327"}, + {0x1133, "\014\117\374\332"}, + {0x1134, "\014\117\374\333"}, + {0x1135, "\014\117\374\326"}, + {0x1136, "\014\117\361\322"}, + {0x1137, "\014\117\374\335"}, + {0x1138, "\014\117\374\327"}, + {0x1139, "\014\117\374\334"}, + {0x113A, "\014\117\374\331"}, + {0x113B, "\014\117\374\325"}, + {0x113C, "\014\117\375\117"}, + {0x113D, "\014\117\375\120"}, + {0x113E, "\014\117\375\140"}, + {0x113F, "\014\117\375\141"}, + {0x1140, "\014\117\357\265"}, + {0x1141, "\014\117\360\354"}, + {0x1142, "\014\117\367\254"}, + {0x1143, "\014\117\367\243"}, + {0x1144, "\014\117\367\246"}, + {0x1145, "\014\117\367\247"}, + {0x1146, "\014\117\367\245"}, + {0x1147, "\014\117\357\335"}, + {0x1148, "\014\117\367\253"}, + {0x1149, "\014\117\367\252"}, + {0x114A, "\014\117\367\251"}, + {0x114B, "\014\117\367\244"}, + {0x114C, "\014\117\360\012"}, + {0x114D, "\014\117\375\136"}, + {0x114E, "\014\117\375\123"}, + {0x114F, "\014\117\375\121"}, + {0x1150, "\014\117\375\144"}, + {0x1151, "\014\117\375\142"}, + {0x1152, "\014\117\375\125"}, + {0x1153, "\014\117\375\124"}, + {0x1154, "\014\117\375\122"}, + {0x1155, "\014\117\375\143"}, + {0x1156, "\014\117\361\151"}, + {0x1157, "\014\117\357\214"}, + {0x1158, "\014\117\361\334"}, + {0x1159, "\014\117\360\013"}, + {0x115F, "\356\145\014\117"}, + {0x1160, "\356\145\014\163"}, + {0x1161, "\014\163\063"}, + {0x1162, "\014\163\356\136"}, + {0x1163, "\014\163\305"}, + {0x1164, "\014\163\360\016"}, + {0x1165, "\014\163\064"}, + {0x1166, "\014\163\217"}, + {0x1167, "\014\163\355\040"}, + {0x1168, "\014\163\355\303"}, + {0x1169, "\014\163\306"}, + {0x116A, "\014\163\355\050"}, + {0x116B, "\014\163\360\010"}, + {0x116C, "\014\163\356\011"}, + {0x116D, "\014\163\356\273"}, + {0x116E, "\014\163\113"}, + {0x116F, "\014\163\355\150"}, + {0x1170, "\014\163\356\271"}, + {0x1171, "\014\163\355\362"}, + {0x1172, "\014\163\355\151"}, + {0x1173, "\014\163\360\033"}, + {0x1174, "\014\163\360\034"}, + {0x1175, "\014\163\103"}, + {0x1176, "\014\163\362\270"}, + {0x1177, "\014\163\362\267"}, + {0x1178, "\014\163\376\151"}, + {0x1179, "\014\163\376\150"}, + {0x117A, "\014\163\372\065"}, + {0x117B, "\014\163\372\064"}, + {0x117C, "\014\163\372\066"}, + {0x117D, "\014\163\376\170"}, + {0x117E, "\014\163\376\167"}, + {0x117F, "\014\163\377\056"}, + {0x1180, "\014\163\377\061"}, + {0x1181, "\014\163\377\060"}, + {0x1182, "\014\163\377\062"}, + {0x1183, "\014\163\377\057"}, + {0x1184, "\014\163\362\136"}, + {0x1185, "\014\163\362\137"}, + {0x1186, "\014\163\376\232"}, + {0x1187, "\014\163\376\233"}, + {0x1188, "\014\163\362\135"}, + {0x1189, "\014\163\372\117"}, + {0x118A, "\014\163\372\123"}, + {0x118B, "\014\163\372\120"}, + {0x118C, "\014\163\372\122"}, + {0x118D, "\014\163\372\121"}, + {0x118E, "\014\163\376\173"}, + {0x118F, "\014\163\376\174"}, + {0x1190, "\014\163\376\176"}, + {0x1191, "\014\163\362\121"}, + {0x1192, "\014\163\362\122"}, + {0x1193, "\014\163\376\175"}, + {0x1194, "\014\163\362\120"}, + {0x1195, "\014\163\377\066"}, + {0x1196, "\014\163\377\067"}, + {0x1197, "\014\163\377\070"}, + {0x1198, "\014\163\367\164"}, + {0x1199, "\014\163\367\167"}, + {0x119A, "\014\163\367\170"}, + {0x119B, "\014\163\367\166"}, + {0x119C, "\014\163\367\171"}, + {0x119D, "\014\163\367\165"}, + {0x119E, "\014\163\360\053"}, + {0x119F, "\014\163\362\367"}, + {0x11A0, "\014\163\362\370"}, + {0x11A1, "\014\163\362\366"}, + {0x11A2, "\014\163\374\371"}, + {0x11A8, "\014\133\355\333"}, + {0x11A9, "\014\133\357\040"}, + {0x11AA, "\014\133\357\221"}, + {0x11AB, "\014\133\355\337"}, + {0x11AC, "\014\133\357\246"}, + {0x11AD, "\014\133\357\245"}, + {0x11AE, "\014\133\355\360"}, + {0x11AF, "\014\133\355\350"}, + {0x11B0, "\014\133\357\307"}, + {0x11B1, "\014\133\357\310"}, + {0x11B2, "\014\133\357\312"}, + {0x11B3, "\014\133\357\313"}, + {0x11B4, "\014\133\357\314"}, + {0x11B5, "\014\133\357\311"}, + {0x11B6, "\014\133\357\023"}, + {0x11B7, "\014\133\355\335"}, + {0x11B8, "\014\133\355\345"}, + {0x11B9, "\014\133\357\002"}, + {0x11BA, "\014\133\355\351"}, + {0x11BB, "\014\133\357\041"}, + {0x11BC, "\014\133\355\327"}, + {0x11BD, "\014\133\355\276"}, + {0x11BE, "\014\133\355\356"}, + {0x11BF, "\014\133\355\330"}, + {0x11C0, "\014\133\355\355"}, + {0x11C1, "\014\133\355\344"}, + {0x11C2, "\014\133\355\325"}, + {0x11C3, "\014\133\370\024"}, + {0x11C4, "\014\133\370\025"}, + {0x11C5, "\014\133\361\111"}, + {0x11C6, "\014\133\357\247"}, + {0x11C7, "\014\133\361\113"}, + {0x11C8, "\014\133\361\112"}, + {0x11C9, "\014\133\371\250"}, + {0x11CA, "\014\133\362\006"}, + {0x11CB, "\014\133\375\205"}, + {0x11CC, "\014\133\361\263"}, + {0x11CD, "\014\133\361\264"}, + {0x11CE, "\014\133\361\267"}, + {0x11CF, "\014\133\374\101"}, + {0x11D0, "\014\133\361\336"}, + {0x11D1, "\014\133\374\075"}, + {0x11D2, "\014\133\374\076"}, + {0x11D3, "\014\133\361\266"}, + {0x11D4, "\014\133\374\077"}, + {0x11D5, "\014\133\374\074"}, + {0x11D6, "\014\133\374\100"}, + {0x11D7, "\014\133\361\265"}, + {0x11D8, "\014\133\374\073"}, + {0x11D9, "\014\133\361\270"}, + {0x11DA, "\014\133\370\376"}, + {0x11DB, "\014\133\370\377"}, + {0x11DC, "\014\133\357\235"}, + {0x11DD, "\014\133\361\057"}, + {0x11DE, "\014\133\371\001"}, + {0x11DF, "\014\133\361\056"}, + {0x11E0, "\014\133\371\002"}, + {0x11E1, "\014\133\370\375"}, + {0x11E2, "\014\133\357\213"}, + {0x11E3, "\014\133\372\240"}, + {0x11E4, "\014\133\361\173"}, + {0x11E5, "\014\133\372\236"}, + {0x11E6, "\014\133\357\215"}, + {0x11E7, "\014\133\357\326"}, + {0x11E8, "\014\133\357\330"}, + {0x11E9, "\014\133\361\321"}, + {0x11EA, "\014\133\357\327"}, + {0x11EB, "\014\133\357\265"}, + {0x11EC, "\014\133\360\354"}, + {0x11ED, "\014\133\367\250"}, + {0x11EE, "\014\133\357\335"}, + {0x11EF, "\014\133\367\242"}, + {0x11F0, "\014\133\360\012"}, + {0x11F1, "\014\133\362\113"}, + {0x11F2, "\014\133\362\112"}, + {0x11F3, "\014\133\361\151"}, + {0x11F4, "\014\133\357\214"}, + {0x11F5, "\014\133\366\352"}, + {0x11F6, "\014\133\366\354"}, + {0x11F7, "\014\133\366\351"}, + {0x11F8, "\014\133\366\353"}, + {0x11F9, "\014\133\360\013"}, + {0x1200, "\002\023\367\156"}, + {0x1201, "\002\023\360\332"}, + {0x1202, "\002\023\355\255"}, + {0x1203, "\002\023\314"}, + {0x1204, "\002\023\356\016"}, + {0x1205, "\002\023\356\072"}, + {0x1206, "\002\023\355\107"}, + {0x1208, "\002\023\370\236"}, + {0x1209, "\002\023\356\352"}, + {0x120A, "\002\023\356\077"}, + {0x120B, "\002\023\033"}, + {0x120C, "\002\023\356\222"}, + {0x120D, "\002\023\050"}, + {0x120E, "\002\023\355\170"}, + {0x120F, "\002\023\370\226"}, + {0x1210, "\002\023\366\340"}, + {0x1211, "\002\023\366\336"}, + {0x1212, "\002\023\366\334"}, + {0x1213, "\002\023\366\331"}, + {0x1214, "\002\023\366\342"}, + {0x1215, "\002\023\366\332"}, + {0x1216, "\002\023\366\335"}, + {0x1217, "\002\023\366\337"}, + {0x1218, "\002\023\371\053"}, + {0x1219, "\002\023\356\224"}, + {0x121A, "\002\023\355\230"}, + {0x121B, "\002\023\277"}, + {0x121C, "\002\023\356\356"}, + {0x121D, "\002\023\355\334"}, + {0x121E, "\002\023\355\136"}, + {0x121F, "\002\023\371\044"}, + {0x1220, "\002\023\377\014"}, + {0x1221, "\002\023\377\012"}, + {0x1222, "\002\023\377\010"}, + {0x1223, "\002\023\355\152"}, + {0x1224, "\002\023\377\015"}, + {0x1225, "\002\023\377\007"}, + {0x1226, "\002\023\377\011"}, + {0x1227, "\002\023\377\013"}, + {0x1228, "\002\023\374\166"}, + {0x1229, "\002\023\357\315"}, + {0x122A, "\002\023\355\347"}, + {0x122B, "\002\023\322"}, + {0x122C, "\002\023\356\040"}, + {0x122D, "\002\023\356\035"}, + {0x122E, "\002\023\355\174"}, + {0x122F, "\002\023\374\156"}, + {0x1230, "\002\023\375\063"}, + {0x1231, "\002\023\357\034"}, + {0x1232, "\002\023\355\275"}, + {0x1233, "\002\023\355\004"}, + {0x1234, "\002\023\356\121"}, + {0x1235, "\002\023\356\042"}, + {0x1236, "\002\023\355\070"}, + {0x1237, "\002\023\375\051"}, + {0x1238, "\002\023\363\334"}, + {0x1239, "\002\023\360\120"}, + {0x123A, "\002\023\356\310"}, + {0x123B, "\002\023\355\032"}, + {0x123C, "\002\023\356\311"}, + {0x123D, "\002\023\356\151"}, + {0x123E, "\002\023\356\054"}, + {0x123F, "\002\023\363\325"}, + {0x1240, "\002\023\374\023"}, + {0x1241, "\002\023\373\362"}, + {0x1242, "\002\023\357\301"}, + {0x1243, "\002\023\356\245"}, + {0x1244, "\002\023\374\027"}, + {0x1245, "\002\023\373\334"}, + {0x1246, "\002\023\357\302"}, + {0x1248, "\002\023\374\013"}, + {0x124A, "\002\023\374\012"}, + {0x124B, "\002\023\374\010"}, + {0x124C, "\002\023\374\014"}, + {0x124D, "\002\023\374\011"}, + {0x1250, "\002\023\373\347"}, + {0x1251, "\002\023\373\341"}, + {0x1252, "\002\023\373\337"}, + {0x1253, "\002\023\373\335"}, + {0x1254, "\002\023\373\350"}, + {0x1255, "\002\023\373\336"}, + {0x1256, "\002\023\373\340"}, + {0x1258, "\002\023\373\345"}, + {0x125A, "\002\023\373\344"}, + {0x125B, "\002\023\373\342"}, + {0x125C, "\002\023\373\346"}, + {0x125D, "\002\023\373\343"}, + {0x1260, "\002\023\363\207"}, + {0x1261, "\002\023\363\152"}, + {0x1262, "\002\023\356\304"}, + {0x1263, "\002\023\355\052"}, + {0x1264, "\002\023\356\147"}, + {0x1265, "\002\023\356\142"}, + {0x1266, "\002\023\355\377"}, + {0x1267, "\002\023\363\200"}, + {0x1268, "\002\023\376\071"}, + {0x1269, "\002\023\376\053"}, + {0x126A, "\002\023\360\001"}, + {0x126B, "\002\023\355\241"}, + {0x126C, "\002\023\357\054"}, + {0x126D, "\002\023\357\053"}, + {0x126E, "\002\023\356\132"}, + {0x126F, "\002\023\376\062"}, + {0x1270, "\002\023\375\353"}, + {0x1271, "\002\023\375\234"}, + {0x1272, "\002\023\355\217"}, + {0x1273, "\002\023\311"}, + {0x1274, "\002\023\355\301"}, + {0x1275, "\002\023\356\125"}, + {0x1276, "\002\023\355\176"}, + {0x1277, "\002\023\375\331"}, + {0x1278, "\002\023\375\151"}, + {0x1279, "\002\023\361\366"}, + {0x127A, "\002\023\357\351"}, + {0x127B, "\002\023\355\024"}, + {0x127C, "\002\023\355\071"}, + {0x127D, "\002\023\357\350"}, + {0x127E, "\002\023\355\277"}, + {0x127F, "\002\023\375\147"}, + {0x1280, "\002\023\376\146"}, + {0x1281, "\002\023\376\127"}, + {0x1282, "\002\023\357\055"}, + {0x1283, "\002\023\376\114"}, + {0x1284, "\002\023\376\147"}, + {0x1285, "\002\023\376\115"}, + {0x1286, "\002\023\362\106"}, + {0x1288, "\002\023\376\136"}, + {0x128A, "\002\023\376\135"}, + {0x128B, "\002\023\376\133"}, + {0x128C, "\002\023\376\137"}, + {0x128D, "\002\023\376\134"}, + {0x1290, "\002\023\372\057"}, + {0x1291, "\002\023\355\340"}, + {0x1292, "\002\023\244"}, + {0x1293, "\002\023\354"}, + {0x1294, "\002\023\356\231"}, + {0x1295, "\002\023\355\140"}, + {0x1296, "\002\023\355\113"}, + {0x1297, "\002\023\372\001"}, + {0x1298, "\002\023\377\054"}, + {0x1299, "\002\023\377\052"}, + {0x129A, "\002\023\360\030"}, + {0x129B, "\002\023\355\201"}, + {0x129C, "\002\023\360\032"}, + {0x129D, "\002\023\377\051"}, + {0x129E, "\002\023\357\063"}, + {0x129F, "\002\023\377\053"}, + {0x12A0, "\002\023\362\151\355\323"}, + {0x12A1, "\002\023\113\355\323"}, + {0x12A2, "\002\023\103\355\323"}, + {0x12A3, "\002\023\063\355\323"}, + {0x12A4, "\002\023\217\355\323"}, + {0x12A5, "\002\023\130\355\323"}, + {0x12A6, "\002\023\064\355\323"}, + {0x12A7, "\002\023\355\050\355\323"}, + {0x12A8, "\002\023\370\110"}, + {0x12A9, "\002\023\361\003"}, + {0x12AA, "\002\023\355\332"}, + {0x12AB, "\002\023\240"}, + {0x12AC, "\002\023\356\220"}, + {0x12AD, "\002\023\355\331"}, + {0x12AE, "\002\023\355\167"}, + {0x12B0, "\002\023\370\071"}, + {0x12B2, "\002\023\361\014"}, + {0x12B3, "\002\023\361\013"}, + {0x12B4, "\002\023\361\015"}, + {0x12B5, "\002\023\370\066"}, + {0x12B8, "\002\023\370\105"}, + {0x12B9, "\002\023\370\077"}, + {0x12BA, "\002\023\370\075"}, + {0x12BB, "\002\023\370\073"}, + {0x12BC, "\002\023\370\106"}, + {0x12BD, "\002\023\370\074"}, + {0x12BE, "\002\023\370\076"}, + {0x12C0, "\002\023\370\103"}, + {0x12C2, "\002\023\370\102"}, + {0x12C3, "\002\023\370\100"}, + {0x12C4, "\002\023\370\104"}, + {0x12C5, "\002\023\370\101"}, + {0x12C8, "\002\023\376\112"}, + {0x12C9, "\002\023\362\104"}, + {0x12CA, "\002\023\355\362"}, + {0x12CB, "\002\023\355\050"}, + {0x12CC, "\002\023\356\271"}, + {0x12CD, "\002\023\356\270"}, + {0x12CE, "\002\023\355\150"}, + {0x12D0, "\002\023\362\151\356\032"}, + {0x12D1, "\002\023\113\356\032"}, + {0x12D2, "\002\023\103\356\032"}, + {0x12D3, "\002\023\063\356\032"}, + {0x12D4, "\002\023\217\356\032"}, + {0x12D5, "\002\023\130\356\032"}, + {0x12D6, "\002\023\064\356\032"}, + {0x12D8, "\002\023\376\361"}, + {0x12D9, "\002\023\362\144"}, + {0x12DA, "\002\023\356\275"}, + {0x12DB, "\002\023\355\101"}, + {0x12DC, "\002\023\355\367"}, + {0x12DD, "\002\023\356\274"}, + {0x12DE, "\002\023\356\135"}, + {0x12DF, "\002\023\376\317"}, + {0x12E0, "\002\023\367\352"}, + {0x12E1, "\002\023\367\322"}, + {0x12E2, "\002\023\360\360"}, + {0x12E3, "\002\023\357\206"}, + {0x12E4, "\002\023\355\204"}, + {0x12E5, "\002\023\367\260"}, + {0x12E6, "\002\023\357\211"}, + {0x12E7, "\002\023\367\343"}, + {0x12E8, "\002\023\376\224"}, + {0x12E9, "\002\023\355\151"}, + {0x12EA, "\002\023\003"}, + {0x12EB, "\002\023\305"}, + {0x12EC, "\002\023\355\303"}, + {0x12ED, "\002\023\362\110"}, + {0x12EE, "\002\023\355\040"}, + {0x12F0, "\002\023\365\345"}, + {0x12F1, "\002\023\360\212"}, + {0x12F2, "\002\023\356\062"}, + {0x12F3, "\002\023\355\002"}, + {0x12F4, "\002\023\356\166"}, + {0x12F5, "\002\023\007"}, + {0x12F6, "\002\023\355\252"}, + {0x12F7, "\002\023\365\340"}, + {0x12F8, "\002\023\365\235"}, + {0x12F9, "\002\023\365\222"}, + {0x12FA, "\002\023\360\164"}, + {0x12FB, "\002\023\355\120"}, + {0x12FC, "\002\023\365\236"}, + {0x12FD, "\002\023\360\163"}, + {0x12FE, "\002\023\360\165"}, + {0x12FF, "\002\023\365\234"}, + {0x1300, "\002\023\365\312"}, + {0x1301, "\002\023\357\140"}, + {0x1302, "\002\023\357\137"}, + {0x1303, "\002\023\355\104"}, + {0x1304, "\002\023\356\063"}, + {0x1305, "\002\023\360\206"}, + {0x1306, "\002\023\360\207"}, + {0x1307, "\002\023\365\311"}, + {0x1308, "\002\023\366\275"}, + {0x1309, "\002\023\357\155"}, + {0x130A, "\002\023\356\204"}, + {0x130B, "\002\023\355\017"}, + {0x130C, "\002\023\360\313"}, + {0x130D, "\002\023\356\203"}, + {0x130E, "\002\023\356\071"}, + {0x1310, "\002\023\366\272"}, + {0x1312, "\002\023\366\271"}, + {0x1313, "\002\023\366\267"}, + {0x1314, "\002\023\366\273"}, + {0x1315, "\002\023\366\270"}, + {0x1318, "\002\023\366\206"}, + {0x1319, "\002\023\366\173"}, + {0x131A, "\002\023\360\267"}, + {0x131B, "\002\023\360\265"}, + {0x131C, "\002\023\366\207"}, + {0x131D, "\002\023\360\266"}, + {0x131E, "\002\023\360\270"}, + {0x1320, "\002\023\375\177"}, + {0x1321, "\002\023\362\002"}, + {0x1322, "\002\023\356\127"}, + {0x1323, "\002\023\355\072"}, + {0x1324, "\002\023\356\130"}, + {0x1325, "\002\023\361\377"}, + {0x1326, "\002\023\355\077"}, + {0x1327, "\002\023\375\175"}, + {0x1328, "\002\023\375\300"}, + {0x1329, "\002\023\375\276"}, + {0x132A, "\002\023\375\274"}, + {0x132B, "\002\023\375\272"}, + {0x132C, "\002\023\375\301"}, + {0x132D, "\002\023\375\273"}, + {0x132E, "\002\023\375\275"}, + {0x132F, "\002\023\375\277"}, + {0x1330, "\002\023\372\222"}, + {0x1331, "\002\023\372\216"}, + {0x1332, "\002\023\356\241"}, + {0x1333, "\002\023\355\124"}, + {0x1334, "\002\023\372\223"}, + {0x1335, "\002\023\372\212"}, + {0x1336, "\002\023\356\033"}, + {0x1337, "\002\023\372\221"}, + {0x1338, "\002\023\375\267"}, + {0x1339, "\002\023\357\371"}, + {0x133A, "\002\023\357\367"}, + {0x133B, "\002\023\355\177"}, + {0x133C, "\002\023\356\047"}, + {0x133D, "\002\023\362\042"}, + {0x133E, "\002\023\357\370"}, + {0x133F, "\002\023\375\266"}, + {0x1340, "\002\023\375\351"}, + {0x1341, "\002\023\375\350"}, + {0x1342, "\002\023\375\346"}, + {0x1343, "\002\023\375\344"}, + {0x1344, "\002\023\375\352"}, + {0x1345, "\002\023\375\345"}, + {0x1346, "\002\023\375\347"}, + {0x1348, "\002\023\366\126"}, + {0x1349, "\002\023\357\151"}, + {0x134A, "\002\023\356\200"}, + {0x134B, "\002\023\355\225"}, + {0x134C, "\002\023\356\202"}, + {0x134D, "\002\023\366\052"}, + {0x134E, "\002\023\356\014"}, + {0x134F, "\002\023\366\120"}, + {0x1350, "\002\023\373\322"}, + {0x1351, "\002\023\361\213"}, + {0x1352, "\002\023\355\233"}, + {0x1353, "\002\023\327"}, + {0x1354, "\002\023\355\172"}, + {0x1355, "\002\023\356\375"}, + {0x1356, "\002\023\355\273"}, + {0x1357, "\002\023\373\314"}, + {0x1358, "\002\023\374\165"}, + {0x1359, "\002\023\371\052"}, + {0x135A, "\002\023\366\125"}, + {0x1361, "\355\073\023"}, + {0x1362, "\037\332"}, + {0x1363, "\330\023"}, + {0x1364, "\356\104\332"}, + {0x1365, "\355\103\332"}, + {0x1366, "\355\103\007\373\300\332"}, + {0x1367, "\037\355\313\332"}, + {0x1368, "\355\045\007\357\266\332"}, + {0x1369, "\024\332\110"}, + {0x136A, "\024\332\127"}, + {0x136B, "\024\332\136"}, + {0x136C, "\024\332\220"}, + {0x136D, "\024\332\230"}, + {0x136E, "\024\332\255"}, + {0x136F, "\024\332\252"}, + {0x1370, "\024\332\226"}, + {0x1371, "\024\332\257"}, + {0x1372, "\210\332\355\034"}, + {0x1373, "\210\332\356\050"}, + {0x1374, "\210\332\357\365"}, + {0x1375, "\210\332\373\371"}, + {0x1376, "\210\332\357\101"}, + {0x1377, "\210\332\374\347"}, + {0x1378, "\210\332\374\350"}, + {0x1379, "\210\332\373\375"}, + {0x137A, "\210\332\373\374"}, + {0x137B, "\210\332\355\245"}, + {0x137C, "\210\332\355\034\355\271"}, + {0x13A0, "\002\126\063"}, + {0x13A1, "\002\126\217"}, + {0x13A2, "\002\126\103"}, + {0x13A3, "\002\126\064"}, + {0x13A4, "\002\126\113"}, + {0x13A5, "\002\126\376\367"}, + {0x13A6, "\002\126\355\017"}, + {0x13A7, "\002\126\240"}, + {0x13A8, "\002\126\355\254"}, + {0x13A9, "\002\126\366\251"}, + {0x13AA, "\002\126\356\071"}, + {0x13AB, "\002\126\357\155"}, + {0x13AC, "\002\126\366\266"}, + {0x13AD, "\002\126\314"}, + {0x13AE, "\002\126\356\016"}, + {0x13AF, "\002\126\355\255"}, + {0x13B0, "\002\126\355\107"}, + {0x13B1, "\002\126\360\332"}, + {0x13B2, "\002\126\367\160"}, + {0x13B3, "\002\126\033"}, + {0x13B4, "\002\126\356\222"}, + {0x13B5, "\002\126\356\077"}, + {0x13B6, "\002\126\355\170"}, + {0x13B7, "\002\126\356\352"}, + {0x13B8, "\002\126\370\237"}, + {0x13B9, "\002\126\277"}, + {0x13BA, "\002\126\356\356"}, + {0x13BB, "\002\126\355\230"}, + {0x13BC, "\002\126\355\136"}, + {0x13BD, "\002\126\356\224"}, + {0x13BE, "\002\126\354"}, + {0x13BF, "\002\126\360\324"}, + {0x13C0, "\002\126\371\077"}, + {0x13C1, "\002\126\356\231"}, + {0x13C2, "\002\126\244"}, + {0x13C3, "\002\126\355\113"}, + {0x13C4, "\002\126\355\340"}, + {0x13C5, "\002\126\372\060"}, + {0x13C6, "\002\126\361\013"}, + {0x13C7, "\002\126\361\015"}, + {0x13C8, "\002\126\361\014"}, + {0x13C9, "\002\126\370\067"}, + {0x13CA, "\002\126\370\070"}, + {0x13CB, "\002\126\370\072"}, + {0x13CC, "\002\126\355\004"}, + {0x13CD, "\002\126\223"}, + {0x13CE, "\002\126\356\121"}, + {0x13CF, "\002\126\355\275"}, + {0x13D0, "\002\126\355\070"}, + {0x13D1, "\002\126\357\034"}, + {0x13D2, "\002\126\375\064"}, + {0x13D3, "\002\126\355\002"}, + {0x13D4, "\002\126\311"}, + {0x13D5, "\002\126\356\166"}, + {0x13D6, "\002\126\355\301"}, + {0x13D7, "\002\126\356\062"}, + {0x13D8, "\002\126\355\217"}, + {0x13D9, "\002\126\355\252"}, + {0x13DA, "\002\126\360\212"}, + {0x13DB, "\002\126\365\347"}, + {0x13DC, "\002\126\360\210"}, + {0x13DD, "\002\126\362\012"}, + {0x13DE, "\002\126\362\022"}, + {0x13DF, "\002\126\362\017"}, + {0x13E0, "\002\126\362\020"}, + {0x13E1, "\002\126\362\021"}, + {0x13E2, "\002\126\375\223"}, + {0x13E3, "\002\126\355\177"}, + {0x13E4, "\002\126\356\047"}, + {0x13E5, "\002\126\357\367"}, + {0x13E6, "\002\126\357\370"}, + {0x13E7, "\002\126\357\371"}, + {0x13E8, "\002\126\375\270"}, + {0x13E9, "\002\126\355\050"}, + {0x13EA, "\002\126\356\271"}, + {0x13EB, "\002\126\355\362"}, + {0x13EC, "\002\126\355\150"}, + {0x13ED, "\002\126\362\104"}, + {0x13EE, "\002\126\362\105"}, + {0x13EF, "\002\126\305"}, + {0x13F0, "\002\126\355\303"}, + {0x13F1, "\002\126\003"}, + {0x13F2, "\002\126\355\040"}, + {0x13F3, "\002\126\355\151"}, + {0x13F4, "\002\126\376\225"}, + {0x1401, "\002\011\217"}, + {0x1402, "\002\011\377\003"}, + {0x1403, "\002\011\103"}, + {0x1404, "\002\011\315"}, + {0x1405, "\002\011\064"}, + {0x1406, "\002\011\306"}, + {0x1407, "\002\011\306\355\156"}, + {0x1408, "\002\011\217\054"}, + {0x1409, "\002\011\103\054"}, + {0x140A, "\002\011\063"}, + {0x140B, "\002\011\323"}, + {0x140C, "\002\011\356\235"}, + {0x140D, "\002\011\356\235\112\114\123"}, + {0x140E, "\002\011\356\370"}, + {0x140F, "\002\011\356\370\112\114\123"}, + {0x1410, "\002\011\361\150"}, + {0x1411, "\002\011\361\150\112\114\123"}, + {0x1412, "\002\011\356\371"}, + {0x1413, "\002\011\356\371\112\114\123"}, + {0x1414, "\002\011\357\263"}, + {0x1415, "\002\011\357\263\112\114\123"}, + {0x1416, "\002\011\357\263\355\112"}, + {0x1417, "\002\011\356\234"}, + {0x1418, "\002\011\356\234\112\114\123"}, + {0x1419, "\002\011\357\262"}, + {0x141A, "\002\011\357\262\112\114\123"}, + {0x141B, "\002\011\357\262\355\112"}, + {0x141C, "\002\011\307"}, + {0x141D, "\002\011\113\355\156"}, + {0x141E, "\002\011\355\224\007\355\226"}, + {0x141F, "\002\011\355\163\021\062"}, + {0x1420, "\002\011\355\163\021\067"}, + {0x1421, "\002\011\355\163\356\005\320"}, + {0x1422, "\002\011\355\163\356\005\344"}, + {0x1423, "\002\011\355\163\356\005\044\053"}, + {0x1424, "\002\011\355\163\272"}, + {0x1425, "\002\011\355\163\070\021\062"}, + {0x1426, "\002\011\355\163\360\213\362\033\357\377\365\112"}, + {0x1427, "\002\011\355\163\037\355\137"}, + {0x1428, "\002\011\355\163\355\126\242\365\111"}, + {0x1429, "\002\011\355\163\057\214"}, + {0x142A, "\002\011\355\163\355\014\015\050\101"}, + {0x142B, "\002\011\356\010"}, + {0x142C, "\002\011\367\215"}, + {0x142D, "\002\011\372\101"}, + {0x142E, "\002\011\362\332"}, + {0x142F, "\002\011\355\172"}, + {0x1430, "\002\011\373\326"}, + {0x1431, "\002\011\355\233"}, + {0x1432, "\002\011\361\235"}, + {0x1433, "\002\011\355\273"}, + {0x1434, "\002\011\361\236"}, + {0x1435, "\002\011\361\236\355\156"}, + {0x1436, "\002\011\356\016\054"}, + {0x1437, "\002\011\355\255\054"}, + {0x1438, "\002\011\327"}, + {0x1439, "\002\011\373\323"}, + {0x143A, "\002\011\361\217"}, + {0x143B, "\002\011\361\217\112\114\123"}, + {0x143C, "\002\011\361\215"}, + {0x143D, "\002\011\361\215\112\114\123"}, + {0x143E, "\002\011\361\220"}, + {0x143F, "\002\011\361\220\112\114\123"}, + {0x1440, "\002\011\361\216"}, + {0x1441, "\002\011\361\216\112\114\123"}, + {0x1442, "\002\011\361\221"}, + {0x1443, "\002\011\361\221\112\114\123"}, + {0x1444, "\002\011\361\214"}, + {0x1445, "\002\011\361\214\112\114\123"}, + {0x1446, "\002\011\357\276"}, + {0x1447, "\002\011\357\276\112\114\123"}, + {0x1448, "\002\011\357\276\355\156"}, + {0x1449, "\002\011\355\021"}, + {0x144A, "\002\011\355\021\112\114\123"}, + {0x144B, "\002\011\237\054"}, + {0x144C, "\002\011\355\301"}, + {0x144D, "\002\011\375\356"}, + {0x144E, "\002\011\355\217"}, + {0x144F, "\002\011\375\361"}, + {0x1450, "\002\011\355\176"}, + {0x1451, "\002\011\356\263"}, + {0x1452, "\002\011\356\263\355\156"}, + {0x1453, "\002\011\356\166\054"}, + {0x1454, "\002\011\356\062\054"}, + {0x1455, "\002\011\311"}, + {0x1456, "\002\011\375\354"}, + {0x1457, "\002\011\362\030"}, + {0x1458, "\002\011\362\030\112\114\123"}, + {0x1459, "\002\011\362\025"}, + {0x145A, "\002\011\362\025\112\114\123"}, + {0x145B, "\002\011\362\031"}, + {0x145C, "\002\011\362\031\112\114\123"}, + {0x145D, "\002\011\362\026"}, + {0x145E, "\002\011\362\026\112\114\123"}, + {0x145F, "\002\011\362\032"}, + {0x1460, "\002\011\362\032\112\114\123"}, + {0x1461, "\002\011\362\023"}, + {0x1462, "\002\011\362\023\112\114\123"}, + {0x1463, "\002\011\357\363"}, + {0x1464, "\002\011\357\363\112\114\123"}, + {0x1465, "\002\011\357\363\355\112"}, + {0x1466, "\002\011\261"}, + {0x1467, "\002\011\362\053"}, + {0x1468, "\002\011\362\051"}, + {0x1469, "\002\011\362\052"}, + {0x146A, "\002\011\355\100"}, + {0x146B, "\002\011\356\220"}, + {0x146C, "\002\011\370\114"}, + {0x146D, "\002\011\355\332"}, + {0x146E, "\002\011\370\117"}, + {0x146F, "\002\011\355\167"}, + {0x1470, "\002\011\361\016"}, + {0x1471, "\002\011\361\016\355\156"}, + {0x1472, "\002\011\240"}, + {0x1473, "\002\011\370\111"}, + {0x1474, "\002\011\361\007"}, + {0x1475, "\002\011\361\007\112\114\123"}, + {0x1476, "\002\011\361\005"}, + {0x1477, "\002\011\361\005\112\114\123"}, + {0x1478, "\002\011\361\010"}, + {0x1479, "\002\011\361\010\112\114\123"}, + {0x147A, "\002\011\361\006"}, + {0x147B, "\002\011\361\006\112\114\123"}, + {0x147C, "\002\011\361\011"}, + {0x147D, "\002\011\361\011\112\114\123"}, + {0x147E, "\002\011\361\004"}, + {0x147F, "\002\011\361\004\112\114\123"}, + {0x1480, "\002\011\357\222"}, + {0x1481, "\002\011\357\222\112\114\123"}, + {0x1482, "\002\011\357\222\355\112"}, + {0x1483, "\002\011\352"}, + {0x1484, "\002\011\361\003"}, + {0x1485, "\002\011\370\115\356\172\212\357\042"}, + {0x1486, "\002\011\370\016\356\172\212\357\042"}, + {0x1487, "\002\011\370\035\356\172\212\357\042"}, + {0x1488, "\002\011\367\354\356\172\212\357\042"}, + {0x1489, "\002\011\355\071"}, + {0x148A, "\002\011\375\153"}, + {0x148B, "\002\011\357\351"}, + {0x148C, "\002\011\375\154"}, + {0x148D, "\002\011\355\277"}, + {0x148E, "\002\011\361\375"}, + {0x148F, "\002\011\361\375\355\156"}, + {0x1490, "\002\011\355\024"}, + {0x1491, "\002\011\375\152"}, + {0x1492, "\002\011\361\372"}, + {0x1493, "\002\011\361\372\112\114\123"}, + {0x1494, "\002\011\361\370"}, + {0x1495, "\002\011\361\370\112\114\123"}, + {0x1496, "\002\011\361\373"}, + {0x1497, "\002\011\361\373\112\114\123"}, + {0x1498, "\002\011\361\371"}, + {0x1499, "\002\011\361\371\112\114\123"}, + {0x149A, "\002\011\361\374"}, + {0x149B, "\002\011\361\374\112\114\123"}, + {0x149C, "\002\011\361\367"}, + {0x149D, "\002\011\361\367\112\114\123"}, + {0x149E, "\002\011\357\352"}, + {0x149F, "\002\011\357\352\112\114\123"}, + {0x14A0, "\002\011\357\352\355\112"}, + {0x14A1, "\002\011\361\360"}, + {0x14A2, "\002\011\356\257\355\145"}, + {0x14A3, "\002\011\356\356"}, + {0x14A4, "\002\011\371\056"}, + {0x14A5, "\002\011\355\230"}, + {0x14A6, "\002\011\371\066"}, + {0x14A7, "\002\011\355\136"}, + {0x14A8, "\002\011\361\104"}, + {0x14A9, "\002\011\361\104\355\156"}, + {0x14AA, "\002\011\277"}, + {0x14AB, "\002\011\371\054"}, + {0x14AC, "\002\011\361\073"}, + {0x14AD, "\002\011\361\073\112\114\123"}, + {0x14AE, "\002\011\361\070"}, + {0x14AF, "\002\011\361\070\112\114\123"}, + {0x14B0, "\002\011\361\074"}, + {0x14B1, "\002\011\361\074\112\114\123"}, + {0x14B2, "\002\011\361\071"}, + {0x14B3, "\002\011\361\071\112\114\123"}, + {0x14B4, "\002\011\361\075"}, + {0x14B5, "\002\011\361\075\112\114\123"}, + {0x14B6, "\002\011\361\066"}, + {0x14B7, "\002\011\361\066\112\114\123"}, + {0x14B8, "\002\011\357\240"}, + {0x14B9, "\002\011\357\240\112\114\123"}, + {0x14BA, "\002\011\357\240\355\112"}, + {0x14BB, "\002\011\276"}, + {0x14BC, "\002\011\276\112\114\123"}, + {0x14BD, "\002\011\370\352"}, + {0x14BE, "\002\011\276\360\057"}, + {0x14BF, "\002\011\276\355\145"}, + {0x14C0, "\002\011\356\231"}, + {0x14C1, "\002\011\372\062"}, + {0x14C2, "\002\011\244"}, + {0x14C3, "\002\011\372\063"}, + {0x14C4, "\002\011\355\113"}, + {0x14C5, "\002\011\361\133"}, + {0x14C6, "\002\011\361\133\355\156"}, + {0x14C7, "\002\011\354"}, + {0x14C8, "\002\011\361\131"}, + {0x14C9, "\002\011\361\121"}, + {0x14CA, "\002\011\361\121\112\114\123"}, + {0x14CB, "\002\011\361\120"}, + {0x14CC, "\002\011\361\120\112\114\123"}, + {0x14CD, "\002\011\357\252"}, + {0x14CE, "\002\011\357\252\112\114\123"}, + {0x14CF, "\002\011\357\252\355\112"}, + {0x14D0, "\002\011\241"}, + {0x14D1, "\002\011\355\336\054"}, + {0x14D2, "\002\011\371\232"}, + {0x14D3, "\002\011\356\222"}, + {0x14D4, "\002\011\370\245"}, + {0x14D5, "\002\011\356\077"}, + {0x14D6, "\002\011\370\247"}, + {0x14D7, "\002\011\355\170"}, + {0x14D8, "\002\011\361\046"}, + {0x14D9, "\002\011\361\046\355\156"}, + {0x14DA, "\002\011\033"}, + {0x14DB, "\002\011\370\242"}, + {0x14DC, "\002\011\361\042"}, + {0x14DD, "\002\011\361\042\112\114\123"}, + {0x14DE, "\002\011\361\037"}, + {0x14DF, "\002\011\361\037\112\114\123"}, + {0x14E0, "\002\011\361\043"}, + {0x14E1, "\002\011\361\043\112\114\123"}, + {0x14E2, "\002\011\361\040"}, + {0x14E3, "\002\011\361\040\112\114\123"}, + {0x14E4, "\002\011\361\044"}, + {0x14E5, "\002\011\361\044\112\114\123"}, + {0x14E6, "\002\011\361\036"}, + {0x14E7, "\002\011\361\036\112\114\123"}, + {0x14E8, "\002\011\361\041"}, + {0x14E9, "\002\011\361\041\112\114\123"}, + {0x14EA, "\002\011\211"}, + {0x14EB, "\002\011\211\112\114\123"}, + {0x14EC, "\002\011\211\131"}, + {0x14ED, "\002\011\356\121"}, + {0x14EE, "\002\011\375\067"}, + {0x14EF, "\002\011\355\275"}, + {0x14F0, "\002\011\375\073"}, + {0x14F1, "\002\011\355\070"}, + {0x14F2, "\002\011\361\350"}, + {0x14F3, "\002\011\361\350\355\156"}, + {0x14F4, "\002\011\355\004"}, + {0x14F5, "\002\011\375\065"}, + {0x14F6, "\002\011\361\330"}, + {0x14F7, "\002\011\361\330\112\114\123"}, + {0x14F8, "\002\011\361\324"}, + {0x14F9, "\002\011\361\324\112\114\123"}, + {0x14FA, "\002\011\361\331"}, + {0x14FB, "\002\011\361\331\112\114\123"}, + {0x14FC, "\002\011\361\326"}, + {0x14FD, "\002\011\361\326\112\114\123"}, + {0x14FE, "\002\011\361\332"}, + {0x14FF, "\002\011\361\332\112\114\123"}, + {0x1500, "\002\011\357\333"}, + {0x1501, "\002\011\357\333\112\114\123"}, + {0x1502, "\002\011\357\334"}, + {0x1503, "\002\011\357\334\112\114\123"}, + {0x1504, "\002\011\357\334\355\112"}, + {0x1505, "\002\011\223"}, + {0x1506, "\002\011\223\360\057"}, + {0x1507, "\002\011\357\034"}, + {0x1508, "\002\011\223\355\067"}, + {0x1509, "\002\011\374\336\112\007\371\020"}, + {0x150A, "\002\011\374\337\355\112"}, + {0x150B, "\002\011\374\205\355\112"}, + {0x150C, "\002\011\374\366\355\112"}, + {0x150D, "\002\011\375\031\355\112"}, + {0x150E, "\002\011\374\340\355\112"}, + {0x150F, "\002\011\375\030\355\112"}, + {0x1510, "\002\011\356\311"}, + {0x1511, "\002\011\356\310"}, + {0x1512, "\002\011\363\340"}, + {0x1513, "\002\011\356\054"}, + {0x1514, "\002\011\363\342"}, + {0x1515, "\002\011\355\032"}, + {0x1516, "\002\011\363\335"}, + {0x1517, "\002\011\360\125"}, + {0x1518, "\002\011\360\125\112\114\123"}, + {0x1519, "\002\011\360\122"}, + {0x151A, "\002\011\360\122\112\114\123"}, + {0x151B, "\002\011\360\126"}, + {0x151C, "\002\011\360\126\112\114\123"}, + {0x151D, "\002\011\360\123"}, + {0x151E, "\002\011\360\123\112\114\123"}, + {0x151F, "\002\011\360\127"}, + {0x1520, "\002\011\360\127\112\114\123"}, + {0x1521, "\002\011\360\121"}, + {0x1522, "\002\011\360\121\112\114\123"}, + {0x1523, "\002\011\360\124"}, + {0x1524, "\002\011\360\124\112\114\123"}, + {0x1525, "\002\011\357\075"}, + {0x1526, "\002\011\355\303"}, + {0x1527, "\002\011\376\230"}, + {0x1528, "\002\011\003"}, + {0x1529, "\002\011\376\231"}, + {0x152A, "\002\011\355\040"}, + {0x152B, "\002\011\356\273"}, + {0x152C, "\002\011\356\273\355\156"}, + {0x152D, "\002\011\305"}, + {0x152E, "\002\011\362\134"}, + {0x152F, "\002\011\362\127"}, + {0x1530, "\002\011\362\127\112\114\123"}, + {0x1531, "\002\011\362\125"}, + {0x1532, "\002\011\362\125\112\114\123"}, + {0x1533, "\002\011\362\130"}, + {0x1534, "\002\011\362\130\112\114\123"}, + {0x1535, "\002\011\362\126"}, + {0x1536, "\002\011\362\126\112\114\123"}, + {0x1537, "\002\011\362\131"}, + {0x1538, "\002\011\362\131\112\114\123"}, + {0x1539, "\002\011\362\123"}, + {0x153A, "\002\011\362\123\112\114\123"}, + {0x153B, "\002\011\360\014"}, + {0x153C, "\002\011\360\014\112\114\123"}, + {0x153D, "\002\011\360\014\355\112"}, + {0x153E, "\002\011\265"}, + {0x153F, "\002\011\265\112\363\121"}, + {0x1540, "\002\011\265\112\114\123"}, + {0x1541, "\002\011\003\355\145"}, + {0x1542, "\002\011\356\040"}, + {0x1543, "\002\011\356\040\365\115"}, + {0x1544, "\002\011\356\222\112\114\123"}, + {0x1545, "\002\011\374\171"}, + {0x1546, "\002\011\355\347"}, + {0x1547, "\002\011\374\201"}, + {0x1548, "\002\011\355\174"}, + {0x1549, "\002\011\374\202"}, + {0x154A, "\002\011\355\170\112\114\123"}, + {0x154B, "\002\011\322"}, + {0x154C, "\002\011\357\320"}, + {0x154D, "\002\011\033\112\114\123"}, + {0x154E, "\002\011\361\275"}, + {0x154F, "\002\011\361\275\112\114\123"}, + {0x1550, "\002\011\167"}, + {0x1551, "\002\011\167\112\114\123"}, + {0x1552, "\002\011\167\131"}, + {0x1553, "\002\011\356\202"}, + {0x1554, "\002\011\366\131"}, + {0x1555, "\002\011\356\200"}, + {0x1556, "\002\011\366\135"}, + {0x1557, "\002\011\356\014"}, + {0x1558, "\002\011\366\136"}, + {0x1559, "\002\011\355\225"}, + {0x155A, "\002\011\366\127"}, + {0x155B, "\002\011\360\252"}, + {0x155C, "\002\011\360\252\112\114\123"}, + {0x155D, "\002\011\355\062"}, + {0x155E, "\002\011\356\130"}, + {0x155F, "\002\011\356\130\357\111"}, + {0x1560, "\002\011\356\127"}, + {0x1561, "\002\011\356\127\357\111"}, + {0x1562, "\002\011\357\357"}, + {0x1563, "\002\011\357\357\357\111"}, + {0x1564, "\002\011\355\077"}, + {0x1565, "\002\011\362\004"}, + {0x1566, "\002\011\355\072"}, + {0x1567, "\002\011\357\355"}, + {0x1568, "\002\011\362\003"}, + {0x1569, "\002\011\362\003\112\114\123"}, + {0x156A, "\002\011\356\257"}, + {0x156B, "\002\011\375\305"}, + {0x156C, "\002\011\375\304"}, + {0x156D, "\002\011\362\050"}, + {0x156E, "\002\011\355\127"}, + {0x156F, "\002\011\375\303"}, + {0x1570, "\002\011\375\341"}, + {0x1571, "\002\011\375\333"}, + {0x1572, "\002\011\375\334"}, + {0x1573, "\002\011\375\332"}, + {0x1574, "\002\011\356\016\212\355\341"}, + {0x1575, "\002\011\355\255\212\355\341"}, + {0x1576, "\002\011\357\172\212\355\341"}, + {0x1577, "\002\011\355\107\212\355\341"}, + {0x1578, "\002\011\357\173\212\355\341"}, + {0x1579, "\002\011\314\212\355\341"}, + {0x157A, "\002\011\356\211\212\355\341"}, + {0x157B, "\002\011\237\212\355\341"}, + {0x157C, "\002\011\237\212\371\365"}, + {0x157D, "\002\011\366\355"}, + {0x157E, "\002\011\374\026"}, + {0x157F, "\002\011\357\301"}, + {0x1580, "\002\011\374\030"}, + {0x1581, "\002\011\357\302"}, + {0x1582, "\002\011\374\031"}, + {0x1583, "\002\011\356\245"}, + {0x1584, "\002\011\374\024"}, + {0x1585, "\002\011\355\173"}, + {0x1586, "\002\011\362\016"}, + {0x1587, "\002\011\362\014"}, + {0x1588, "\002\011\362\015"}, + {0x1589, "\002\011\362\013"}, + {0x158A, "\002\011\356\040\112\114\123"}, + {0x158B, "\002\011\355\347\112\114\123"}, + {0x158C, "\002\011\355\174\112\114\123"}, + {0x158D, "\002\011\322\112\114\123"}, + {0x158E, "\002\011\371\226"}, + {0x158F, "\002\011\371\212"}, + {0x1590, "\002\011\371\230"}, + {0x1591, "\002\011\356\225"}, + {0x1592, "\002\011\371\231"}, + {0x1593, "\002\011\355\066"}, + {0x1594, "\002\011\371\225"}, + {0x1595, "\002\011\355\336"}, + {0x1596, "\002\011\371\303"}, + {0x1597, "\002\011\356\311\355\145"}, + {0x1598, "\002\011\356\310\355\145"}, + {0x1599, "\002\011\356\054\355\145"}, + {0x159A, "\002\011\355\032\355\145"}, + {0x159B, "\002\011\356\130\112\114\356\001"}, + {0x159C, "\002\011\356\127\112\114\356\001"}, + {0x159D, "\002\011\355\077\112\114\356\001"}, + {0x159E, "\002\011\355\072\112\114\356\001"}, + {0x159F, "\002\011\356\257\112\114\356\001"}, + {0x15A0, "\002\011\361\024"}, + {0x15A1, "\002\011\370\160"}, + {0x15A2, "\002\011\361\025"}, + {0x15A3, "\002\011\370\161"}, + {0x15A4, "\002\011\357\226"}, + {0x15A5, "\002\011\370\156"}, + {0x15A6, "\002\011\370\151"}, + {0x15A7, "\002\011\356\130\355\311"}, + {0x15A8, "\002\011\356\127\355\311"}, + {0x15A9, "\002\011\357\357\355\311"}, + {0x15AA, "\002\011\355\077\355\311"}, + {0x15AB, "\002\011\362\004\355\311"}, + {0x15AC, "\002\011\355\072\355\311"}, + {0x15AD, "\002\011\357\355\355\311"}, + {0x15AE, "\002\011\356\257\355\311"}, + {0x15AF, "\002\011\334\363\017"}, + {0x15B0, "\002\011\217\355\067"}, + {0x15B1, "\002\011\103\355\067"}, + {0x15B2, "\002\011\064\355\067"}, + {0x15B3, "\002\011\063\355\067"}, + {0x15B4, "\002\011\356\235\355\067"}, + {0x15B5, "\002\011\356\370\355\067"}, + {0x15B6, "\002\011\356\371\355\067"}, + {0x15B7, "\002\011\356\234\355\067"}, + {0x15B8, "\002\011\356\231\355\067"}, + {0x15B9, "\002\011\244\355\067"}, + {0x15BA, "\002\011\355\113\355\067"}, + {0x15BB, "\002\011\354\355\067"}, + {0x15BC, "\002\011\356\220\355\067"}, + {0x15BD, "\002\011\355\332\355\067"}, + {0x15BE, "\002\011\355\167\355\067"}, + {0x15BF, "\002\011\240\355\067"}, + {0x15C0, "\002\011\356\016\355\145"}, + {0x15C1, "\002\011\355\255\355\145"}, + {0x15C2, "\002\011\355\107\355\145"}, + {0x15C3, "\002\011\314\355\145"}, + {0x15C4, "\002\011\366\214\054"}, + {0x15C5, "\002\011\366\213\054"}, + {0x15C6, "\002\011\366\211\054"}, + {0x15C7, "\002\011\366\216\054"}, + {0x15C8, "\002\011\366\212\054"}, + {0x15C9, "\002\011\355\106\054"}, + {0x15CA, "\002\011\357\315\054"}, + {0x15CB, "\002\011\355\174\054"}, + {0x15CC, "\002\011\356\035\054"}, + {0x15CD, "\002\011\356\040\054"}, + {0x15CE, "\002\011\355\347\054"}, + {0x15CF, "\002\011\322\054"}, + {0x15D0, "\002\011\372\130\054"}, + {0x15D1, "\002\011\356\371\054"}, + {0x15D2, "\002\011\372\126\054"}, + {0x15D3, "\002\011\356\235\054"}, + {0x15D4, "\002\011\356\370\054"}, + {0x15D5, "\002\011\356\234\054"}, + {0x15D6, "\002\011\367\112\054"}, + {0x15D7, "\002\011\367\111\054"}, + {0x15D8, "\002\011\367\107\054"}, + {0x15D9, "\002\011\367\113\054"}, + {0x15DA, "\002\011\367\110\054"}, + {0x15DB, "\002\011\367\106\054"}, + {0x15DC, "\002\011\362\002\054"}, + {0x15DD, "\002\011\355\077\054"}, + {0x15DE, "\002\011\361\377\054"}, + {0x15DF, "\002\011\356\130\054"}, + {0x15E0, "\002\011\356\127\054"}, + {0x15E1, "\002\011\355\072\054"}, + {0x15E2, "\002\011\375\306\054"}, + {0x15E3, "\002\011\362\052\054"}, + {0x15E4, "\002\011\375\302\054"}, + {0x15E5, "\002\011\362\053\054"}, + {0x15E6, "\002\011\362\051\054"}, + {0x15E7, "\002\011\355\100\054"}, + {0x15E8, "\002\011\361\213\054"}, + {0x15E9, "\002\011\355\273\054"}, + {0x15EA, "\002\011\356\375\054"}, + {0x15EB, "\002\011\355\172\054"}, + {0x15EC, "\002\011\355\233\054"}, + {0x15ED, "\002\011\327\054"}, + {0x15EE, "\002\011\355\021\054"}, + {0x15EF, "\002\011\357\155\054"}, + {0x15F0, "\002\011\356\071\054"}, + {0x15F1, "\002\011\356\203\054"}, + {0x15F2, "\002\011\360\313\054"}, + {0x15F3, "\002\011\356\204\054"}, + {0x15F4, "\002\011\355\017\054"}, + {0x15F5, "\002\011\370\006\054"}, + {0x15F6, "\002\011\355\261\054"}, + {0x15F7, "\002\011\370\003\054"}, + {0x15F8, "\002\011\356\342\054"}, + {0x15F9, "\002\011\356\341\054"}, + {0x15FA, "\002\011\355\054\054"}, + {0x15FB, "\002\011\370\032\054"}, + {0x15FC, "\002\011\370\031\054"}, + {0x15FD, "\002\011\370\027\054"}, + {0x15FE, "\002\011\370\033\054"}, + {0x15FF, "\002\011\370\030\054"}, + {0x1600, "\002\011\370\026\054"}, + {0x1601, "\002\011\361\002\054"}, + {0x1602, "\002\011\355\340\054"}, + {0x1603, "\002\011\355\113\054"}, + {0x1604, "\002\011\355\140\054"}, + {0x1605, "\002\011\356\231\054"}, + {0x1606, "\002\011\244\054"}, + {0x1607, "\002\011\354\054"}, + {0x1608, "\002\011\356\224\054"}, + {0x1609, "\002\011\355\136\054"}, + {0x160A, "\002\011\355\334\054"}, + {0x160B, "\002\011\356\356\054"}, + {0x160C, "\002\011\355\230\054"}, + {0x160D, "\002\011\277\054"}, + {0x160E, "\002\011\355\151\054"}, + {0x160F, "\002\011\355\040\054"}, + {0x1610, "\002\011\362\110\054"}, + {0x1611, "\002\011\355\303\054"}, + {0x1612, "\002\011\003\054"}, + {0x1613, "\002\011\305\054"}, + {0x1614, "\002\011\357\140\054"}, + {0x1615, "\002\011\357\140\355\145"}, + {0x1616, "\002\011\360\207\054"}, + {0x1617, "\002\011\360\206\054"}, + {0x1618, "\002\011\356\063\054"}, + {0x1619, "\002\011\357\137\054"}, + {0x161A, "\002\011\357\137\355\145"}, + {0x161B, "\002\011\355\104\054"}, + {0x161C, "\002\011\365\307\054"}, + {0x161D, "\002\011\365\306\054"}, + {0x161E, "\002\011\365\304\054"}, + {0x161F, "\002\011\365\310\054"}, + {0x1620, "\002\011\365\305\054"}, + {0x1621, "\002\011\365\303\054"}, + {0x1622, "\002\011\356\352\054"}, + {0x1623, "\002\011\355\170\054"}, + {0x1624, "\002\011\050\054"}, + {0x1625, "\002\011\356\222\054"}, + {0x1626, "\002\011\356\077\054"}, + {0x1627, "\002\011\033\054"}, + {0x1628, "\002\011\365\317\054"}, + {0x1629, "\002\011\365\316\054"}, + {0x162A, "\002\011\365\314\054"}, + {0x162B, "\002\011\365\320\054"}, + {0x162C, "\002\011\365\315\054"}, + {0x162D, "\002\011\360\210\054"}, + {0x162E, "\002\011\370\155\054"}, + {0x162F, "\002\011\361\025\054"}, + {0x1630, "\002\011\370\154\054"}, + {0x1631, "\002\011\370\157\054"}, + {0x1632, "\002\011\361\024\054"}, + {0x1633, "\002\011\357\226\054"}, + {0x1634, "\002\011\375\222\054"}, + {0x1635, "\002\011\362\015\054"}, + {0x1636, "\002\011\375\221\054"}, + {0x1637, "\002\011\362\016\054"}, + {0x1638, "\002\011\362\014\054"}, + {0x1639, "\002\011\362\013\054"}, + {0x163A, "\002\011\362\021\054"}, + {0x163B, "\002\011\362\020\054"}, + {0x163C, "\002\011\375\220\054"}, + {0x163D, "\002\011\362\022\054"}, + {0x163E, "\002\011\362\017\054"}, + {0x163F, "\002\011\362\012\054"}, + {0x1640, "\002\011\362\144\054"}, + {0x1641, "\002\011\356\135\054"}, + {0x1642, "\002\011\356\274\054"}, + {0x1643, "\002\011\355\367\054"}, + {0x1644, "\002\011\356\275\054"}, + {0x1645, "\002\011\355\101\054"}, + {0x1646, "\002\011\271\054"}, + {0x1647, "\002\011\271\054\055"}, + {0x1648, "\002\011\365\344\054"}, + {0x1649, "\002\011\365\343\054"}, + {0x164A, "\002\011\365\341\054"}, + {0x164B, "\002\011\356\165\054"}, + {0x164C, "\002\011\365\342\054"}, + {0x164D, "\002\011\356\065\054"}, + {0x164E, "\002\011\357\034\054"}, + {0x164F, "\002\011\355\070\054"}, + {0x1650, "\002\011\356\042\054"}, + {0x1651, "\002\011\356\121\054"}, + {0x1652, "\002\011\355\275\054"}, + {0x1653, "\002\011\355\004\054"}, + {0x1654, "\002\011\360\120\054"}, + {0x1655, "\002\011\356\054\054"}, + {0x1656, "\002\011\356\151\054"}, + {0x1657, "\002\011\356\311\054"}, + {0x1658, "\002\011\356\310\054"}, + {0x1659, "\002\011\355\032\054"}, + {0x165A, "\002\011\357\075\054"}, + {0x165B, "\002\011\357\371\054"}, + {0x165C, "\002\011\357\370\054"}, + {0x165D, "\002\011\362\042\054"}, + {0x165E, "\002\011\356\047\054"}, + {0x165F, "\002\011\357\367\054"}, + {0x1660, "\002\011\355\177\054"}, + {0x1661, "\002\011\361\366\054"}, + {0x1662, "\002\011\355\277\054"}, + {0x1663, "\002\011\357\350\054"}, + {0x1664, "\002\011\355\071\054"}, + {0x1665, "\002\011\357\351\054"}, + {0x1666, "\002\011\355\024\054"}, + {0x1667, "\002\011\375\313\054"}, + {0x1668, "\002\011\375\312\054"}, + {0x1669, "\002\011\375\310\054"}, + {0x166A, "\002\011\375\314\054"}, + {0x166B, "\002\011\375\311\054"}, + {0x166C, "\002\011\375\307\054"}, + {0x166D, "\057\002\011\356\341"}, + {0x166E, "\037\002\011"}, + {0x166F, "\002\011\373\333"}, + {0x1670, "\002\011\371\205"}, + {0x1671, "\002\011\371\305"}, + {0x1672, "\002\011\371\310"}, + {0x1673, "\002\011\371\306"}, + {0x1674, "\002\011\371\311"}, + {0x1675, "\002\011\371\304"}, + {0x1676, "\002\011\371\307"}, + {0x1680, "\355\073\310"}, + {0x1681, "\001\310\363\105"}, + {0x1682, "\001\310\370\213"}, + {0x1683, "\001\310\366\053"}, + {0x1684, "\001\310\374\212"}, + {0x1685, "\001\310\371\242"}, + {0x1686, "\001\310\375\362"}, + {0x1687, "\001\310\365\171"}, + {0x1688, "\001\310\375\206"}, + {0x1689, "\001\310\365\045"}, + {0x168A, "\001\310\363\245"}, + {0x168B, "\001\310\371\030"}, + {0x168C, "\001\310\366\236"}, + {0x168D, "\001\310\371\227"}, + {0x168E, "\001\310\375\032"}, + {0x168F, "\001\310\374\144"}, + {0x1690, "\001\310\362\305"}, + {0x1691, "\001\310\361\137"}, + {0x1692, "\001\310\376\371"}, + {0x1693, "\001\310\365\364"}, + {0x1694, "\001\310\367\224"}, + {0x1695, "\001\310\377\020"}, + {0x1696, "\001\310\376\370"}, + {0x1697, "\001\310\375\364"}, + {0x1698, "\001\310\367\200"}, + {0x1699, "\001\310\365\365"}, + {0x169A, "\001\310\372\174"}, + {0x169B, "\356\243\310"}, + {0x169C, "\356\243\357\322\310"}, + {0x16A0, "\001\135\366\132\366\133\356\202\355\062"}, + {0x16A1, "\001\135\355\025"}, + {0x16A2, "\001\135\376\001\375\376\113"}, + {0x16A3, "\001\135\362\133"}, + {0x16A4, "\001\135\265"}, + {0x16A5, "\001\135\347"}, + {0x16A6, "\001\135\375\173\375\171\375\174\356\257"}, + {0x16A7, "\001\135\366\024"}, + {0x16A8, "\001\135\362\340\063"}, + {0x16A9, "\001\135\357\257\064"}, + {0x16AA, "\001\135\362\275\063"}, + {0x16AB, "\001\135\376\363"}, + {0x16AC, "\001\135\372\113\064"}, + {0x16AD, "\001\135\372\114\064"}, + {0x16AE, "\001\135\064"}, + {0x16AF, "\001\135\355\210"}, + {0x16B0, "\001\135\357\256"}, + {0x16B1, "\001\135\374\034\357\020\374\051\167"}, + {0x16B2, "\001\135\367\371"}, + {0x16B3, "\001\135\363\247"}, + {0x16B4, "\001\135\367\370\352"}, + {0x16B5, "\001\135\266"}, + {0x16B6, "\001\135\356\007"}, + {0x16B7, "\001\135\366\150\366\151\266"}, + {0x16B8, "\001\135\366\141"}, + {0x16B9, "\001\135\376\106\360\007\347"}, + {0x16BA, "\001\135\366\307\237"}, + {0x16BB, "\001\135\367\157\237"}, + {0x16BC, "\001\135\366\305\237"}, + {0x16BD, "\001\135\366\306\237"}, + {0x16BE, "\001\135\371\107\372\002\371\105\241"}, + {0x16BF, "\001\135\371\106\241"}, + {0x16C0, "\001\135\371\075"}, + {0x16C1, "\001\135\367\233\367\232\367\234\103"}, + {0x16C2, "\001\135\130"}, + {0x16C3, "\001\135\367\261\355\053"}, + {0x16C4, "\001\135\366\152"}, + {0x16C5, "\001\135\362\354\360\023"}, + {0x16C6, "\001\135\362\353\063"}, + {0x16C7, "\001\135\367\236\366\016"}, + {0x16C8, "\001\135\372\204\372\200\355\021"}, + {0x16C9, "\001\135\362\311\366\017"}, + {0x16CA, "\001\135\374\363\223"}, + {0x16CB, "\001\135\374\314\374\351\223"}, + {0x16CC, "\001\135\374\352\223"}, + {0x16CD, "\001\135\313"}, + {0x16CE, "\001\135\271"}, + {0x16CF, "\001\135\375\215\375\211\375\337\261"}, + {0x16D0, "\001\135\375\340\261"}, + {0x16D1, "\001\135\275"}, + {0x16D2, "\001\135\363\113\363\111\363\117\334"}, + {0x16D3, "\001\135\363\120\334"}, + {0x16D4, "\001\135\372\145"}, + {0x16D5, "\001\135\372\144"}, + {0x16D6, "\001\135\365\373\365\372\130"}, + {0x16D7, "\001\135\370\262\357\231\276"}, + {0x16D8, "\001\135\370\250\276"}, + {0x16D9, "\001\135\370\251\276"}, + {0x16DA, "\001\135\370\136\370\126\370\203\211"}, + {0x16DB, "\001\135\370\124"}, + {0x16DC, "\001\135\367\212"}, + {0x16DD, "\001\135\367\211"}, + {0x16DE, "\001\135\365\167\365\346\275"}, + {0x16DF, "\001\135\372\116\366\025\064"}, + {0x16E0, "\001\135\365\366"}, + {0x16E1, "\001\135\367\225"}, + {0x16E2, "\001\135\365\137"}, + {0x16E3, "\001\135\363\227"}, + {0x16E4, "\001\135\363\243"}, + {0x16E5, "\001\135\375\027"}, + {0x16E6, "\001\135\376\202"}, + {0x16E7, "\001\135\376\203"}, + {0x16E8, "\001\135\376\201"}, + {0x16E9, "\001\135\355\173"}, + {0x16EA, "\001\135\355\026"}, + {0x16EB, "\355\234\135\355\001"}, + {0x16EC, "\355\234\135\371\032"}, + {0x16ED, "\355\234\135\013\355\033"}, + {0x16EE, "\022\135\362\356"}, + {0x16EF, "\022\135\375\330"}, + {0x16F0, "\022\135\363\106"}, + {0x1780, "\001\157\240"}, + {0x1781, "\001\157\355\054"}, + {0x1782, "\001\157\355\167"}, + {0x1783, "\001\157\355\261"}, + {0x1784, "\001\157\356\225"}, + {0x1785, "\001\157\355\024"}, + {0x1786, "\001\157\355\240"}, + {0x1787, "\001\157\355\277"}, + {0x1788, "\001\157\375\134"}, + {0x1789, "\001\157\357\063"}, + {0x178A, "\001\157\355\002"}, + {0x178B, "\001\157\355\127"}, + {0x178C, "\001\157\355\252"}, + {0x178D, "\001\157\362\050"}, + {0x178E, "\001\157\371\312"}, + {0x178F, "\001\157\311"}, + {0x1790, "\001\157\355\072"}, + {0x1791, "\001\157\355\176"}, + {0x1792, "\001\157\355\077"}, + {0x1793, "\001\157\355\113"}, + {0x1794, "\001\157\355\052"}, + {0x1795, "\001\157\355\124"}, + {0x1796, "\001\157\355\273"}, + {0x1797, "\001\157\356\033"}, + {0x1798, "\001\157\355\136"}, + {0x1799, "\001\157\355\040"}, + {0x179A, "\001\157\355\174"}, + {0x179B, "\001\157\355\170"}, + {0x179C, "\001\157\356\132"}, + {0x179D, "\001\157\355\152"}, + {0x179E, "\001\157\356\054"}, + {0x179F, "\001\157\355\004"}, + {0x17A0, "\001\157\314"}, + {0x17A1, "\001\157\033"}, + {0x17A2, "\001\157\063"}, + {0x17A3, "\042\073\157\063"}, + {0x17A4, "\042\073\157\323"}, + {0x17A5, "\042\073\157\103"}, + {0x17A6, "\042\073\157\315"}, + {0x17A7, "\042\073\157\113"}, + {0x17A8, "\042\073\157\357\261"}, + {0x17A9, "\042\073\157\342"}, + {0x17AA, "\042\073\157\363\021"}, + {0x17AB, "\042\073\157\374\167"}, + {0x17AC, "\042\073\157\374\170"}, + {0x17AD, "\042\073\157\370\240"}, + {0x17AE, "\042\073\157\370\241"}, + {0x17AF, "\042\073\157\217"}, + {0x17B0, "\042\073\157\307"}, + {0x17B1, "\042\073\157\306\362\055\110"}, + {0x17B2, "\042\073\157\306\362\055\127"}, + {0x17B3, "\042\073\157\333"}, + {0x17B4, "\042\157\360\347\063"}, + {0x17B5, "\042\157\360\347\323"}, + {0x17B6, "\042\026\157\323"}, + {0x17B7, "\042\026\157\103"}, + {0x17B8, "\042\026\157\315"}, + {0x17B9, "\042\026\157\376\372"}, + {0x17BA, "\042\026\157\376\374"}, + {0x17BB, "\042\026\157\113"}, + {0x17BC, "\042\026\157\342"}, + {0x17BD, "\042\026\157\356\234"}, + {0x17BE, "\042\026\157\355\210"}, + {0x17BF, "\042\026\157\376\373"}, + {0x17C0, "\042\026\157\355\260"}, + {0x17C1, "\042\026\157\217"}, + {0x17C2, "\042\026\157\356\136"}, + {0x17C3, "\042\026\157\307"}, + {0x17C4, "\042\026\157\306"}, + {0x17C5, "\042\026\157\333"}, + {0x17C6, "\057\267\371\240"}, + {0x17C7, "\057\267\374\172"}, + {0x17C8, "\057\267\376\200"}, + {0x17C9, "\057\267\371\025"}, + {0x17CA, "\057\267\375\262"}, + {0x17CB, "\057\267\363\027"}, + {0x17CC, "\057\267\374\103"}, + {0x17CD, "\057\267\375\224"}, + {0x17CE, "\057\267\367\357"}, + {0x17CF, "\057\267\362\304"}, + {0x17D0, "\057\267\374\232\374\231"}, + {0x17D1, "\057\267\376\041"}, + {0x17D2, "\057\267\375\137"}, + {0x17D3, "\057\267\363\040"}, + {0x17D4, "\057\267\357\217"}, + {0x17D5, "\057\267\363\033"}, + {0x17D6, "\057\267\375\127\361\235\370\046"}, + {0x17D7, "\057\267\370\145\356\263"}, + {0x17D8, "\057\267\363\116"}, + {0x17D9, "\057\267\372\214\371\004"}, + {0x17DA, "\057\267\370\120"}, + {0x17DB, "\022\355\272\267\374\064"}, + {0x17DC, "\057\267\363\006"}, + {0x17E0, "\024\267\331"}, + {0x17E1, "\024\267\110"}, + {0x17E2, "\024\267\127"}, + {0x17E3, "\024\267\136"}, + {0x17E4, "\024\267\220"}, + {0x17E5, "\024\267\230"}, + {0x17E6, "\024\267\255"}, + {0x17E7, "\024\267\252"}, + {0x17E8, "\024\267\226"}, + {0x17E9, "\024\267\257"}, + {0x1800, "\363\134\355\012"}, + {0x1801, "\251\007\357\345\371\013"}, + {0x1802, "\330\066"}, + {0x1803, "\037\355\012"}, + {0x1804, "\355\103\355\012"}, + {0x1805, "\373\373\355\012"}, + {0x1806, "\355\126\355\315\362\071\355\012\312"}, + {0x1807, "\355\045\007\375\053\355\012\355\006"}, + {0x1808, "\330\066\370\261"}, + {0x1809, "\037\355\012\355\065"}, + {0x180A, "\371\244\355\012"}, + {0x180B, "\356\254\007\357\052\357\227\355\012\110"}, + {0x180C, "\356\254\007\357\052\357\227\355\012\127"}, + {0x180D, "\356\254\007\357\052\357\227\355\012\136"}, + {0x180E, "\355\045\007\376\055\355\012"}, + {0x1810, "\024\355\012\331"}, + {0x1811, "\024\355\012\110"}, + {0x1812, "\024\355\012\127"}, + {0x1813, "\024\355\012\136"}, + {0x1814, "\024\355\012\220"}, + {0x1815, "\024\355\012\230"}, + {0x1816, "\024\355\012\255"}, + {0x1817, "\024\355\012\252"}, + {0x1818, "\024\355\012\226"}, + {0x1819, "\024\355\012\257"}, + {0x1820, "\001\066\063"}, + {0x1821, "\001\066\356\136"}, + {0x1822, "\001\066\103"}, + {0x1823, "\001\066\064"}, + {0x1824, "\001\066\113"}, + {0x1825, "\001\066\356\011"}, + {0x1826, "\001\066\132"}, + {0x1827, "\001\066\315"}, + {0x1828, "\001\066\354"}, + {0x1829, "\001\066\355\373"}, + {0x182A, "\001\066\355\052"}, + {0x182B, "\001\066\327"}, + {0x182C, "\001\066\356\245"}, + {0x182D, "\001\066\355\017"}, + {0x182E, "\001\066\277"}, + {0x182F, "\001\066\033"}, + {0x1830, "\001\066\355\004"}, + {0x1831, "\001\066\355\032"}, + {0x1832, "\001\066\311"}, + {0x1833, "\001\066\355\002"}, + {0x1834, "\001\066\355\024"}, + {0x1835, "\001\066\355\104"}, + {0x1836, "\001\066\305"}, + {0x1837, "\001\066\322"}, + {0x1838, "\001\066\355\050"}, + {0x1839, "\001\066\355\225"}, + {0x183A, "\001\066\240"}, + {0x183B, "\001\066\355\054"}, + {0x183C, "\001\066\355\177"}, + {0x183D, "\001\066\355\101"}, + {0x183E, "\001\066\356\211"}, + {0x183F, "\001\066\376\307"}, + {0x1840, "\001\066\357\226"}, + {0x1841, "\001\066\357\350"}, + {0x1842, "\001\066\375\116"}, + {0x1843, "\001\066\026\356\221\042\312"}, + {0x1844, "\001\066\217\312"}, + {0x1845, "\001\066\103\312"}, + {0x1846, "\001\066\064\312"}, + {0x1847, "\001\066\113\312"}, + {0x1848, "\001\066\356\011\312"}, + {0x1849, "\001\066\132\312"}, + {0x184A, "\001\066\355\373\312"}, + {0x184B, "\001\066\355\052\312"}, + {0x184C, "\001\066\327\312"}, + {0x184D, "\001\066\356\245\312"}, + {0x184E, "\001\066\355\017\312"}, + {0x184F, "\001\066\277\312"}, + {0x1850, "\001\066\311\312"}, + {0x1851, "\001\066\355\002\312"}, + {0x1852, "\001\066\355\024\312"}, + {0x1853, "\001\066\355\104\312"}, + {0x1854, "\001\066\355\177\312"}, + {0x1855, "\001\066\305\312"}, + {0x1856, "\001\066\355\050\312"}, + {0x1857, "\001\066\240\312"}, + {0x1858, "\001\066\360\311\312"}, + {0x1859, "\001\066\356\211\312"}, + {0x185A, "\001\066\365\302\312"}, + {0x185B, "\001\066\371\233\312"}, + {0x185C, "\001\066\356\065\312"}, + {0x185D, "\001\066\217\355\006"}, + {0x185E, "\001\066\103\355\006"}, + {0x185F, "\001\066\367\240\355\006"}, + {0x1860, "\001\066\132\355\006"}, + {0x1861, "\001\066\113\355\006"}, + {0x1862, "\001\066\355\373\355\006"}, + {0x1863, "\001\066\240\355\006"}, + {0x1864, "\001\066\355\017\355\006"}, + {0x1865, "\001\066\314\355\006"}, + {0x1866, "\001\066\327\355\006"}, + {0x1867, "\001\066\355\032\355\006"}, + {0x1868, "\001\066\311\355\006"}, + {0x1869, "\001\066\355\002\355\006"}, + {0x186A, "\001\066\355\104\355\006"}, + {0x186B, "\001\066\355\225\355\006"}, + {0x186C, "\001\066\360\311\355\006"}, + {0x186D, "\001\066\356\211\355\006"}, + {0x186E, "\001\066\355\177\355\006"}, + {0x186F, "\001\066\355\101\355\006"}, + {0x1870, "\001\066\357\320\355\006"}, + {0x1871, "\001\066\355\024\355\006"}, + {0x1872, "\001\066\355\365\355\006"}, + {0x1873, "\001\066\103\355\065"}, + {0x1874, "\001\066\240\355\065"}, + {0x1875, "\001\066\322\355\065"}, + {0x1876, "\001\066\355\225\355\065"}, + {0x1877, "\001\066\355\365\355\065"}, + {0x1880, "\001\066\355\222\110\234\235"}, + {0x1881, "\001\066\355\243\110\234\235"}, + {0x1882, "\001\066\365\172\234\235"}, + {0x1883, "\001\066\361\145\234\235"}, + {0x1884, "\001\066\361\145\234\235\325"}, + {0x1885, "\001\066\363\024\234\235"}, + {0x1886, "\001\066\136\363\025\234\235"}, + {0x1887, "\001\066\063\234\235"}, + {0x1888, "\001\066\103\234\235"}, + {0x1889, "\001\066\240\234\235"}, + {0x188A, "\001\066\355\066\234\235"}, + {0x188B, "\001\066\355\024\234\235"}, + {0x188C, "\001\066\355\100\234\235"}, + {0x188D, "\001\066\355\127\234\235"}, + {0x188E, "\001\066\355\120\234\235"}, + {0x188F, "\001\066\355\141\234\235"}, + {0x1890, "\001\066\311\234\235"}, + {0x1891, "\001\066\355\002\234\235"}, + {0x1892, "\001\066\327\234\235"}, + {0x1893, "\001\066\355\124\234\235"}, + {0x1894, "\001\066\355\152\234\235"}, + {0x1895, "\001\066\355\365\234\235"}, + {0x1896, "\001\066\355\101\234\235"}, + {0x1897, "\001\066\362\303\234\235"}, + {0x1898, "\001\066\311\312\234\235"}, + {0x1899, "\001\066\355\365\312\234\235"}, + {0x189A, "\001\066\355\106\234\235"}, + {0x189B, "\001\066\355\066\355\065\234\235"}, + {0x189C, "\001\066\355\024\355\065\234\235"}, + {0x189D, "\001\066\355\251\355\065\234\235"}, + {0x189E, "\001\066\355\100\355\065\234\235"}, + {0x189F, "\001\066\355\160\355\065\234\235"}, + {0x18A0, "\001\066\311\355\065\234\235"}, + {0x18A1, "\001\066\355\162\355\065\234\235"}, + {0x18A2, "\001\066\355\152\355\065\234\235"}, + {0x18A3, "\001\066\375\150\355\065\234\235"}, + {0x18A4, "\001\066\355\365\355\065\234\235"}, + {0x18A5, "\001\066\355\101\355\065\234\235"}, + {0x18A6, "\001\066\355\133\113\234\235"}, + {0x18A7, "\001\066\355\133\305\234\235"}, + {0x18A8, "\001\066\355\153\234\235"}, + {0x18A9, "\001\066\365\166\234\235"}, + {0x1E00, "\001\010\006\063\302\043"}, + {0x1E01, "\001\005\006\063\302\043"}, + {0x1E02, "\001\010\006\334\037\013\040"}, + {0x1E03, "\001\005\006\334\037\013\040"}, + {0x1E04, "\001\010\006\334\037\043"}, + {0x1E05, "\001\005\006\334\037\043"}, + {0x1E06, "\001\010\006\334\243\301"}, + {0x1E07, "\001\005\006\334\243\301"}, + {0x1E08, "\001\010\006\313\274\020\021\062"}, + {0x1E09, "\001\005\006\313\274\020\021\062"}, + {0x1E0A, "\001\010\006\275\037\013\040"}, + {0x1E0B, "\001\005\006\275\037\013\040"}, + {0x1E0C, "\001\010\006\275\037\043"}, + {0x1E0D, "\001\005\006\275\037\043"}, + {0x1E0E, "\001\010\006\275\243\301"}, + {0x1E0F, "\001\005\006\275\243\301"}, + {0x1E10, "\001\010\006\275\274"}, + {0x1E11, "\001\005\006\275\274"}, + {0x1E12, "\001\010\006\275\021\072\043"}, + {0x1E13, "\001\005\006\275\021\072\043"}, + {0x1E14, "\001\010\006\130\174\020\021\067"}, + {0x1E15, "\001\005\006\130\174\020\021\067"}, + {0x1E16, "\001\010\006\130\174\020\021\062"}, + {0x1E17, "\001\005\006\130\174\020\021\062"}, + {0x1E18, "\001\010\006\130\021\072\043"}, + {0x1E19, "\001\005\006\130\021\072\043"}, + {0x1E1A, "\001\010\006\130\172\043"}, + {0x1E1B, "\001\005\006\130\172\043"}, + {0x1E1C, "\001\010\006\130\274\020\213"}, + {0x1E1D, "\001\005\006\130\274\020\213"}, + {0x1E1E, "\001\010\006\355\062\037\013\040"}, + {0x1E1F, "\001\005\006\355\062\037\013\040"}, + {0x1E20, "\001\010\006\266\174"}, + {0x1E21, "\001\005\006\266\174"}, + {0x1E22, "\001\010\006\237\037\013\040"}, + {0x1E23, "\001\005\006\237\037\013\040"}, + {0x1E24, "\001\010\006\237\037\043"}, + {0x1E25, "\001\005\006\237\037\043"}, + {0x1E26, "\001\010\006\237\165"}, + {0x1E27, "\001\005\006\237\165"}, + {0x1E28, "\001\010\006\237\274"}, + {0x1E29, "\001\005\006\237\274"}, + {0x1E2A, "\001\010\006\237\213\043"}, + {0x1E2B, "\001\005\006\237\213\043"}, + {0x1E2C, "\001\010\006\103\172\043"}, + {0x1E2D, "\001\005\006\103\172\043"}, + {0x1E2E, "\001\010\006\103\165\020\021\062"}, + {0x1E2F, "\001\005\006\103\165\020\021\062"}, + {0x1E30, "\001\010\006\352\021\062"}, + {0x1E31, "\001\005\006\352\021\062"}, + {0x1E32, "\001\010\006\352\037\043"}, + {0x1E33, "\001\005\006\352\037\043"}, + {0x1E34, "\001\010\006\352\243\301"}, + {0x1E35, "\001\005\006\352\243\301"}, + {0x1E36, "\001\010\006\211\037\043"}, + {0x1E37, "\001\005\006\211\037\043"}, + {0x1E38, "\001\010\006\211\037\043\020\174"}, + {0x1E39, "\001\005\006\211\037\043\020\174"}, + {0x1E3A, "\001\010\006\211\243\301"}, + {0x1E3B, "\001\005\006\211\243\301"}, + {0x1E3C, "\001\010\006\211\021\072\043"}, + {0x1E3D, "\001\005\006\211\021\072\043"}, + {0x1E3E, "\001\010\006\276\021\062"}, + {0x1E3F, "\001\005\006\276\021\062"}, + {0x1E40, "\001\010\006\276\037\013\040"}, + {0x1E41, "\001\005\006\276\037\013\040"}, + {0x1E42, "\001\010\006\276\037\043"}, + {0x1E43, "\001\005\006\276\037\043"}, + {0x1E44, "\001\010\006\241\037\013\040"}, + {0x1E45, "\001\005\006\241\037\013\040"}, + {0x1E46, "\001\010\006\241\037\043"}, + {0x1E47, "\001\005\006\241\037\043"}, + {0x1E48, "\001\010\006\241\243\301"}, + {0x1E49, "\001\005\006\241\243\301"}, + {0x1E4A, "\001\010\006\241\021\072\043"}, + {0x1E4B, "\001\005\006\241\021\072\043"}, + {0x1E4C, "\001\010\006\064\172\020\021\062"}, + {0x1E4D, "\001\005\006\064\172\020\021\062"}, + {0x1E4E, "\001\010\006\064\172\020\165"}, + {0x1E4F, "\001\005\006\064\172\020\165"}, + {0x1E50, "\001\010\006\064\174\020\021\067"}, + {0x1E51, "\001\005\006\064\174\020\021\067"}, + {0x1E52, "\001\010\006\064\174\020\021\062"}, + {0x1E53, "\001\005\006\064\174\020\021\062"}, + {0x1E54, "\001\010\006\355\021\021\062"}, + {0x1E55, "\001\005\006\355\021\021\062"}, + {0x1E56, "\001\010\006\355\021\037\013\040"}, + {0x1E57, "\001\005\006\355\021\037\013\040"}, + {0x1E58, "\001\010\006\167\037\013\040"}, + {0x1E59, "\001\005\006\167\037\013\040"}, + {0x1E5A, "\001\010\006\167\037\043"}, + {0x1E5B, "\001\005\006\167\037\043"}, + {0x1E5C, "\001\010\006\167\037\043\020\174"}, + {0x1E5D, "\001\005\006\167\037\043\020\174"}, + {0x1E5E, "\001\010\006\167\243\301"}, + {0x1E5F, "\001\005\006\167\243\301"}, + {0x1E60, "\001\010\006\223\037\013\040"}, + {0x1E61, "\001\005\006\223\037\013\040"}, + {0x1E62, "\001\010\006\223\037\043"}, + {0x1E63, "\001\005\006\223\037\043"}, + {0x1E64, "\001\010\006\223\021\062\020\037\013\040"}, + {0x1E65, "\001\005\006\223\021\062\020\037\013\040"}, + {0x1E66, "\001\010\006\223\225\020\037\013\040"}, + {0x1E67, "\001\005\006\223\225\020\037\013\040"}, + {0x1E68, "\001\010\006\223\037\043\020\037\013\040"}, + {0x1E69, "\001\005\006\223\037\043\020\037\013\040"}, + {0x1E6A, "\001\010\006\261\037\013\040"}, + {0x1E6B, "\001\005\006\261\037\013\040"}, + {0x1E6C, "\001\010\006\261\037\043"}, + {0x1E6D, "\001\005\006\261\037\043"}, + {0x1E6E, "\001\010\006\261\243\301"}, + {0x1E6F, "\001\005\006\261\243\301"}, + {0x1E70, "\001\010\006\261\021\072\043"}, + {0x1E71, "\001\005\006\261\021\072\043"}, + {0x1E72, "\001\010\006\132\165\043"}, + {0x1E73, "\001\005\006\132\165\043"}, + {0x1E74, "\001\010\006\132\172\043"}, + {0x1E75, "\001\005\006\132\172\043"}, + {0x1E76, "\001\010\006\132\021\072\043"}, + {0x1E77, "\001\005\006\132\021\072\043"}, + {0x1E78, "\001\010\006\132\172\020\021\062"}, + {0x1E79, "\001\005\006\132\172\020\021\062"}, + {0x1E7A, "\001\010\006\132\174\020\165"}, + {0x1E7B, "\001\005\006\132\174\020\165"}, + {0x1E7C, "\001\010\006\355\025\172"}, + {0x1E7D, "\001\005\006\355\025\172"}, + {0x1E7E, "\001\010\006\355\025\037\043"}, + {0x1E7F, "\001\005\006\355\025\037\043"}, + {0x1E80, "\001\010\006\347\021\067"}, + {0x1E81, "\001\005\006\347\021\067"}, + {0x1E82, "\001\010\006\347\021\062"}, + {0x1E83, "\001\005\006\347\021\062"}, + {0x1E84, "\001\010\006\347\165"}, + {0x1E85, "\001\005\006\347\165"}, + {0x1E86, "\001\010\006\347\037\013\040"}, + {0x1E87, "\001\005\006\347\037\013\040"}, + {0x1E88, "\001\010\006\347\037\043"}, + {0x1E89, "\001\005\006\347\037\043"}, + {0x1E8A, "\001\010\006\355\026\037\013\040"}, + {0x1E8B, "\001\005\006\355\026\037\013\040"}, + {0x1E8C, "\001\010\006\355\026\165"}, + {0x1E8D, "\001\005\006\355\026\165"}, + {0x1E8E, "\001\010\006\265\037\013\040"}, + {0x1E8F, "\001\005\006\265\037\013\040"}, + {0x1E90, "\001\010\006\271\021\072"}, + {0x1E91, "\001\005\006\271\021\072"}, + {0x1E92, "\001\010\006\271\037\043"}, + {0x1E93, "\001\005\006\271\037\043"}, + {0x1E94, "\001\010\006\271\243\301"}, + {0x1E95, "\001\005\006\271\243\301"}, + {0x1E96, "\001\005\006\237\243\301"}, + {0x1E97, "\001\005\006\261\165"}, + {0x1E98, "\001\005\006\347\302\013\040"}, + {0x1E99, "\001\005\006\265\302\013\040"}, + {0x1E9A, "\001\005\006\063\356\061\044\053"}, + {0x1E9B, "\001\005\006\355\264\223\037\013\040"}, + {0x1EA0, "\001\010\006\063\037\043"}, + {0x1EA1, "\001\005\006\063\037\043"}, + {0x1EA2, "\001\010\006\063\122\013\040"}, + {0x1EA3, "\001\005\006\063\122\013\040"}, + {0x1EA4, "\001\010\006\063\021\072\020\021\062"}, + {0x1EA5, "\001\005\006\063\021\072\020\021\062"}, + {0x1EA6, "\001\010\006\063\021\072\020\021\067"}, + {0x1EA7, "\001\005\006\063\021\072\020\021\067"}, + {0x1EA8, "\001\010\006\063\021\072\020\122\013\040"}, + {0x1EA9, "\001\005\006\063\021\072\020\122\013\040"}, + {0x1EAA, "\001\010\006\063\021\072\020\172"}, + {0x1EAB, "\001\005\006\063\021\072\020\172"}, + {0x1EAC, "\001\010\006\063\021\072\020\037\043"}, + {0x1EAD, "\001\005\006\063\021\072\020\037\043"}, + {0x1EAE, "\001\010\006\063\213\020\021\062"}, + {0x1EAF, "\001\005\006\063\213\020\021\062"}, + {0x1EB0, "\001\010\006\063\213\020\021\067"}, + {0x1EB1, "\001\005\006\063\213\020\021\067"}, + {0x1EB2, "\001\010\006\063\213\020\122\013\040"}, + {0x1EB3, "\001\005\006\063\213\020\122\013\040"}, + {0x1EB4, "\001\010\006\063\213\020\172"}, + {0x1EB5, "\001\005\006\063\213\020\172"}, + {0x1EB6, "\001\010\006\063\213\020\037\043"}, + {0x1EB7, "\001\005\006\063\213\020\037\043"}, + {0x1EB8, "\001\010\006\130\037\043"}, + {0x1EB9, "\001\005\006\130\037\043"}, + {0x1EBA, "\001\010\006\130\122\013\040"}, + {0x1EBB, "\001\005\006\130\122\013\040"}, + {0x1EBC, "\001\010\006\130\172"}, + {0x1EBD, "\001\005\006\130\172"}, + {0x1EBE, "\001\010\006\130\021\072\020\021\062"}, + {0x1EBF, "\001\005\006\130\021\072\020\021\062"}, + {0x1EC0, "\001\010\006\130\021\072\020\021\067"}, + {0x1EC1, "\001\005\006\130\021\072\020\021\067"}, + {0x1EC2, "\001\010\006\130\021\072\020\122\013\040"}, + {0x1EC3, "\001\005\006\130\021\072\020\122\013\040"}, + {0x1EC4, "\001\010\006\130\021\072\020\172"}, + {0x1EC5, "\001\005\006\130\021\072\020\172"}, + {0x1EC6, "\001\010\006\130\021\072\020\037\043"}, + {0x1EC7, "\001\005\006\130\021\072\020\037\043"}, + {0x1EC8, "\001\010\006\103\122\013\040"}, + {0x1EC9, "\001\005\006\103\122\013\040"}, + {0x1ECA, "\001\010\006\103\037\043"}, + {0x1ECB, "\001\005\006\103\037\043"}, + {0x1ECC, "\001\010\006\064\037\043"}, + {0x1ECD, "\001\005\006\064\037\043"}, + {0x1ECE, "\001\010\006\064\122\013\040"}, + {0x1ECF, "\001\005\006\064\122\013\040"}, + {0x1ED0, "\001\010\006\064\021\072\020\021\062"}, + {0x1ED1, "\001\005\006\064\021\072\020\021\062"}, + {0x1ED2, "\001\010\006\064\021\072\020\021\067"}, + {0x1ED3, "\001\005\006\064\021\072\020\021\067"}, + {0x1ED4, "\001\010\006\064\021\072\020\122\013\040"}, + {0x1ED5, "\001\005\006\064\021\072\020\122\013\040"}, + {0x1ED6, "\001\010\006\064\021\072\020\172"}, + {0x1ED7, "\001\005\006\064\021\072\020\172"}, + {0x1ED8, "\001\010\006\064\021\072\020\037\043"}, + {0x1ED9, "\001\005\006\064\021\072\020\037\043"}, + {0x1EDA, "\001\010\006\064\336\021\062"}, + {0x1EDB, "\001\005\006\064\336\021\062"}, + {0x1EDC, "\001\010\006\064\336\021\067"}, + {0x1EDD, "\001\005\006\064\336\021\067"}, + {0x1EDE, "\001\010\006\064\336\122\013\040"}, + {0x1EDF, "\001\005\006\064\336\122\013\040"}, + {0x1EE0, "\001\010\006\064\336\172"}, + {0x1EE1, "\001\005\006\064\336\172"}, + {0x1EE2, "\001\010\006\064\336\037\043"}, + {0x1EE3, "\001\005\006\064\336\037\043"}, + {0x1EE4, "\001\010\006\132\037\043"}, + {0x1EE5, "\001\005\006\132\037\043"}, + {0x1EE6, "\001\010\006\132\122\013\040"}, + {0x1EE7, "\001\005\006\132\122\013\040"}, + {0x1EE8, "\001\010\006\132\336\021\062"}, + {0x1EE9, "\001\005\006\132\336\021\062"}, + {0x1EEA, "\001\010\006\132\336\021\067"}, + {0x1EEB, "\001\005\006\132\336\021\067"}, + {0x1EEC, "\001\010\006\132\336\122\013\040"}, + {0x1EED, "\001\005\006\132\336\122\013\040"}, + {0x1EEE, "\001\010\006\132\336\172"}, + {0x1EEF, "\001\005\006\132\336\172"}, + {0x1EF0, "\001\010\006\132\336\037\043"}, + {0x1EF1, "\001\005\006\132\336\037\043"}, + {0x1EF2, "\001\010\006\265\021\067"}, + {0x1EF3, "\001\005\006\265\021\067"}, + {0x1EF4, "\001\010\006\265\037\043"}, + {0x1EF5, "\001\005\006\265\037\043"}, + {0x1EF6, "\001\010\006\265\122\013\040"}, + {0x1EF7, "\001\005\006\265\122\013\040"}, + {0x1EF8, "\001\010\006\265\172"}, + {0x1EF9, "\001\005\006\265\172"}, + {0x1F00, "\001\005\027\203\060\143"}, + {0x1F01, "\001\005\027\203\060\134"}, + {0x1F02, "\001\005\027\203\060\143\020\021\067"}, + {0x1F03, "\001\005\027\203\060\134\020\021\067"}, + {0x1F04, "\001\005\027\203\060\143\020\021\062"}, + {0x1F05, "\001\005\027\203\060\134\020\021\062"}, + {0x1F06, "\001\005\027\203\060\143\020\072"}, + {0x1F07, "\001\005\027\203\060\134\020\072"}, + {0x1F08, "\001\010\027\203\060\143"}, + {0x1F09, "\001\010\027\203\060\134"}, + {0x1F0A, "\001\010\027\203\060\143\020\021\067"}, + {0x1F0B, "\001\010\027\203\060\134\020\021\067"}, + {0x1F0C, "\001\010\027\203\060\143\020\021\062"}, + {0x1F0D, "\001\010\027\203\060\134\020\021\062"}, + {0x1F0E, "\001\010\027\203\060\143\020\072"}, + {0x1F0F, "\001\010\027\203\060\134\020\072"}, + {0x1F10, "\001\005\027\326\060\143"}, + {0x1F11, "\001\005\027\326\060\134"}, + {0x1F12, "\001\005\027\326\060\143\020\021\067"}, + {0x1F13, "\001\005\027\326\060\134\020\021\067"}, + {0x1F14, "\001\005\027\326\060\143\020\021\062"}, + {0x1F15, "\001\005\027\326\060\134\020\021\062"}, + {0x1F18, "\001\010\027\326\060\143"}, + {0x1F19, "\001\010\027\326\060\134"}, + {0x1F1A, "\001\010\027\326\060\143\020\021\067"}, + {0x1F1B, "\001\010\027\326\060\134\020\021\067"}, + {0x1F1C, "\001\010\027\326\060\143\020\021\062"}, + {0x1F1D, "\001\010\027\326\060\134\020\021\062"}, + {0x1F20, "\001\005\027\224\060\143"}, + {0x1F21, "\001\005\027\224\060\134"}, + {0x1F22, "\001\005\027\224\060\143\020\021\067"}, + {0x1F23, "\001\005\027\224\060\134\020\021\067"}, + {0x1F24, "\001\005\027\224\060\143\020\021\062"}, + {0x1F25, "\001\005\027\224\060\134\020\021\062"}, + {0x1F26, "\001\005\027\224\060\143\020\072"}, + {0x1F27, "\001\005\027\224\060\134\020\072"}, + {0x1F28, "\001\010\027\224\060\143"}, + {0x1F29, "\001\010\027\224\060\134"}, + {0x1F2A, "\001\010\027\224\060\143\020\021\067"}, + {0x1F2B, "\001\010\027\224\060\134\020\021\067"}, + {0x1F2C, "\001\010\027\224\060\143\020\021\062"}, + {0x1F2D, "\001\010\027\224\060\134\020\021\062"}, + {0x1F2E, "\001\010\027\224\060\143\020\072"}, + {0x1F2F, "\001\010\027\224\060\134\020\072"}, + {0x1F30, "\001\005\027\104\060\143"}, + {0x1F31, "\001\005\027\104\060\134"}, + {0x1F32, "\001\005\027\104\060\143\020\021\067"}, + {0x1F33, "\001\005\027\104\060\134\020\021\067"}, + {0x1F34, "\001\005\027\104\060\143\020\021\062"}, + {0x1F35, "\001\005\027\104\060\134\020\021\062"}, + {0x1F36, "\001\005\027\104\060\143\020\072"}, + {0x1F37, "\001\005\027\104\060\134\020\072"}, + {0x1F38, "\001\010\027\104\060\143"}, + {0x1F39, "\001\010\027\104\060\134"}, + {0x1F3A, "\001\010\027\104\060\143\020\021\067"}, + {0x1F3B, "\001\010\027\104\060\134\020\021\067"}, + {0x1F3C, "\001\010\027\104\060\143\020\021\062"}, + {0x1F3D, "\001\010\027\104\060\134\020\021\062"}, + {0x1F3E, "\001\010\027\104\060\143\020\072"}, + {0x1F3F, "\001\010\027\104\060\134\020\072"}, + {0x1F40, "\001\005\027\355\036\060\143"}, + {0x1F41, "\001\005\027\355\036\060\134"}, + {0x1F42, "\001\005\027\355\036\060\143\020\021\067"}, + {0x1F43, "\001\005\027\355\036\060\134\020\021\067"}, + {0x1F44, "\001\005\027\355\036\060\143\020\021\062"}, + {0x1F45, "\001\005\027\355\036\060\134\020\021\062"}, + {0x1F48, "\001\010\027\355\036\060\143"}, + {0x1F49, "\001\010\027\355\036\060\134"}, + {0x1F4A, "\001\010\027\355\036\060\143\020\021\067"}, + {0x1F4B, "\001\010\027\355\036\060\134\020\021\067"}, + {0x1F4C, "\001\010\027\355\036\060\143\020\021\062"}, + {0x1F4D, "\001\010\027\355\036\060\134\020\021\062"}, + {0x1F50, "\001\005\027\262\060\143"}, + {0x1F51, "\001\005\027\262\060\134"}, + {0x1F52, "\001\005\027\262\060\143\020\021\067"}, + {0x1F53, "\001\005\027\262\060\134\020\021\067"}, + {0x1F54, "\001\005\027\262\060\143\020\021\062"}, + {0x1F55, "\001\005\027\262\060\134\020\021\062"}, + {0x1F56, "\001\005\027\262\060\143\020\072"}, + {0x1F57, "\001\005\027\262\060\134\020\072"}, + {0x1F59, "\001\010\027\262\060\134"}, + {0x1F5B, "\001\010\027\262\060\134\020\021\067"}, + {0x1F5D, "\001\010\027\262\060\134\020\021\062"}, + {0x1F5F, "\001\010\027\262\060\134\020\072"}, + {0x1F60, "\001\005\027\201\060\143"}, + {0x1F61, "\001\005\027\201\060\134"}, + {0x1F62, "\001\005\027\201\060\143\020\021\067"}, + {0x1F63, "\001\005\027\201\060\134\020\021\067"}, + {0x1F64, "\001\005\027\201\060\143\020\021\062"}, + {0x1F65, "\001\005\027\201\060\134\020\021\062"}, + {0x1F66, "\001\005\027\201\060\143\020\072"}, + {0x1F67, "\001\005\027\201\060\134\020\072"}, + {0x1F68, "\001\010\027\201\060\143"}, + {0x1F69, "\001\010\027\201\060\134"}, + {0x1F6A, "\001\010\027\201\060\143\020\021\067"}, + {0x1F6B, "\001\010\027\201\060\134\020\021\067"}, + {0x1F6C, "\001\010\027\201\060\143\020\021\062"}, + {0x1F6D, "\001\010\027\201\060\134\020\021\062"}, + {0x1F6E, "\001\010\027\201\060\143\020\072"}, + {0x1F6F, "\001\010\027\201\060\134\020\072"}, + {0x1F70, "\001\005\027\203\021\067"}, + {0x1F71, "\001\005\027\203\021\062"}, + {0x1F72, "\001\005\027\326\021\067"}, + {0x1F73, "\001\005\027\326\021\062"}, + {0x1F74, "\001\005\027\224\021\067"}, + {0x1F75, "\001\005\027\224\021\062"}, + {0x1F76, "\001\005\027\104\021\067"}, + {0x1F77, "\001\005\027\104\021\062"}, + {0x1F78, "\001\005\027\355\036\021\067"}, + {0x1F79, "\001\005\027\355\036\021\062"}, + {0x1F7A, "\001\005\027\262\021\067"}, + {0x1F7B, "\001\005\027\262\021\062"}, + {0x1F7C, "\001\005\027\201\021\067"}, + {0x1F7D, "\001\005\027\201\021\062"}, + {0x1F80, "\001\005\027\203\060\143\104\043"}, + {0x1F81, "\001\005\027\203\060\134\104\043"}, + {0x1F82, "\001\005\027\203\060\143\021\067\020\104\043"}, + {0x1F83, "\001\005\027\203\060\134\021\067\020\104\043"}, + {0x1F84, "\001\005\027\203\060\143\021\062\020\104\043"}, + {0x1F85, "\001\005\027\203\060\134\021\062\020\104\043"}, + {0x1F86, "\001\005\027\203\060\143\072\020\104\043"}, + {0x1F87, "\001\005\027\203\060\134\072\020\104\043"}, + {0x1F88, "\001\010\027\203\060\143\104\043"}, + {0x1F89, "\001\010\027\203\060\134\104\043"}, + {0x1F8A, "\001\010\027\203\060\143\021\067\020\104\043"}, + {0x1F8B, "\001\010\027\203\060\134\021\067\020\104\043"}, + {0x1F8C, "\001\010\027\203\060\143\021\062\020\104\043"}, + {0x1F8D, "\001\010\027\203\060\134\021\062\020\104\043"}, + {0x1F8E, "\001\010\027\203\060\143\072\020\104\043"}, + {0x1F8F, "\001\010\027\203\060\134\072\020\104\043"}, + {0x1F90, "\001\005\027\224\060\143\104\043"}, + {0x1F91, "\001\005\027\224\060\134\104\043"}, + {0x1F92, "\001\005\027\224\060\143\021\067\020\104\043"}, + {0x1F93, "\001\005\027\224\060\134\021\067\020\104\043"}, + {0x1F94, "\001\005\027\224\060\143\021\062\020\104\043"}, + {0x1F95, "\001\005\027\224\060\134\021\062\020\104\043"}, + {0x1F96, "\001\005\027\224\060\143\072\020\104\043"}, + {0x1F97, "\001\005\027\224\060\134\072\020\104\043"}, + {0x1F98, "\001\010\027\224\060\143\104\043"}, + {0x1F99, "\001\010\027\224\060\134\104\043"}, + {0x1F9A, "\001\010\027\224\060\143\021\067\020\104\043"}, + {0x1F9B, "\001\010\027\224\060\134\021\067\020\104\043"}, + {0x1F9C, "\001\010\027\224\060\143\021\062\020\104\043"}, + {0x1F9D, "\001\010\027\224\060\134\021\062\020\104\043"}, + {0x1F9E, "\001\010\027\224\060\143\072\020\104\043"}, + {0x1F9F, "\001\010\027\224\060\134\072\020\104\043"}, + {0x1FA0, "\001\005\027\201\060\143\104\043"}, + {0x1FA1, "\001\005\027\201\060\134\104\043"}, + {0x1FA2, "\001\005\027\201\060\143\021\067\020\104\043"}, + {0x1FA3, "\001\005\027\201\060\134\021\067\020\104\043"}, + {0x1FA4, "\001\005\027\201\060\143\021\062\020\104\043"}, + {0x1FA5, "\001\005\027\201\060\134\021\062\020\104\043"}, + {0x1FA6, "\001\005\027\201\060\143\072\020\104\043"}, + {0x1FA7, "\001\005\027\201\060\134\072\020\104\043"}, + {0x1FA8, "\001\010\027\201\060\143\104\043"}, + {0x1FA9, "\001\010\027\201\060\134\104\043"}, + {0x1FAA, "\001\010\027\201\060\143\021\067\020\104\043"}, + {0x1FAB, "\001\010\027\201\060\134\021\067\020\104\043"}, + {0x1FAC, "\001\010\027\201\060\143\021\062\020\104\043"}, + {0x1FAD, "\001\010\027\201\060\134\021\062\020\104\043"}, + {0x1FAE, "\001\010\027\201\060\143\072\020\104\043"}, + {0x1FAF, "\001\010\027\201\060\134\072\020\104\043"}, + {0x1FB0, "\001\005\027\203\356\133"}, + {0x1FB1, "\001\005\027\203\174"}, + {0x1FB2, "\001\005\027\203\021\067\104\043"}, + {0x1FB3, "\001\005\027\203\104\043"}, + {0x1FB4, "\001\005\027\203\021\062\104\043"}, + {0x1FB6, "\001\005\027\203\072"}, + {0x1FB7, "\001\005\027\203\072\104\043"}, + {0x1FB8, "\001\010\027\203\356\133"}, + {0x1FB9, "\001\010\027\203\174"}, + {0x1FBA, "\001\010\027\203\021\067"}, + {0x1FBB, "\001\010\027\203\021\062"}, + {0x1FBC, "\001\010\027\203\104\043"}, + {0x1FBD, "\360\142"}, + {0x1FBE, "\104\043"}, + {0x1FBF, "\060\143"}, + {0x1FC0, "\072\317"}, + {0x1FC1, "\355\061\020\072"}, + {0x1FC2, "\001\005\027\224\021\067\104\043"}, + {0x1FC3, "\001\005\027\224\104\043"}, + {0x1FC4, "\001\005\027\224\021\062\104\043"}, + {0x1FC6, "\001\005\027\224\072"}, + {0x1FC7, "\001\005\027\224\072\104\043"}, + {0x1FC8, "\001\010\027\326\021\067"}, + {0x1FC9, "\001\010\027\326\021\062"}, + {0x1FCA, "\001\010\027\224\021\067"}, + {0x1FCB, "\001\010\027\224\021\062"}, + {0x1FCC, "\001\010\027\224\104\043"}, + {0x1FCD, "\060\143\020\021\067"}, + {0x1FCE, "\060\143\020\021\062"}, + {0x1FCF, "\060\143\020\072\317"}, + {0x1FD0, "\001\005\027\104\356\133"}, + {0x1FD1, "\001\005\027\104\174"}, + {0x1FD2, "\001\005\027\104\355\061\020\021\067"}, + {0x1FD3, "\001\005\027\104\355\061\020\021\062"}, + {0x1FD6, "\001\005\027\104\072"}, + {0x1FD7, "\001\005\027\104\355\061\020\072"}, + {0x1FD8, "\001\010\027\104\356\133"}, + {0x1FD9, "\001\010\027\104\174"}, + {0x1FDA, "\001\010\027\104\021\067"}, + {0x1FDB, "\001\010\027\104\021\062"}, + {0x1FDD, "\060\134\020\021\067"}, + {0x1FDE, "\060\134\020\021\062"}, + {0x1FDF, "\060\134\020\072\317"}, + {0x1FE0, "\001\005\027\262\356\133"}, + {0x1FE1, "\001\005\027\262\174"}, + {0x1FE2, "\001\005\027\262\355\061\020\021\067"}, + {0x1FE3, "\001\005\027\262\355\061\020\021\062"}, + {0x1FE4, "\001\005\027\356\036\060\143"}, + {0x1FE5, "\001\005\027\356\036\060\134"}, + {0x1FE6, "\001\005\027\262\072"}, + {0x1FE7, "\001\005\027\262\355\061\020\072"}, + {0x1FE8, "\001\010\027\262\356\133"}, + {0x1FE9, "\001\010\027\262\174"}, + {0x1FEA, "\001\010\027\262\021\067"}, + {0x1FEB, "\001\010\027\262\021\062"}, + {0x1FEC, "\001\010\027\356\036\060\134"}, + {0x1FED, "\355\061\020\021\067"}, + {0x1FEE, "\355\061\020\021\062"}, + {0x1FEF, "\021\067\317"}, + {0x1FF2, "\001\005\027\201\021\067\104\043"}, + {0x1FF3, "\001\005\027\201\104\043"}, + {0x1FF4, "\001\005\027\201\021\062\104\043"}, + {0x1FF6, "\001\005\027\201\072"}, + {0x1FF7, "\001\005\027\201\072\104\043"}, + {0x1FF8, "\001\010\027\355\036\021\067"}, + {0x1FF9, "\001\010\027\355\036\021\062"}, + {0x1FFA, "\001\010\027\201\021\067"}, + {0x1FFB, "\001\010\027\201\021\062"}, + {0x1FFC, "\001\010\027\201\104\043"}, + {0x1FFD, "\021\062\317"}, + {0x1FFE, "\060\134"}, + {0x2000, "\357\131"}, + {0x2001, "\356\004"}, + {0x2002, "\365\246"}, + {0x2003, "\363\222"}, + {0x2004, "\357\360\007\356\004"}, + {0x2005, "\357\017\007\356\004"}, + {0x2006, "\357\031\007\356\004"}, + {0x2007, "\355\073\361\124"}, + {0x2008, "\355\073\355\234"}, + {0x2009, "\355\073\360\242"}, + {0x200A, "\355\073\375\367"}, + {0x200B, "\355\073\270\105"}, + {0x200C, "\362\341\270\105"}, + {0x200D, "\361\026\270\105"}, + {0x200E, "\204\357\152"}, + {0x200F, "\204\357\143"}, + {0x2010, "\355\126\355\315"}, + {0x2011, "\355\126\355\315\361\026"}, + {0x2012, "\355\007\361\124"}, + {0x2013, "\355\007\357\131"}, + {0x2014, "\355\007\356\004"}, + {0x2015, "\246\356\335"}, + {0x2016, "\070\243\256"}, + {0x2017, "\070\355\126\043"}, + {0x2018, "\356\332\325"}, + {0x2019, "\356\332"}, + {0x201A, "\356\333\320"}, + {0x201B, "\356\333\344\325"}, + {0x201C, "\356\332\070\325"}, + {0x201D, "\356\332\070"}, + {0x201E, "\356\333\070\320"}, + {0x201F, "\356\333\070\344\325"}, + {0x2020, "\357\253"}, + {0x2021, "\070\357\253"}, + {0x2022, "\356\107"}, + {0x2023, "\356\107\356\131"}, + {0x2024, "\037\357\116\355\001"}, + {0x2025, "\037\357\116\070"}, + {0x2026, "\251\007\357\345"}, + {0x2027, "\037\007\365\103\007\361\065"}, + {0x2028, "\355\045\007\370\167"}, + {0x2029, "\355\045\007\357\266"}, + {0x202A, "\360\230\357\152"}, + {0x202B, "\360\230\357\143"}, + {0x202C, "\365\360\007\360\245\365\272"}, + {0x202D, "\360\247\357\152"}, + {0x202E, "\360\247\357\143"}, + {0x202F, "\355\073\357\201\377\040"}, + {0x2030, "\022\355\057\355\271"}, + {0x2031, "\022\355\057\355\034\355\271"}, + {0x2032, "\355\235"}, + {0x2033, "\070\355\235"}, + {0x2034, "\355\220\355\235"}, + {0x2035, "\355\235\355\013"}, + {0x2036, "\070\355\235\355\013"}, + {0x2037, "\355\220\355\235\355\013"}, + {0x2038, "\363\304\356\057"}, + {0x2039, "\355\135\355\001\015\033\052"}, + {0x203A, "\355\135\355\001\015\033\053"}, + {0x203B, "\204\007\374\173"}, + {0x203C, "\070\037\355\312"}, + {0x203D, "\037\366\032"}, + {0x203E, "\355\007\013\040"}, + {0x203F, "\362\007\043"}, + {0x2040, "\362\007\013\040"}, + {0x2041, "\356\346\356\057"}, + {0x2042, "\362\376"}, + {0x2043, "\356\107\355\126\355\315"}, + {0x2044, "\246\360\253"}, + {0x2045, "\122\052\164\357\001"}, + {0x2046, "\122\221\164\357\001"}, + {0x2048, "\037\365\157"}, + {0x2049, "\037\365\153"}, + {0x204A, "\357\250\375\213\020"}, + {0x204B, "\356\242\007\357\237\355\013"}, + {0x204C, "\356\107\264\362\035\044\053"}, + {0x204D, "\356\107\264\362\035\044\052"}, + {0x204F, "\355\073\376\042"}, + {0x206A, "\360\346\360\157\361\345"}, + {0x206B, "\360\043\360\157\361\345"}, + {0x206C, "\360\346\007\360\244\004"}, + {0x206D, "\360\043\007\360\244\004"}, + {0x206E, "\356\254\007\360\246\007\024\371\104"}, + {0x206F, "\356\254\007\360\246\007\024\371\316"}, + {0x2070, "\355\074\331"}, + {0x2074, "\355\074\220"}, + {0x2075, "\355\074\230"}, + {0x2076, "\355\074\255"}, + {0x2077, "\355\074\252"}, + {0x2078, "\355\074\226"}, + {0x2079, "\355\074\257"}, + {0x207A, "\355\074\057\214"}, + {0x207B, "\355\074\057\355\020"}, + {0x207C, "\355\074\057\173"}, + {0x207D, "\355\074\355\123\052"}, + {0x207E, "\355\074\355\123\053"}, + {0x207F, "\355\074\001\005\006\241"}, + {0x2080, "\355\110\331"}, + {0x2081, "\355\110\110"}, + {0x2082, "\355\110\127"}, + {0x2083, "\355\110\136"}, + {0x2084, "\355\110\220"}, + {0x2085, "\355\110\230"}, + {0x2086, "\355\110\255"}, + {0x2087, "\355\110\252"}, + {0x2088, "\355\110\226"}, + {0x2089, "\355\110\257"}, + {0x208A, "\355\110\057\214"}, + {0x208B, "\355\110\057\355\020"}, + {0x208C, "\355\110\057\173"}, + {0x208D, "\355\110\355\123\052"}, + {0x208E, "\355\110\355\123\053"}, + {0x20A0, "\022\377\025"}, + {0x20A1, "\022\360\134"}, + {0x20A2, "\022\365\122"}, + {0x20A3, "\022\366\107\366\110"}, + {0x20A4, "\022\370\173"}, + {0x20A5, "\022\370\364"}, + {0x20A6, "\022\371\100"}, + {0x20A7, "\022\372\205"}, + {0x20A8, "\022\357\316"}, + {0x20A9, "\022\362\103"}, + {0x20AA, "\022\371\326\363\337"}, + {0x20AB, "\022\365\322"}, + {0x20AC, "\022\366\027"}, + {0x20AD, "\022\360\376"}, + {0x20AE, "\022\375\236"}, + {0x20AF, "\022\365\330"}, + {0x20D0, "\026\362\061\015\033\052\013\040"}, + {0x20D1, "\026\362\061\015\033\053\013\040"}, + {0x20D2, "\026\243\256\356\221\356\056"}, + {0x20D3, "\026\243\256\356\314\356\056"}, + {0x20D4, "\026\061\013\355\215\356\105\013\040"}, + {0x20D5, "\026\061\013\355\215\300\013\040"}, + {0x20D6, "\026\061\015\033\052\013\040"}, + {0x20D7, "\026\061\015\033\053\013\040"}, + {0x20D8, "\026\302\356\315"}, + {0x20D9, "\026\302\013\355\215\300\356\315"}, + {0x20DA, "\026\302\013\355\215\356\105\356\315"}, + {0x20DB, "\026\136\251\013\040"}, + {0x20DC, "\026\220\251\013\040"}, + {0x20DD, "\026\272\356\171"}, + {0x20DE, "\026\035\356\171"}, + {0x20DF, "\026\355\266\356\171"}, + {0x20E0, "\026\272\356\171\020\246\355\044\356\073"}, + {0x20E1, "\026\061\052\020\053\013\040"}, + {0x20E2, "\026\360\026\356\171"}, + {0x20E3, "\026\362\024\366\004\355\021"}, + {0x2100, "\022\355\307\365\052\007"}, + {0x2101, "\022\363\005\363\146\374\345\007"}, + {0x2102, "\313\010\355\371"}, + {0x2103, "\357\130\363\246"}, + {0x2104, "\022\243\007\356\307"}, + {0x2105, "\022\356\300\363\234"}, + {0x2106, "\022\363\220\375\370"}, + {0x2107, "\357\105\365\152"}, + {0x2108, "\374\236"}, + {0x2109, "\357\130\366\040"}, + {0x210A, "\005\266\007\355\144"}, + {0x210B, "\010\237\007\355\144"}, + {0x210C, "\010\237\356\205"}, + {0x210D, "\237\010\355\371"}, + {0x210E, "\357\105\007\361\204"}, + {0x210F, "\357\105\007\361\204\355\146\127\355\233"}, + {0x2110, "\010\103\007\355\144"}, + {0x2111, "\010\103\356\205"}, + {0x2112, "\010\211\007\355\144"}, + {0x2113, "\005\211\007\355\144"}, + {0x2114, "\022\211\334\232"}, + {0x2115, "\241\010\355\371"}, + {0x2116, "\022\361\125"}, + {0x2117, "\360\137\007\372\215"}, + {0x2118, "\154\365\375\007\376\100"}, + {0x2119, "\355\021\010\355\371"}, + {0x211A, "\355\173\010\355\371"}, + {0x211B, "\010\167\007\355\144"}, + {0x211C, "\010\167\356\205"}, + {0x211D, "\167\010\355\371"}, + {0x211E, "\372\106"}, + {0x211F, "\374\175"}, + {0x2120, "\022\356\300\204\007\374\254"}, + {0x2121, "\022\357\050"}, + {0x2122, "\022\356\300\204\007\365\046"}, + {0x2123, "\376\017"}, + {0x2124, "\271\010\355\371"}, + {0x2125, "\022\372\075"}, + {0x2126, "\022\356\365"}, + {0x2127, "\022\356\365\355\143"}, + {0x2128, "\010\271\356\205"}, + {0x2129, "\005\027\104\325"}, + {0x212A, "\022\367\376"}, + {0x212B, "\022\362\326"}, + {0x212C, "\010\334\007\355\144"}, + {0x212D, "\010\313\356\205"}, + {0x212E, "\022\366\022"}, + {0x212F, "\005\130\007\355\144"}, + {0x2130, "\010\130\007\355\144"}, + {0x2131, "\010\355\062\007\355\144"}, + {0x2132, "\010\355\062\325"}, + {0x2133, "\010\276\007\355\144"}, + {0x2134, "\005\064\007\355\144"}, + {0x2135, "\022\355\372"}, + {0x2136, "\022\357\072"}, + {0x2137, "\022\366\224"}, + {0x2138, "\022\356\317"}, + {0x2139, "\103\363\173\365\155"}, + {0x213A, "\355\173\010\356\153"}, + {0x2153, "\355\105\110\357\360"}, + {0x2154, "\355\105\127\357\360"}, + {0x2155, "\355\105\110\357\102"}, + {0x2156, "\355\105\127\357\103"}, + {0x2157, "\355\105\136\357\103"}, + {0x2158, "\355\105\220\357\103"}, + {0x2159, "\355\105\110\357\031"}, + {0x215A, "\355\105\230\374\323"}, + {0x215B, "\355\105\110\356\210"}, + {0x215C, "\355\105\136\355\256"}, + {0x215D, "\355\105\230\355\256"}, + {0x215E, "\355\105\252\355\256"}, + {0x215F, "\356\103\360\253\110"}, + {0x2160, "\024\260\110"}, + {0x2161, "\024\260\127"}, + {0x2162, "\024\260\136"}, + {0x2163, "\024\260\220"}, + {0x2164, "\024\260\230"}, + {0x2165, "\024\260\255"}, + {0x2166, "\024\260\252"}, + {0x2167, "\024\260\226"}, + {0x2168, "\024\260\257"}, + {0x2169, "\024\260\355\034"}, + {0x216A, "\024\260\356\027"}, + {0x216B, "\024\260\355\317"}, + {0x216C, "\024\260\357\101"}, + {0x216D, "\024\260\355\245"}, + {0x216E, "\024\260\230\360\112"}, + {0x216F, "\024\260\355\271"}, + {0x2170, "\024\260\005\110"}, + {0x2171, "\024\260\005\127"}, + {0x2172, "\024\260\005\136"}, + {0x2173, "\024\260\005\220"}, + {0x2174, "\024\260\005\230"}, + {0x2175, "\024\260\005\255"}, + {0x2176, "\024\260\005\252"}, + {0x2177, "\024\260\005\226"}, + {0x2178, "\024\260\005\257"}, + {0x2179, "\024\260\005\355\034"}, + {0x217A, "\024\260\005\356\027"}, + {0x217B, "\024\260\005\355\317"}, + {0x217C, "\024\260\005\357\101"}, + {0x217D, "\024\260\005\355\245"}, + {0x217E, "\024\260\005\230\360\112"}, + {0x217F, "\024\260\005\355\271"}, + {0x2180, "\024\260\355\271\313\275"}, + {0x2181, "\024\260\230\355\271"}, + {0x2182, "\024\260\355\034\355\271"}, + {0x2183, "\024\260\355\245\325"}, + {0x2190, "\061\015\033\052"}, + {0x2191, "\061\015\050\102"}, + {0x2192, "\061\015\033\053"}, + {0x2193, "\061\015\050\101"}, + {0x2194, "\061\052\020\053"}, + {0x2195, "\061\357\166"}, + {0x2196, "\061\356\024"}, + {0x2197, "\061\356\023"}, + {0x2198, "\061\355\353"}, + {0x2199, "\061\357\043"}, + {0x219A, "\061\015\033\052\355\376"}, + {0x219B, "\061\015\033\053\355\376"}, + {0x219C, "\061\015\033\052\356\367"}, + {0x219D, "\061\015\033\053\356\367"}, + {0x219E, "\061\015\033\052\044\127\357\003"}, + {0x219F, "\061\015\050\102\044\127\357\003"}, + {0x21A0, "\061\015\033\053\044\127\357\003"}, + {0x21A1, "\061\015\050\101\044\127\357\003"}, + {0x21A2, "\061\015\033\052\044\355\253"}, + {0x21A3, "\061\015\033\053\044\355\253"}, + {0x21A4, "\061\355\314\355\014\015\033\052"}, + {0x21A5, "\061\355\314\355\014\015\050\102"}, + {0x21A6, "\061\355\314\355\014\015\033\053"}, + {0x21A7, "\061\355\314\355\014\015\050\101"}, + {0x21A8, "\061\357\166\355\146\363\036"}, + {0x21A9, "\061\015\033\052\164\122"}, + {0x21AA, "\061\015\033\053\164\122"}, + {0x21AB, "\061\015\033\052\164\357\071"}, + {0x21AC, "\061\015\033\053\164\357\071"}, + {0x21AD, "\061\360\261\356\367"}, + {0x21AE, "\061\360\261\355\376"}, + {0x21AF, "\061\015\050\101\013\376\300"}, + {0x21B0, "\061\015\050\102\164\355\003\015\033\052"}, + {0x21B1, "\061\015\050\102\164\355\003\015\033\053"}, + {0x21B2, "\061\015\050\101\164\355\003\015\033\052"}, + {0x21B3, "\061\015\050\101\164\355\003\015\033\053"}, + {0x21B4, "\061\015\033\053\164\273\015\050\101"}, + {0x21B5, "\061\015\050\101\164\273\015\033\052"}, + {0x21B6, "\061\361\307\013\355\215\356\105\013\040"}, + {0x21B7, "\061\361\307\013\355\215\300\013\040"}, + {0x21B8, "\061\356\024\356\213\375\371\246\356\221"}, + {0x21B9, "\061\015\033\052\356\213\110\355\014\356\030\061\015\033\053\356\213\110\355\014"}, + {0x21BA, "\061\013\355\215\356\105\044\272\355\343"}, + {0x21BB, "\061\013\355\215\300\044\272\355\343"}, + {0x21BC, "\355\165\015\033\052\164\355\250\015\050\102"}, + {0x21BD, "\355\165\015\033\052\164\355\250\015\050\101"}, + {0x21BE, "\355\165\015\050\102\164\355\250\015\033\053"}, + {0x21BF, "\355\165\015\050\102\164\355\250\015\033\052"}, + {0x21C0, "\355\165\015\033\053\164\355\250\015\050\102"}, + {0x21C1, "\355\165\015\033\053\164\355\250\015\050\101"}, + {0x21C2, "\355\165\015\050\101\164\355\250\015\033\053"}, + {0x21C3, "\355\165\015\050\101\164\355\250\015\033\052"}, + {0x21C4, "\061\015\033\053\356\030\061\015\033\052"}, + {0x21C5, "\061\015\050\102\044\052\357\120\061\015\050\101"}, + {0x21C6, "\061\015\033\052\356\030\061\015\033\053"}, + {0x21C7, "\356\373\007\356\330\015\033\052"}, + {0x21C8, "\356\373\007\356\330\015\050\102"}, + {0x21C9, "\356\373\007\356\330\015\033\053"}, + {0x21CA, "\356\373\007\356\330\015\050\101"}, + {0x21CB, "\355\165\015\033\052\356\030\355\165\015\033\053"}, + {0x21CC, "\355\165\015\033\053\356\030\355\165\015\033\052"}, + {0x21CD, "\070\061\015\033\052\355\376"}, + {0x21CE, "\070\061\052\020\053\355\376"}, + {0x21CF, "\070\061\015\033\053\355\376"}, + {0x21D0, "\070\061\015\033\052"}, + {0x21D1, "\070\061\015\050\102"}, + {0x21D2, "\070\061\015\033\053"}, + {0x21D3, "\070\061\015\050\101"}, + {0x21D4, "\070\061\052\020\053"}, + {0x21D5, "\070\061\357\166"}, + {0x21D6, "\070\061\356\024"}, + {0x21D7, "\070\061\356\023"}, + {0x21D8, "\070\061\355\353"}, + {0x21D9, "\070\061\357\043"}, + {0x21DA, "\355\220\061\015\033\052"}, + {0x21DB, "\355\220\061\015\033\053"}, + {0x21DC, "\061\015\033\052\013\362\010"}, + {0x21DD, "\061\015\033\053\013\362\010"}, + {0x21DE, "\061\015\050\102\164\070\246"}, + {0x21DF, "\061\015\050\101\164\070\246"}, + {0x21E0, "\061\357\006\015\033\052"}, + {0x21E1, "\061\357\006\015\050\102"}, + {0x21E2, "\061\357\006\015\033\053"}, + {0x21E3, "\061\357\006\015\050\101"}, + {0x21E4, "\061\015\033\052\356\213\110\355\014"}, + {0x21E5, "\061\015\033\053\356\213\110\355\014"}, + {0x21E6, "\061\356\137\015\033\052"}, + {0x21E7, "\061\356\137\015\050\102"}, + {0x21E8, "\061\356\137\015\033\053"}, + {0x21E9, "\061\356\137\015\050\101"}, + {0x21EA, "\061\356\137\015\050\102\044\356\031\355\314\355\014"}, + {0x21EB, "\061\316\015\050\102\355\146\357\032"}, + {0x21EC, "\061\316\015\050\102\355\146\357\032\020\355\126\242"}, + {0x21ED, "\061\316\015\050\102\355\146\357\032\020\246\256"}, + {0x21EE, "\070\061\316\015\050\102"}, + {0x21EF, "\070\061\316\015\050\102\355\146\357\032"}, + {0x21F0, "\061\316\015\033\053\362\351\355\146\361\077"}, + {0x21F1, "\061\356\024\013\360\231"}, + {0x21F2, "\061\355\353\013\360\231"}, + {0x21F3, "\061\316\015\050\102\020\050\101"}, + {0x2200, "\355\057\375\237"}, + {0x2201, "\365\050"}, + {0x2202, "\365\362\372\160"}, + {0x2203, "\357\174\366\035"}, + {0x2204, "\357\174\371\072\355\056"}, + {0x2205, "\366\007\376\022"}, + {0x2206, "\367\205"}, + {0x2207, "\371\076"}, + {0x2208, "\360\051\044"}, + {0x2209, "\371\070\355\056\044"}, + {0x220A, "\175\360\051\044"}, + {0x220B, "\356\055\355\246\360\027"}, + {0x220C, "\355\140\356\055\355\056\355\246\360\027"}, + {0x220D, "\175\356\055\355\246\360\027"}, + {0x220E, "\360\107\373\370\366\042\365\357"}, + {0x220F, "\356\106\007\033\356\012"}, + {0x2210, "\365\070\007\033\356\012"}, + {0x2211, "\374\353\007\033\356\012"}, + {0x2212, "\057\355\020"}, + {0x2213, "\057\371\011"}, + {0x2214, "\214\356\034"}, + {0x2215, "\246\355\044\007\357\135"}, + {0x2216, "\360\176\365\150"}, + {0x2217, "\355\171\355\115"}, + {0x2218, "\355\171\302"}, + {0x2219, "\355\171\356\107"}, + {0x221A, "\357\304\356\053"}, + {0x221B, "\357\304\365\124"}, + {0x221C, "\357\304\361\243"}, + {0x221D, "\373\271\044"}, + {0x221E, "\367\207"}, + {0x221F, "\355\374\221"}, + {0x2220, "\355\374"}, + {0x2221, "\355\374\361\053"}, + {0x2222, "\355\374\374\365"}, + {0x2223, "\356\174\110\360\203\007"}, + {0x2224, "\371\071\355\056\110\360\203\007"}, + {0x2225, "\357\267\044"}, + {0x2226, "\355\043\357\267\044"}, + {0x2227, "\020\356\100"}, + {0x2228, "\113\356\100"}, + {0x2229, "\357\204"}, + {0x222A, "\357\374"}, + {0x222B, "\355\257"}, + {0x222C, "\355\257\070"}, + {0x222D, "\355\257\355\220"}, + {0x222E, "\355\257\007\355\132"}, + {0x222F, "\355\257\007\375\043"}, + {0x2230, "\355\257\007\376\050"}, + {0x2231, "\355\257\013\355\215\300"}, + {0x2232, "\355\257\007\355\132\013\355\215\300"}, + {0x2233, "\355\257\007\355\132\013\355\215\356\105"}, + {0x2234, "\355\232\365\062"}, + {0x2235, "\372\155\355\023"}, + {0x2236, "\374\040"}, + {0x2237, "\361\224"}, + {0x2238, "\355\020\356\034"}, + {0x2239, "\366\034"}, + {0x223A, "\361\224\366\301"}, + {0x223B, "\360\327"}, + {0x223C, "\355\171\172"}, + {0x223D, "\355\171\172\355\143"}, + {0x223E, "\223\356\153\355\143"}, + {0x223F, "\374\317"}, + {0x2240, "\356\106\365\107"}, + {0x2241, "\355\043\172"}, + {0x2242, "\355\020\172"}, + {0x2243, "\360\056\173\044"}, + {0x2244, "\355\043\360\056\173\044"}, + {0x2245, "\356\140\173\044"}, + {0x2246, "\356\140\355\267\355\043\357\341\173\044"}, + {0x2247, "\244\356\140\244\357\341\173\044"}, + {0x2248, "\357\011\173\044"}, + {0x2249, "\355\043\357\011\173\044"}, + {0x224A, "\357\011\173\113\173\044"}, + {0x224B, "\355\220\172"}, + {0x224C, "\366\010\173\044"}, + {0x224D, "\355\130\044"}, + {0x224E, "\360\314\355\130\044"}, + {0x224F, "\360\176\075"}, + {0x2250, "\375\160\015\033\370\170"}, + {0x2251, "\360\314\173\044"}, + {0x2252, "\356\140\173\044\113\356\017\007"}, + {0x2253, "\356\017\007\113\356\140\173\044"}, + {0x2254, "\355\103\173"}, + {0x2255, "\173\355\103"}, + {0x2256, "\302\355\247\173"}, + {0x2257, "\173\164\302\013\040"}, + {0x2258, "\365\075\044"}, + {0x2259, "\366\021"}, + {0x225A, "\377\034\044"}, + {0x225B, "\173\164\355\015\013\040"}, + {0x225C, "\173\356\060"}, + {0x225D, "\173\355\232\365\355\044"}, + {0x225E, "\361\053\355\232"}, + {0x225F, "\377\026\013\365\326"}, + {0x2260, "\355\043\173\044"}, + {0x2261, "\360\343\044"}, + {0x2262, "\355\043\360\343\044"}, + {0x2263, "\357\341\355\130\044"}, + {0x2264, "\214\175\113\173\044"}, + {0x2265, "\214\340\113\173\044"}, + {0x2266, "\214\175\355\023\356\030\173\044"}, + {0x2267, "\214\340\355\023\356\030\173\044"}, + {0x2268, "\214\175\355\267\355\043\173\044"}, + {0x2269, "\214\340\355\267\355\043\173\044"}, + {0x226A, "\360\072\214\175\355\023"}, + {0x226B, "\360\072\214\340\355\023"}, + {0x226C, "\075"}, + {0x226D, "\355\043\355\130\044"}, + {0x226E, "\355\056\214\175\355\023"}, + {0x226F, "\355\056\214\340\355\023"}, + {0x2270, "\244\214\175\244\173\044"}, + {0x2271, "\244\214\340\244\173\044"}, + {0x2272, "\214\175\113\355\130\044"}, + {0x2273, "\214\340\113\355\130\044"}, + {0x2274, "\244\214\175\244\355\130\044"}, + {0x2275, "\244\214\340\244\355\130\044"}, + {0x2276, "\214\175\113\214\340\355\023"}, + {0x2277, "\214\340\113\214\175\355\023"}, + {0x2278, "\244\214\175\244\214\340\355\023"}, + {0x2279, "\244\214\340\244\214\175\355\023"}, + {0x227A, "\356\244"}, + {0x227B, "\356\117"}, + {0x227C, "\356\244\113\356\174\173\044"}, + {0x227D, "\356\117\113\356\174\173\044"}, + {0x227E, "\356\244\113\356\174\355\130\044"}, + {0x227F, "\356\117\113\356\174\355\130\044"}, + {0x2280, "\355\140\356\244\355\056"}, + {0x2281, "\355\140\356\117\355\056"}, + {0x2282, "\356\116\007"}, + {0x2283, "\356\120\007"}, + {0x2284, "\355\056\110\356\116\007"}, + {0x2285, "\355\056\110\356\120\007"}, + {0x2286, "\356\116\113\173\044"}, + {0x2287, "\356\120\113\173\044"}, + {0x2288, "\244\110\356\116\244\173\044"}, + {0x2289, "\244\110\356\120\244\173\044"}, + {0x228A, "\356\116\355\267\355\043\173\044"}, + {0x228B, "\356\120\355\267\355\043\173\044"}, + {0x228C, "\357\242"}, + {0x228D, "\356\355\007\357\242"}, + {0x228E, "\357\374\007\357\242"}, + {0x228F, "\356\017\356\053\007"}, + {0x2290, "\356\233\035\007"}, + {0x2291, "\356\017\356\053\113\173\044"}, + {0x2292, "\356\233\035\113\173\044"}, + {0x2293, "\363\262\035"}, + {0x2294, "\365\102\356\053"}, + {0x2295, "\214\051"}, + {0x2296, "\355\020\051"}, + {0x2297, "\357\243\355\232\051"}, + {0x2298, "\246\355\044\007\357\135\177"}, + {0x2299, "\355\171\037\051"}, + {0x229A, "\355\171\302\051"}, + {0x229B, "\355\171\355\115\051"}, + {0x229C, "\173\051"}, + {0x229D, "\355\007\051"}, + {0x229E, "\214\356\170"}, + {0x229F, "\355\020\356\170"}, + {0x22A0, "\357\243\355\232\356\170"}, + {0x22A1, "\355\171\037\356\170"}, + {0x22A2, "\355\014\221"}, + {0x22A3, "\355\014\052"}, + {0x22A4, "\355\014\015\050\101"}, + {0x22A5, "\355\014\015\050\102"}, + {0x22A6, "\362\374"}, + {0x22A7, "\371\006"}, + {0x22A8, "\362\076"}, + {0x22A9, "\372\067"}, + {0x22AA, "\246\256\355\220\164\357\362\044\053"}, + {0x22AB, "\246\256\070\164\357\362\044\053\070"}, + {0x22AC, "\355\140\373\273\355\056"}, + {0x22AD, "\355\056\362\076"}, + {0x22AE, "\371\073\355\056"}, + {0x22AF, "\371\317\256\070\164\357\362\044\053\070"}, + {0x22B0, "\373\265\357\037\361\254"}, + {0x22B1, "\356\117\357\037\361\254"}, + {0x22B2, "\355\352\355\231\007"}, + {0x22B3, "\356\055\355\246\355\352\355\231"}, + {0x22B4, "\355\352\355\231\113\173\044"}, + {0x22B5, "\356\055\355\246\355\352\355\231\113\173\044"}, + {0x22B6, "\356\233\007"}, + {0x22B7, "\356\017\007"}, + {0x22B8, "\371\031"}, + {0x22B9, "\370\277\366\325\365\060"}, + {0x22BA, "\367\220"}, + {0x22BB, "\113\366\033"}, + {0x22BC, "\355\043\020"}, + {0x22BD, "\355\043\113"}, + {0x22BE, "\355\374\221\164\355\202"}, + {0x22BF, "\346\356\111"}, + {0x22C0, "\020\356\100\007\033\356\012"}, + {0x22C1, "\113\356\100\007\033\356\012"}, + {0x22C2, "\357\204\007\033\356\012"}, + {0x22C3, "\374\200\007\033\356\012"}, + {0x22C4, "\355\171\355\266"}, + {0x22C5, "\355\171\037"}, + {0x22C6, "\355\171\355\015"}, + {0x22C7, "\365\275\357\243"}, + {0x22C8, "\356\362\361\152"}, + {0x22C9, "\356\106\357\027\044\052\007\360\234\355\231"}, + {0x22CA, "\356\106\357\027\044\053\007\360\234\355\231"}, + {0x22CB, "\356\106\357\027\044\052"}, + {0x22CC, "\356\106\357\027\044\053"}, + {0x22CD, "\355\020\172\355\143"}, + {0x22CE, "\113\356\100\361\252"}, + {0x22CF, "\020\356\100\361\252"}, + {0x22D0, "\356\116\070"}, + {0x22D1, "\356\120\070"}, + {0x22D2, "\357\204\070"}, + {0x22D3, "\357\374\070"}, + {0x22D4, "\360\250"}, + {0x22D5, "\173\020\357\267\044"}, + {0x22D6, "\214\175\355\023\356\034"}, + {0x22D7, "\214\340\355\023\356\034"}, + {0x22D8, "\360\135\214\175\355\023"}, + {0x22D9, "\360\135\214\340\355\023"}, + {0x22DA, "\214\175\113\173\113\214\340\355\023"}, + {0x22DB, "\214\340\113\173\113\214\175\355\023"}, + {0x22DC, "\173\113\214\175\355\023"}, + {0x22DD, "\173\113\214\340\355\023"}, + {0x22DE, "\173\113\356\244"}, + {0x22DF, "\365\371\113\356\117"}, + {0x22E0, "\244\361\226\244\173\044"}, + {0x22E1, "\244\361\341\244\173\044"}, + {0x22E2, "\244\356\017\356\053\244\173\044"}, + {0x22E3, "\244\356\233\035\244\173\044"}, + {0x22E4, "\356\017\035\113\357\134\007"}, + {0x22E5, "\356\233\035\113\357\134\007"}, + {0x22E6, "\214\175\355\267\355\043\355\130\044"}, + {0x22E7, "\214\340\355\267\355\043\355\130\044"}, + {0x22E8, "\361\226\355\267\355\043\355\130\044"}, + {0x22E9, "\361\341\355\267\355\043\355\130\044"}, + {0x22EA, "\355\056\110\355\352\355\231\007"}, + {0x22EB, "\355\140\356\055\355\056\355\246\355\352\355\231"}, + {0x22EC, "\244\355\352\355\231\244\173\044"}, + {0x22ED, "\244\173\244\365\063\355\246\355\352\355\231"}, + {0x22EE, "\136\251\375\045"}, + {0x22EF, "\136\251\371\062"}, + {0x22F0, "\136\251\360\175\015\050\273\102\044\053"}, + {0x22F1, "\136\251\360\175\015\050\273\101\044\053"}, + {0x2300, "\022\365\263"}, + {0x2301, "\061\377\030"}, + {0x2302, "\370\255"}, + {0x2303, "\355\003\007\061\015\050\102"}, + {0x2304, "\355\003\007\061\015\050\101"}, + {0x2305, "\373\270"}, + {0x2306, "\372\203"}, + {0x2307, "\243\356\367"}, + {0x2308, "\361\202\044\052"}, + {0x2309, "\361\202\044\053"}, + {0x230A, "\361\203\044\052"}, + {0x230B, "\361\203\044\053"}, + {0x230C, "\356\251\355\353"}, + {0x230D, "\356\251\357\043"}, + {0x230E, "\356\251\356\023"}, + {0x230F, "\356\251\356\024"}, + {0x2310, "\057\356\364\355\013"}, + {0x2311, "\372\163\356\053"}, + {0x2312, "\355\202"}, + {0x2313, "\374\244"}, + {0x2314, "\374\243"}, + {0x2315, "\366\006\375\357"}, + {0x2316, "\356\251\007\363\226"}, + {0x2317, "\035\007\376\044"}, + {0x2318, "\022\007\037\365\160"}, + {0x2319, "\057\356\364\325"}, + {0x231A, "\371\017"}, + {0x231B, "\374\206"}, + {0x231C, "\273\356\024"}, + {0x231D, "\273\356\023"}, + {0x231E, "\273\357\043"}, + {0x231F, "\273\355\353"}, + {0x2320, "\353\355\354\360\156"}, + {0x2321, "\353\356\020\360\156"}, + {0x2322, "\361\067"}, + {0x2323, "\374\361"}, + {0x2324, "\355\003\007\061\015\050\102\075\127\362\033\367\103"}, + {0x2325, "\362\024\372\104"}, + {0x2326, "\365\370\044\053"}, + {0x2327, "\355\026\355\247\356\111"}, + {0x2328, "\365\040"}, + {0x2329, "\122\015\033\052"}, + {0x232A, "\122\015\033\053"}, + {0x232B, "\365\367\044\052"}, + {0x232C, "\362\333\007\363\110"}, + {0x232D, "\365\140"}, + {0x232E, "\373\266\367\104"}, + {0x232F, "\375\054"}, + {0x2330, "\365\110\375\233"}, + {0x2331, "\372\111\007\370\320"}, + {0x2332, "\374\177\365\056"}, + {0x2333, "\372\177"}, + {0x2334, "\362\321"}, + {0x2335, "\366\106"}, + {0x2336, "\022\007\154\155\374\035"}, + {0x2337, "\022\007\154\155\355\075\357\234"}, + {0x2338, "\022\007\154\155\377\035"}, + {0x2339, "\022\007\154\155\365\321"}, + {0x233A, "\022\007\154\155\374\063"}, + {0x233B, "\022\007\154\155\362\372"}, + {0x233C, "\022\007\154\155\374\062"}, + {0x233D, "\022\007\154\155\366\115"}, + {0x233E, "\022\007\154\155\363\104"}, + {0x233F, "\022\007\154\155\365\100\232"}, + {0x2340, "\022\007\154\155\365\065\355\376"}, + {0x2341, "\022\007\154\155\355\075\355\044"}, + {0x2342, "\022\007\154\155\355\075\355\044\356\073"}, + {0x2343, "\022\007\154\155\355\075\214\175\355\023"}, + {0x2344, "\022\007\154\155\355\075\214\340\355\023"}, + {0x2345, "\022\007\154\155\356\302\015\033\052"}, + {0x2346, "\022\007\154\155\356\302\015\033\053"}, + {0x2347, "\022\007\154\155\355\075\370\163"}, + {0x2348, "\022\007\154\155\355\075\365\061"}, + {0x2349, "\022\007\154\155\361\303"}, + {0x234A, "\022\007\154\155\355\014\015\050\101\355\216"}, + {0x234B, "\022\007\154\155\374\224"}, + {0x234C, "\022\007\154\155\355\075\072\355\143"}, + {0x234D, "\022\007\154\155\355\075\356\060"}, + {0x234E, "\022\007\154\155\360\245"}, + {0x234F, "\022\007\154\155\356\302\015\050\102"}, + {0x2350, "\022\007\154\155\355\075\357\100"}, + {0x2351, "\022\007\154\155\355\014\015\050\102"}, + {0x2352, "\022\007\154\155\363\235"}, + {0x2353, "\022\007\154\155\355\075\072"}, + {0x2354, "\022\007\154\155\355\075\365\244"}, + {0x2355, "\022\007\154\155\366\036"}, + {0x2356, "\022\007\154\155\356\302\015\050\101"}, + {0x2357, "\022\007\154\155\355\075\366\003"}, + {0x2358, "\022\007\154\155\355\306\355\216"}, + {0x2359, "\022\007\154\155\356\060\355\216"}, + {0x235A, "\022\007\154\155\355\266\355\216"}, + {0x235B, "\022\007\154\155\175\302\355\216"}, + {0x235C, "\022\007\154\155\302\355\216"}, + {0x235D, "\022\007\154\155\362\273"}, + {0x235E, "\022\007\154\155\355\306\356\170"}, + {0x235F, "\022\007\154\155\363\354"}, + {0x2360, "\022\007\154\155\363\155\035"}, + {0x2361, "\022\007\154\155\375\072"}, + {0x2362, "\022\007\154\155\365\072"}, + {0x2363, "\022\007\154\155\375\075"}, + {0x2364, "\022\007\154\155\370\366"}, + {0x2365, "\022\007\154\155\365\267"}, + {0x2366, "\022\007\154\155\360\250"}, + {0x2367, "\022\007\154\155\357\074"}, + {0x2368, "\022\007\154\155\361\067"}, + {0x2369, "\022\007\154\155\371\010"}, + {0x236A, "\022\007\154\155\363\032"}, + {0x236B, "\022\007\154\155\376\015"}, + {0x236C, "\022\007\154\155\376\301"}, + {0x236D, "\022\007\154\155\362\316"}, + {0x236E, "\022\007\154\155\356\104\355\216"}, + {0x236F, "\022\007\154\155\355\075\357\134\007"}, + {0x2370, "\022\007\154\155\355\075\367\210"}, + {0x2371, "\022\007\154\155\371\320"}, + {0x2372, "\022\007\154\155\371\321"}, + {0x2373, "\022\007\154\155\104"}, + {0x2374, "\022\007\154\155\356\036"}, + {0x2375, "\022\007\154\155\201"}, + {0x2376, "\022\007\154\155\203\355\216"}, + {0x2377, "\022\007\154\155\326\355\216"}, + {0x2378, "\022\007\154\155\104\355\216"}, + {0x2379, "\022\007\154\155\201\355\216"}, + {0x237A, "\022\007\154\155\203"}, + {0x237B, "\057\007\371\322"}, + {0x237D, "\363\224\361\147\044\377\033"}, + {0x237E, "\022\374\354"}, + {0x237F, "\243\256\044\037\355\137"}, + {0x2380, "\022\356\057"}, + {0x2381, "\022\007\361\325\360\136"}, + {0x2382, "\022\007\361\325\365\273"}, + {0x2383, "\022\365\156"}, + {0x2384, "\022\007\365\051"}, + {0x2385, "\035\147\375\251\013\355\175\356\307\357\120\243\256"}, + {0x2386, "\022\365\151"}, + {0x2387, "\022\360\047"}, + {0x2388, "\022\361\274\007\360\067"}, + {0x2389, "\246\356\335\357\145\177"}, + {0x238A, "\346\355\003\015\050\101\051"}, + {0x238B, "\272\355\131\044\061\356\024"}, + {0x238C, "\022\365\353"}, + {0x238D, "\022\371\014"}, + {0x238E, "\022\367\154"}, + {0x238F, "\022\357\033\013\360\132\355\343\007\375\335"}, + {0x2390, "\022\357\033\013\360\132\355\343\007\375\336"}, + {0x2391, "\022\357\033\361\157\362\272"}, + {0x2392, "\022\357\033\361\157\377\031"}, + {0x2393, "\022\365\104\360\136\263\127"}, + {0x2394, "\022\154\370\202"}, + {0x2395, "\022\007\154\155\355\075"}, + {0x2396, "\022\007\017\007\355\045\360\221"}, + {0x2397, "\356\372\373\275"}, + {0x2398, "\356\372\361\342"}, + {0x2399, "\022\360\345\360\026"}, + {0x239A, "\022\371\176\360\026"}, + {0x2400, "\022\355\057\361\122"}, + {0x2401, "\022\355\320\360\155"}, + {0x2402, "\022\355\320\007\357\046"}, + {0x2403, "\022\116\007\357\046"}, + {0x2404, "\022\116\007\356\045"}, + {0x2405, "\022\360\167"}, + {0x2406, "\022\360\152\007\357\025"}, + {0x2407, "\022\007\361\323"}, + {0x2408, "\022\355\073\360\052"}, + {0x2409, "\022\007\357\045\356\335"}, + {0x240A, "\022\007\360\113\007\243"}, + {0x240B, "\022\007\357\045\256"}, + {0x240C, "\022\007\374\226\007\356\372"}, + {0x240D, "\022\007\361\257\007\360\114"}, + {0x240E, "\022\360\331\356\313"}, + {0x240F, "\022\013\356\313"}, + {0x2410, "\022\360\025\356\045"}, + {0x2411, "\022\007\355\155\007\356\322\110"}, + {0x2412, "\022\007\355\155\007\356\322\127"}, + {0x2413, "\022\007\355\155\007\356\322\136"}, + {0x2414, "\022\007\355\155\007\356\322\220"}, + {0x2415, "\022\360\152\007\357\025\300"}, + {0x2416, "\022\007\361\346"}, + {0x2417, "\022\007\116\007\355\016\007\356\045"}, + {0x2418, "\022\360\153"}, + {0x2419, "\022\007\116\007\361\343"}, + {0x241A, "\022\007\357\343"}, + {0x241B, "\022\365\164"}, + {0x241C, "\022\355\045\007\366\065"}, + {0x241D, "\022\355\045\007\366\250"}, + {0x241E, "\022\355\045\365\147"}, + {0x241F, "\022\355\045\365\163"}, + {0x2420, "\022\355\057\355\073"}, + {0x2421, "\022\007\361\344"}, + {0x2422, "\022\376\045\355\057\370\122"}, + {0x2423, "\363\157\361\147"}, + {0x2424, "\022\007\371\327\243"}, + {0x2425, "\022\007\375\042\263\127"}, + {0x2426, "\022\007\357\343\263\127"}, + {0x2440, "\122\355\211"}, + {0x2441, "\363\255\355\211"}, + {0x2442, "\360\251\355\211"}, + {0x2443, "\360\251\355\076\355\211"}, + {0x2444, "\357\071\007\363\244\355\211"}, + {0x2445, "\356\362\361\152\355\211"}, + {0x2446, "\367\173\007\375\033\363\026\355\211"}, + {0x2447, "\371\015\212\363\336\355\211"}, + {0x2448, "\355\007\355\211"}, + {0x2449, "\361\125\007\365\053\355\211"}, + {0x244A, "\070\246\355\044\356\073\355\211"}, + {0x2460, "\024\110\051"}, + {0x2461, "\024\127\051"}, + {0x2462, "\024\136\051"}, + {0x2463, "\024\220\051"}, + {0x2464, "\024\230\051"}, + {0x2465, "\024\255\051"}, + {0x2466, "\024\252\051"}, + {0x2467, "\024\226\051"}, + {0x2468, "\024\257\051"}, + {0x2469, "\210\355\034\051"}, + {0x246A, "\210\356\027\051"}, + {0x246B, "\210\355\317\051"}, + {0x246C, "\210\356\260\051"}, + {0x246D, "\210\356\246\051"}, + {0x246E, "\210\356\250\051"}, + {0x246F, "\210\356\043\051"}, + {0x2470, "\210\356\162\051"}, + {0x2471, "\210\356\160\051"}, + {0x2472, "\210\356\161\051"}, + {0x2473, "\210\356\050\051"}, + {0x2474, "\024\110\075\077"}, + {0x2475, "\024\127\075\077"}, + {0x2476, "\024\136\075\077"}, + {0x2477, "\024\220\075\077"}, + {0x2478, "\024\230\075\077"}, + {0x2479, "\024\255\075\077"}, + {0x247A, "\024\252\075\077"}, + {0x247B, "\024\226\075\077"}, + {0x247C, "\024\257\075\077"}, + {0x247D, "\210\355\034\075\077"}, + {0x247E, "\210\356\027\075\077"}, + {0x247F, "\210\355\317\075\077"}, + {0x2480, "\210\356\260\075\077"}, + {0x2481, "\210\356\246\075\077"}, + {0x2482, "\210\356\250\075\077"}, + {0x2483, "\210\356\043\075\077"}, + {0x2484, "\210\356\162\075\077"}, + {0x2485, "\210\356\160\075\077"}, + {0x2486, "\210\356\161\075\077"}, + {0x2487, "\210\356\050\075\077"}, + {0x2488, "\024\110\037"}, + {0x2489, "\024\127\037"}, + {0x248A, "\024\136\037"}, + {0x248B, "\024\220\037"}, + {0x248C, "\024\230\037"}, + {0x248D, "\024\255\037"}, + {0x248E, "\024\252\037"}, + {0x248F, "\024\226\037"}, + {0x2490, "\024\257\037"}, + {0x2491, "\210\355\034\037"}, + {0x2492, "\210\356\027\037"}, + {0x2493, "\210\355\317\037"}, + {0x2494, "\210\356\260\037"}, + {0x2495, "\210\356\246\037"}, + {0x2496, "\210\356\250\037"}, + {0x2497, "\210\356\043\037"}, + {0x2498, "\210\356\162\037"}, + {0x2499, "\210\356\160\037"}, + {0x249A, "\210\356\161\037"}, + {0x249B, "\210\356\050\037"}, + {0x249C, "\001\005\006\063\075\077"}, + {0x249D, "\001\005\006\334\075\077"}, + {0x249E, "\001\005\006\313\075\077"}, + {0x249F, "\001\005\006\275\075\077"}, + {0x24A0, "\001\005\006\130\075\077"}, + {0x24A1, "\001\005\006\355\062\075\077"}, + {0x24A2, "\001\005\006\266\075\077"}, + {0x24A3, "\001\005\006\237\075\077"}, + {0x24A4, "\001\005\006\103\075\077"}, + {0x24A5, "\001\005\006\355\053\075\077"}, + {0x24A6, "\001\005\006\352\075\077"}, + {0x24A7, "\001\005\006\211\075\077"}, + {0x24A8, "\001\005\006\276\075\077"}, + {0x24A9, "\001\005\006\241\075\077"}, + {0x24AA, "\001\005\006\064\075\077"}, + {0x24AB, "\001\005\006\355\021\075\077"}, + {0x24AC, "\001\005\006\355\173\075\077"}, + {0x24AD, "\001\005\006\167\075\077"}, + {0x24AE, "\001\005\006\223\075\077"}, + {0x24AF, "\001\005\006\261\075\077"}, + {0x24B0, "\001\005\006\132\075\077"}, + {0x24B1, "\001\005\006\355\025\075\077"}, + {0x24B2, "\001\005\006\347\075\077"}, + {0x24B3, "\001\005\006\355\026\075\077"}, + {0x24B4, "\001\005\006\265\075\077"}, + {0x24B5, "\001\005\006\271\075\077"}, + {0x24B6, "\001\010\006\063\177"}, + {0x24B7, "\001\010\006\334\177"}, + {0x24B8, "\001\010\006\313\177"}, + {0x24B9, "\001\010\006\275\177"}, + {0x24BA, "\001\010\006\130\177"}, + {0x24BB, "\001\010\006\355\062\177"}, + {0x24BC, "\001\010\006\266\177"}, + {0x24BD, "\001\010\006\237\177"}, + {0x24BE, "\001\010\006\103\177"}, + {0x24BF, "\001\010\006\355\053\177"}, + {0x24C0, "\001\010\006\352\177"}, + {0x24C1, "\001\010\006\211\177"}, + {0x24C2, "\001\010\006\276\177"}, + {0x24C3, "\001\010\006\241\177"}, + {0x24C4, "\001\010\006\064\177"}, + {0x24C5, "\001\010\006\355\021\177"}, + {0x24C6, "\001\010\006\355\173\177"}, + {0x24C7, "\001\010\006\167\177"}, + {0x24C8, "\001\010\006\223\177"}, + {0x24C9, "\001\010\006\261\177"}, + {0x24CA, "\001\010\006\132\177"}, + {0x24CB, "\001\010\006\355\025\177"}, + {0x24CC, "\001\010\006\347\177"}, + {0x24CD, "\001\010\006\355\026\177"}, + {0x24CE, "\001\010\006\265\177"}, + {0x24CF, "\001\010\006\271\177"}, + {0x24D0, "\001\005\006\063\177"}, + {0x24D1, "\001\005\006\334\177"}, + {0x24D2, "\001\005\006\313\177"}, + {0x24D3, "\001\005\006\275\177"}, + {0x24D4, "\001\005\006\130\177"}, + {0x24D5, "\001\005\006\355\062\177"}, + {0x24D6, "\001\005\006\266\177"}, + {0x24D7, "\001\005\006\237\177"}, + {0x24D8, "\001\005\006\103\177"}, + {0x24D9, "\001\005\006\355\053\177"}, + {0x24DA, "\001\005\006\352\177"}, + {0x24DB, "\001\005\006\211\177"}, + {0x24DC, "\001\005\006\276\177"}, + {0x24DD, "\001\005\006\241\177"}, + {0x24DE, "\001\005\006\064\177"}, + {0x24DF, "\001\005\006\355\021\177"}, + {0x24E0, "\001\005\006\355\173\177"}, + {0x24E1, "\001\005\006\167\177"}, + {0x24E2, "\001\005\006\223\177"}, + {0x24E3, "\001\005\006\261\177"}, + {0x24E4, "\001\005\006\132\177"}, + {0x24E5, "\001\005\006\355\025\177"}, + {0x24E6, "\001\005\006\347\177"}, + {0x24E7, "\001\005\006\355\026\177"}, + {0x24E8, "\001\005\006\265\177"}, + {0x24E9, "\001\005\006\271\177"}, + {0x24EA, "\024\331\051"}, + {0x2500, "\065\242\116"}, + {0x2501, "\065\242\151"}, + {0x2502, "\065\202\116"}, + {0x2503, "\065\202\151"}, + {0x2504, "\065\355\131\355\220\242\116"}, + {0x2505, "\065\355\131\355\220\242\151"}, + {0x2506, "\065\355\131\355\220\202\116"}, + {0x2507, "\065\355\131\355\220\202\151"}, + {0x2508, "\065\355\131\357\016\242\116"}, + {0x2509, "\065\355\131\357\016\242\151"}, + {0x250A, "\065\355\131\357\016\202\116"}, + {0x250B, "\065\355\131\357\016\202\151"}, + {0x250C, "\065\116\015\050\101\020\015\033\053"}, + {0x250D, "\065\116\015\050\101\020\151\015\033\053"}, + {0x250E, "\065\151\015\050\101\020\116\015\033\053"}, + {0x250F, "\065\151\015\050\101\020\015\033\053"}, + {0x2510, "\065\116\015\050\101\020\015\033\052"}, + {0x2511, "\065\116\015\050\101\020\151\015\033\052"}, + {0x2512, "\065\151\015\050\101\020\116\015\033\052"}, + {0x2513, "\065\151\015\050\101\020\015\033\052"}, + {0x2514, "\065\116\015\050\102\020\015\033\053"}, + {0x2515, "\065\116\015\050\102\020\151\015\033\053"}, + {0x2516, "\065\151\015\050\102\020\116\015\033\053"}, + {0x2517, "\065\151\015\050\102\020\015\033\053"}, + {0x2518, "\065\116\015\050\102\020\015\033\052"}, + {0x2519, "\065\116\015\050\102\020\151\015\033\052"}, + {0x251A, "\065\151\015\050\102\020\116\015\033\052"}, + {0x251B, "\065\151\015\050\102\020\015\033\052"}, + {0x251C, "\065\116\202\020\015\033\053"}, + {0x251D, "\065\116\202\020\151\015\033\053"}, + {0x251E, "\065\151\015\050\102\020\116\015\033\053\020\015\050\101"}, + {0x251F, "\065\151\015\050\101\020\116\015\033\053\020\015\050\102"}, + {0x2520, "\065\151\202\020\116\015\033\053"}, + {0x2521, "\065\116\015\050\101\020\151\015\033\053\020\015\050\102"}, + {0x2522, "\065\116\015\050\102\020\151\015\033\053\020\015\050\101"}, + {0x2523, "\065\151\202\020\015\033\053"}, + {0x2524, "\065\116\202\020\015\033\052"}, + {0x2525, "\065\116\202\020\151\015\033\052"}, + {0x2526, "\065\151\015\050\102\020\116\015\033\052\020\015\050\101"}, + {0x2527, "\065\151\015\050\101\020\116\015\033\052\020\015\050\102"}, + {0x2528, "\065\151\202\020\116\015\033\052"}, + {0x2529, "\065\116\015\050\101\020\151\015\033\052\020\015\050\102"}, + {0x252A, "\065\116\015\050\102\020\151\015\033\052\020\015\050\101"}, + {0x252B, "\065\151\202\020\015\033\052"}, + {0x252C, "\065\116\015\050\101\020\242"}, + {0x252D, "\065\151\015\033\052\020\116\015\033\053\020\015\050\101"}, + {0x252E, "\065\151\015\033\053\020\116\015\033\052\020\015\050\101"}, + {0x252F, "\065\116\015\050\101\020\151\242"}, + {0x2530, "\065\151\015\050\101\020\116\242"}, + {0x2531, "\065\116\015\033\053\020\151\015\033\052\020\015\050\101"}, + {0x2532, "\065\116\015\033\052\020\151\015\033\053\020\015\050\101"}, + {0x2533, "\065\151\015\050\101\020\242"}, + {0x2534, "\065\116\015\050\102\020\242"}, + {0x2535, "\065\151\015\033\052\020\116\015\033\053\020\015\050\102"}, + {0x2536, "\065\151\015\033\053\020\116\015\033\052\020\015\050\102"}, + {0x2537, "\065\116\015\050\102\020\151\242"}, + {0x2538, "\065\151\015\050\102\020\116\242"}, + {0x2539, "\065\116\015\033\053\020\151\015\033\052\020\015\050\102"}, + {0x253A, "\065\116\015\033\052\020\151\015\033\053\020\015\050\102"}, + {0x253B, "\065\151\015\050\102\020\242"}, + {0x253C, "\065\116\202\020\242"}, + {0x253D, "\065\151\015\033\052\020\116\015\033\053\020\202"}, + {0x253E, "\065\151\015\033\053\020\116\015\033\052\020\202"}, + {0x253F, "\065\202\116\020\242\151"}, + {0x2540, "\065\151\015\050\102\020\116\015\050\101\020\242"}, + {0x2541, "\065\151\015\050\101\020\116\015\050\102\020\242"}, + {0x2542, "\065\202\151\020\242\116"}, + {0x2543, "\065\151\015\033\052\020\015\050\102\020\116\015\033\053\020\015\050\101"}, + {0x2544, "\065\151\015\033\053\020\015\050\102\020\116\015\033\052\020\015\050\101"}, + {0x2545, "\065\151\015\033\052\020\015\050\101\020\116\015\033\053\020\015\050\102"}, + {0x2546, "\065\151\015\033\053\020\015\050\101\020\116\015\033\052\020\015\050\102"}, + {0x2547, "\065\116\015\050\101\020\151\015\050\102\020\242"}, + {0x2548, "\065\116\015\050\102\020\151\015\050\101\020\242"}, + {0x2549, "\065\116\015\033\053\020\151\015\033\052\020\202"}, + {0x254A, "\065\116\015\033\052\020\151\015\033\053\020\202"}, + {0x254B, "\065\202\020\242\151"}, + {0x254C, "\065\355\131\070\242\116"}, + {0x254D, "\065\355\131\070\242\151"}, + {0x254E, "\065\355\131\070\202\116"}, + {0x254F, "\065\355\131\070\202\151"}, + {0x2550, "\065\070\242"}, + {0x2551, "\065\070\202"}, + {0x2552, "\065\355\001\050\101\020\070\015\033\053"}, + {0x2553, "\065\070\015\050\101\020\355\001\015\033\053"}, + {0x2554, "\065\070\015\050\101\020\015\033\053"}, + {0x2555, "\065\355\001\015\050\101\020\070\015\033\052"}, + {0x2556, "\065\070\015\050\101\020\355\001\015\033\052"}, + {0x2557, "\065\070\015\050\101\020\015\033\052"}, + {0x2558, "\065\355\001\015\050\102\020\070\015\033\053"}, + {0x2559, "\065\070\015\050\102\020\355\001\015\033\053"}, + {0x255A, "\065\070\015\050\102\020\015\033\053"}, + {0x255B, "\065\355\001\015\050\102\020\070\015\033\052"}, + {0x255C, "\065\070\015\050\102\020\355\001\015\033\052"}, + {0x255D, "\065\070\015\050\102\020\015\033\052"}, + {0x255E, "\065\202\355\001\020\221\070"}, + {0x255F, "\065\202\070\020\221\355\001"}, + {0x2560, "\065\070\202\020\015\033\053"}, + {0x2561, "\065\202\355\001\020\052\070"}, + {0x2562, "\065\202\070\020\052\355\001"}, + {0x2563, "\065\070\202\020\015\033\052"}, + {0x2564, "\065\015\050\101\355\001\020\242\070"}, + {0x2565, "\065\015\050\101\070\020\242\355\001"}, + {0x2566, "\065\070\015\050\101\020\242"}, + {0x2567, "\065\015\050\102\355\001\020\242\070"}, + {0x2568, "\065\015\050\102\070\020\242\355\001"}, + {0x2569, "\065\070\015\050\102\020\242"}, + {0x256A, "\065\202\355\001\020\242\070"}, + {0x256B, "\065\202\070\020\242\355\001"}, + {0x256C, "\065\070\202\020\242"}, + {0x256D, "\065\116\355\202\015\050\101\020\015\033\053"}, + {0x256E, "\065\116\355\202\015\050\101\020\015\033\052"}, + {0x256F, "\065\116\355\202\015\050\102\020\015\033\052"}, + {0x2570, "\065\116\355\202\015\050\102\020\015\033\053"}, + {0x2571, "\065\357\133\116\212\273\344\221\355\307\273\320\052"}, + {0x2572, "\065\357\133\116\212\273\344\052\015\050\273\320\221"}, + {0x2573, "\065\357\133\116\013\355\033"}, + {0x2574, "\065\116\015\033\052"}, + {0x2575, "\065\116\015\050\102"}, + {0x2576, "\065\116\015\033\053"}, + {0x2577, "\065\116\015\050\101"}, + {0x2578, "\065\151\015\033\052"}, + {0x2579, "\065\151\015\050\102"}, + {0x257A, "\065\151\015\033\053"}, + {0x257B, "\065\151\015\050\101"}, + {0x257C, "\065\116\015\033\052\020\151\015\033\053"}, + {0x257D, "\065\116\015\050\102\020\151\015\050\101"}, + {0x257E, "\065\151\015\033\052\020\116\015\033\053"}, + {0x257F, "\065\151\015\050\102\020\116\015\050\101"}, + {0x2580, "\355\016\353\355\354"}, + {0x2581, "\355\016\110\356\210\320"}, + {0x2582, "\355\016\110\357\017\320"}, + {0x2583, "\355\016\136\355\256\320"}, + {0x2584, "\355\016\353\356\020"}, + {0x2585, "\355\016\230\355\256\320"}, + {0x2586, "\355\016\136\357\303\320"}, + {0x2587, "\355\016\252\355\256\320"}, + {0x2588, "\355\016\361\205"}, + {0x2589, "\355\016\252\355\256\052"}, + {0x258A, "\355\016\136\357\303\052"}, + {0x258B, "\355\016\230\355\256\052"}, + {0x258C, "\355\016\353\052"}, + {0x258D, "\355\016\136\355\256\052"}, + {0x258E, "\355\016\110\357\017\052"}, + {0x258F, "\355\016\110\356\210\052"}, + {0x2590, "\355\016\353\053"}, + {0x2591, "\356\026\370\246"}, + {0x2592, "\356\026\361\076"}, + {0x2593, "\356\026\366\077"}, + {0x2594, "\355\016\110\356\210\344"}, + {0x2595, "\355\016\110\356\210\221"}, + {0x25A0, "\035\207"}, + {0x25A1, "\035\147"}, + {0x25A2, "\035\147\164\365\044\362\363"}, + {0x25A3, "\175\035\207\357\200\355\247\110\035\147"}, + {0x25A4, "\035\356\207\367\102"}, + {0x25A5, "\035\356\207\357\376"}, + {0x25A6, "\035\361\242"}, + {0x25A7, "\035\356\207\212\102\044\052\015\050\101\044\053"}, + {0x25A8, "\035\356\207\212\102\044\053\015\050\101\044\052"}, + {0x25A9, "\035\361\242\013\365\262"}, + {0x25AA, "\175\035\207"}, + {0x25AB, "\175\035\147"}, + {0x25AC, "\356\111\207"}, + {0x25AD, "\356\111\147"}, + {0x25AE, "\356\111\202\207"}, + {0x25AF, "\356\111\202\147"}, + {0x25B0, "\361\154\207"}, + {0x25B1, "\361\154\147"}, + {0x25B2, "\346\207\321\015\050\102"}, + {0x25B3, "\346\147\321\015\050\102"}, + {0x25B4, "\175\346\207\321\015\050\102"}, + {0x25B5, "\175\346\147\321\015\050\102"}, + {0x25B6, "\346\207\321\015\033\053"}, + {0x25B7, "\346\147\321\015\033\053"}, + {0x25B8, "\175\346\207\321\015\033\053"}, + {0x25B9, "\175\346\147\321\015\033\053"}, + {0x25BA, "\357\004\207\015\033\053"}, + {0x25BB, "\357\004\147\015\033\053"}, + {0x25BC, "\346\207\321\015\050\101"}, + {0x25BD, "\346\147\321\015\050\101"}, + {0x25BE, "\175\346\207\321\015\050\101"}, + {0x25BF, "\175\346\147\321\015\050\101"}, + {0x25C0, "\346\207\321\015\033\052"}, + {0x25C1, "\346\147\321\015\033\052"}, + {0x25C2, "\175\346\207\321\015\033\052"}, + {0x25C3, "\175\346\147\321\015\033\052"}, + {0x25C4, "\357\004\207\015\033\052"}, + {0x25C5, "\357\004\147\015\033\052"}, + {0x25C6, "\355\266\207"}, + {0x25C7, "\355\266\147"}, + {0x25C8, "\355\266\147\164\175\355\266\207\013\362\274"}, + {0x25C9, "\175\272\207\357\200\355\247\110\272\147"}, + {0x25CA, "\355\266"}, + {0x25CB, "\272\147"}, + {0x25CC, "\272\013\357\005"}, + {0x25CD, "\272\356\207\357\376"}, + {0x25CE, "\175\272\147\357\200\355\247\110\272\147"}, + {0x25CF, "\360\201\207"}, + {0x25D0, "\272\164\353\052\264"}, + {0x25D1, "\272\164\353\053\264"}, + {0x25D2, "\272\164\353\356\020\264"}, + {0x25D3, "\272\164\353\355\354\264"}, + {0x25D4, "\272\164\356\110\344\221\207"}, + {0x25D5, "\360\201\164\356\110\344\052\147"}, + {0x25D6, "\360\171\052\207"}, + {0x25D7, "\360\171\053\207"}, + {0x25D8, "\037\013\300"}, + {0x25D9, "\272\147\013\300"}, + {0x25DA, "\356\005\344\147\013\300"}, + {0x25DB, "\356\005\320\147\013\300"}, + {0x25DC, "\355\202\007\272\355\247\050\356\110\344\052"}, + {0x25DD, "\355\202\007\272\355\247\050\356\110\344\221"}, + {0x25DE, "\355\202\007\272\355\247\050\356\110\320\221"}, + {0x25DF, "\355\202\007\272\355\247\050\356\110\320\052"}, + {0x25E0, "\356\005\344"}, + {0x25E1, "\356\005\320"}, + {0x25E2, "\273\356\131\207\320\221"}, + {0x25E3, "\273\356\131\207\320\052"}, + {0x25E4, "\273\356\131\207\344\052"}, + {0x25E5, "\273\356\131\207\344\221"}, + {0x25E6, "\175\272\147"}, + {0x25E7, "\035\164\353\052\264"}, + {0x25E8, "\035\164\353\053\264"}, + {0x25E9, "\035\164\353\355\354\052\264"}, + {0x25EA, "\035\164\353\356\020\053\264"}, + {0x25EB, "\035\147\164\243\363\137\256"}, + {0x25EC, "\346\147\321\015\050\102\356\034"}, + {0x25ED, "\346\321\015\050\102\164\353\052\264"}, + {0x25EE, "\346\321\015\050\102\164\353\053\264"}, + {0x25EF, "\340\272"}, + {0x25F0, "\035\147\044\355\236\344\052"}, + {0x25F1, "\035\147\044\355\236\320\052"}, + {0x25F2, "\035\147\044\355\236\320\221"}, + {0x25F3, "\035\147\044\355\236\344\221"}, + {0x25F4, "\272\147\044\355\236\344\052"}, + {0x25F5, "\272\147\044\355\236\320\052"}, + {0x25F6, "\272\147\044\355\236\320\221"}, + {0x25F7, "\272\147\044\355\236\344\221"}, + {0x2600, "\356\044\207\164\361\250"}, + {0x2601, "\371\363"}, + {0x2602, "\372\154"}, + {0x2603, "\363\145\007\356\361"}, + {0x2604, "\365\054"}, + {0x2605, "\355\015\264"}, + {0x2606, "\355\015\316"}, + {0x2607, "\377\022"}, + {0x2608, "\372\105"}, + {0x2609, "\356\044"}, + {0x260A, "\356\362\360\054"}, + {0x260B, "\356\362\365\253"}, + {0x260C, "\365\057"}, + {0x260D, "\372\103"}, + {0x260E, "\357\050\207"}, + {0x260F, "\357\050\147"}, + {0x2610, "\356\146\007\356\267"}, + {0x2611, "\356\146\007\356\267\365\042"}, + {0x2612, "\356\146\007\356\267\164\355\026"}, + {0x2613, "\363\035"}, + {0x2619, "\355\203\357\150\356\153\044\053"}, + {0x261A, "\355\326\207\321\015\033\052"}, + {0x261B, "\355\326\207\321\015\033\053"}, + {0x261C, "\355\326\147\321\015\033\052"}, + {0x261D, "\355\326\147\321\015\050\102"}, + {0x261E, "\355\326\147\321\015\033\053"}, + {0x261F, "\355\326\147\321\015\050\101"}, + {0x2620, "\357\373\007\361\063"}, + {0x2621, "\376\040"}, + {0x2622, "\057\007\374\032"}, + {0x2623, "\057\007\365\173\363\132"}, + {0x2624, "\363\223"}, + {0x2625, "\362\330"}, + {0x2626, "\355\033\372\112"}, + {0x2627, "\363\313"}, + {0x2628, "\355\033\007\370\205"}, + {0x2629, "\355\033\007\367\353"}, + {0x262A, "\355\015\020\365\120"}, + {0x262B, "\022\356\067"}, + {0x262C, "\376\377\377\005"}, + {0x262D, "\366\047\020\370\272"}, + {0x262E, "\022\007\372\147"}, + {0x262F, "\022\212\362\114\020\212\360\011"}, + {0x2630, "\355\361\355\057\357\100"}, + {0x2631, "\355\361\355\057\370\125"}, + {0x2632, "\355\361\355\057\356\177"}, + {0x2633, "\355\361\355\057\375\227"}, + {0x2634, "\355\361\355\057\357\375"}, + {0x2635, "\355\361\355\057\356\066"}, + {0x2636, "\355\361\355\057\361\061"}, + {0x2637, "\355\361\355\057\356\126"}, + {0x2638, "\361\274\007\365\260"}, + {0x2639, "\356\265\147\366\246"}, + {0x263A, "\356\265\147\361\327"}, + {0x263B, "\356\265\207\361\327"}, + {0x263C, "\356\044\147\164\361\250"}, + {0x263D, "\361\222\355\236\007\356\101"}, + {0x263E, "\365\252\355\236\007\356\101"}, + {0x263F, "\370\317"}, + {0x2640, "\057\360\237"}, + {0x2641, "\356\126"}, + {0x2642, "\057\361\102"}, + {0x2643, "\367\335"}, + {0x2644, "\361\303"}, + {0x2645, "\375\377"}, + {0x2646, "\371\175"}, + {0x2647, "\372\247"}, + {0x2648, "\360\104"}, + {0x2649, "\375\107"}, + {0x264A, "\366\277"}, + {0x264B, "\363\230"}, + {0x264C, "\370\171"}, + {0x264D, "\376\026"}, + {0x264E, "\363\023"}, + {0x264F, "\374\235"}, + {0x2650, "\374\210"}, + {0x2651, "\363\233"}, + {0x2652, "\376\016"}, + {0x2653, "\373\252"}, + {0x2654, "\361\273\147\212\355\166\355\157"}, + {0x2655, "\360\161\316\212\355\166\355\157"}, + {0x2656, "\362\027\316\212\355\166\355\157"}, + {0x2657, "\357\151\147\212\355\166\355\157"}, + {0x2658, "\360\106\147\212\355\166\355\157"}, + {0x2659, "\361\167\147\212\355\166\355\157"}, + {0x265A, "\361\273\207\212\355\166\355\157"}, + {0x265B, "\360\161\264\212\355\166\355\157"}, + {0x265C, "\362\027\264\212\355\166\355\157"}, + {0x265D, "\357\151\207\212\355\166\355\157"}, + {0x265E, "\360\106\207\212\355\166\355\157"}, + {0x265F, "\361\167\207\212\355\166\355\157"}, + {0x2660, "\357\001\207"}, + {0x2661, "\355\203\147"}, + {0x2662, "\360\105\147"}, + {0x2663, "\362\036\207"}, + {0x2664, "\357\001\147"}, + {0x2665, "\355\203\207"}, + {0x2666, "\360\105\207"}, + {0x2667, "\362\036\147"}, + {0x2668, "\374\360\363\265"}, + {0x2669, "\357\250\264"}, + {0x266A, "\357\250\365\117"}, + {0x266B, "\127\360\144\361\245"}, + {0x266C, "\127\360\213\360\144\361\245"}, + {0x266D, "\363\213"}, + {0x266E, "\363\212"}, + {0x266F, "\365\276"}, + {0x2670, "\355\033\161\372\071"}, + {0x2671, "\355\033\161\372\110"}, + {0x2701, "\356\312\044\361\020\355\354\362\072"}, + {0x2702, "\356\312\371\314"}, + {0x2703, "\356\312\044\361\020\356\020\362\072"}, + {0x2704, "\356\312\363\143"}, + {0x2706, "\022\365\146\212\357\050"}, + {0x2707, "\365\363\007\374\143"}, + {0x2708, "\363\007"}, + {0x2709, "\366\014"}, + {0x270C, "\356\353\007\033\376\021"}, + {0x270D, "\356\353\013\375\243\365\165"}, + {0x270E, "\357\110\015\050\101\044\053"}, + {0x270F, "\357\110"}, + {0x2710, "\357\110\015\050\102\044\053"}, + {0x2711, "\360\073\007\356\243\147"}, + {0x2712, "\360\073\007\356\243\207"}, + {0x2713, "\057\007\362\101"}, + {0x2714, "\355\122\057\007\362\101"}, + {0x2715, "\355\026\007\356\355"}, + {0x2716, "\355\122\355\026\007\356\355"}, + {0x2717, "\355\026\007\356\146\007\356\267"}, + {0x2718, "\355\122\355\026\007\356\146\007\356\267"}, + {0x2719, "\355\033\027\164\355\132"}, + {0x271A, "\355\324\355\033\027"}, + {0x271B, "\355\033\357\270\355\314\035"}, + {0x271C, "\355\324\355\033\357\270\355\314\035"}, + {0x271D, "\355\033\006"}, + {0x271E, "\355\033\006\376\023\355\342"}, + {0x271F, "\355\033\006\164\355\132"}, + {0x2720, "\355\033\007\370\260"}, + {0x2721, "\355\015\007\365\200"}, + {0x2722, "\355\033\357\225"}, + {0x2723, "\355\033\361\212"}, + {0x2724, "\355\324\355\033\361\212"}, + {0x2725, "\355\033\375\261"}, + {0x2726, "\355\015\264\044\220\355\116"}, + {0x2727, "\355\015\316\044\220\355\116"}, + {0x2729, "\355\015\316\044\355\132\362\276"}, + {0x272A, "\355\015\316\177"}, + {0x272B, "\361\060\264"}, + {0x272C, "\361\060\316"}, + {0x272D, "\355\015\264\164\355\132"}, + {0x272E, "\355\015\264\164\355\122\355\132"}, + {0x272F, "\355\015\361\247"}, + {0x2730, "\355\015\316\355\342"}, + {0x2731, "\355\122\355\115"}, + {0x2732, "\355\115\361\164"}, + {0x2733, "\355\115\044\226\355\116"}, + {0x2734, "\355\015\264\044\226\355\116"}, + {0x2735, "\355\015\361\247\044\226\355\116"}, + {0x2736, "\355\015\264\044\255\355\116"}, + {0x2737, "\355\015\361\253\044\226\355\116"}, + {0x2738, "\355\324\355\015\361\253\044\226\355\116"}, + {0x2739, "\355\015\264\044\355\317\355\116"}, + {0x273A, "\355\115\044\356\043\355\116"}, + {0x273B, "\355\115\356\350"}, + {0x273C, "\355\115\356\350\361\164"}, + {0x273D, "\355\122\355\115\356\350"}, + {0x273E, "\374\324\316\020\264"}, + {0x273F, "\361\244\264"}, + {0x2740, "\361\244\316"}, + {0x2741, "\070\373\372\264\164\355\132"}, + {0x2742, "\355\015\177\357\270\044\226\355\116"}, + {0x2743, "\355\122\362\375\374\045\356\350"}, + {0x2744, "\357\147\007\356\361"}, + {0x2745, "\357\147\007\356\361\044\136\366\076\375\246"}, + {0x2746, "\355\122\357\147\007\356\361\044\363\305"}, + {0x2747, "\362\156"}, + {0x2748, "\355\122\362\156"}, + {0x2749, "\355\115\373\253"}, + {0x274A, "\360\055\044\226\355\116\361\021"}, + {0x274B, "\355\122\360\055\044\226\355\116\361\021"}, + {0x274D, "\272\147\357\255"}, + {0x274F, "\035\147\164\356\026\361\223\357\037\050\273\320\221"}, + {0x2750, "\035\147\164\356\026\361\223\357\037\050\273\344\221"}, + {0x2751, "\035\147\357\255\355\307\273\320\221"}, + {0x2752, "\035\147\357\255\355\307\273\344\221"}, + {0x2756, "\355\266\207\370\270\355\314\355\026\147"}, + {0x2758, "\246\256\360\242"}, + {0x2759, "\246\256\361\076"}, + {0x275A, "\246\256\377\032"}, + {0x275B, "\355\135\007\356\013\013\263\007\355\324\330\355\001\356\154"}, + {0x275C, "\355\135\007\356\013\013\263\007\355\324\330\355\001"}, + {0x275D, "\355\135\007\356\013\013\263\007\355\324\330\070\356\154"}, + {0x275E, "\355\135\007\356\013\013\263\007\355\324\330\070"}, + {0x2761, "\356\242\007\357\237\007\356\013\044\357\210\365\105"}, + {0x2762, "\355\122\037\355\312\007\356\013"}, + {0x2763, "\355\122\037\355\312\007\356\013\013\263\007\355\203"}, + {0x2764, "\355\122\355\203\207"}, + {0x2765, "\355\122\355\203\207\356\153"}, + {0x2766, "\355\203\357\150"}, + {0x2767, "\355\203\357\150\356\153"}, + {0x2776, "\304\024\110\300\051"}, + {0x2777, "\304\024\127\300\051"}, + {0x2778, "\304\024\136\300\051"}, + {0x2779, "\304\024\220\300\051"}, + {0x277A, "\304\024\230\300\051"}, + {0x277B, "\304\024\255\300\051"}, + {0x277C, "\304\024\252\300\051"}, + {0x277D, "\304\024\226\300\051"}, + {0x277E, "\304\024\257\300\051"}, + {0x277F, "\304\210\355\034\300\051"}, + {0x2780, "\304\024\110\270\355\035\051"}, + {0x2781, "\304\024\127\270\355\035\051"}, + {0x2782, "\304\024\136\270\355\035\051"}, + {0x2783, "\304\024\220\270\355\035\051"}, + {0x2784, "\304\024\230\270\355\035\051"}, + {0x2785, "\304\024\255\270\355\035\051"}, + {0x2786, "\304\024\252\270\355\035\051"}, + {0x2787, "\304\024\226\270\355\035\051"}, + {0x2788, "\304\024\257\270\355\035\051"}, + {0x2789, "\304\210\355\034\270\355\035\051"}, + {0x278A, "\304\024\110\270\355\035\300\051"}, + {0x278B, "\304\024\127\270\355\035\300\051"}, + {0x278C, "\304\024\136\270\355\035\300\051"}, + {0x278D, "\304\024\220\270\355\035\300\051"}, + {0x278E, "\304\024\230\270\355\035\300\051"}, + {0x278F, "\304\024\255\270\355\035\300\051"}, + {0x2790, "\304\024\252\270\355\035\300\051"}, + {0x2791, "\304\024\226\270\355\035\300\051"}, + {0x2792, "\304\024\257\270\355\035\300\051"}, + {0x2793, "\304\210\355\034\270\355\035\300\051"}, + {0x2794, "\061\355\121\015\033\053\044\355\003\355\262"}, + {0x2798, "\061\355\121\355\353"}, + {0x2799, "\061\355\121\015\033\053\355\121"}, + {0x279A, "\061\355\121\356\023"}, + {0x279B, "\061\007\375\252\015\033\053"}, + {0x279C, "\061\355\121\044\355\003\362\362\015\033\053"}, + {0x279D, "\061\044\355\003\013\346\015\033\053"}, + {0x279E, "\061\355\121\044\355\003\013\346\015\033\053"}, + {0x279F, "\061\164\357\007\044\355\003\013\346\015\033\053"}, + {0x27A0, "\061\355\121\164\357\007\044\355\003\013\346\015\033\053"}, + {0x27A1, "\061\264\015\033\053"}, + {0x27A2, "\355\003\007\061\015\033\053\013\362\034\362\155\355\232\050\102"}, + {0x27A3, "\355\003\007\061\015\033\053\013\362\034\362\155\355\232\050\101"}, + {0x27A4, "\355\003\007\061\264\015\033\053"}, + {0x27A5, "\061\264\355\121\360\143\015\050\101\020\015\033\053"}, + {0x27A6, "\061\264\360\143\015\050\102\020\015\033\053"}, + {0x27A7, "\061\264\375\250\015\033\053"}, + {0x27A8, "\061\264\355\121\044\355\003\365\055\015\033\053"}, + {0x27A9, "\061\316\015\033\053\355\342\044\356\345"}, + {0x27AA, "\061\316\015\033\053\355\342\044\361\017"}, + {0x27AB, "\061\316\015\033\053\361\162\015\361\017\020\355\342"}, + {0x27AC, "\061\316\015\033\053\361\162\015\356\345\020\355\342"}, + {0x27AD, "\061\316\355\121\015\033\053\044\356\026\356\020\053"}, + {0x27AE, "\061\316\355\121\015\033\053\044\356\026\355\354\053"}, + {0x27AF, "\061\357\145\316\015\033\053\355\342\044\356\345\020\355\232\365\256"}, + {0x27B1, "\061\357\145\316\015\033\053\355\342\044\356\345\020\355\232\357\132"}, + {0x27B2, "\061\316\355\121\015\033\053\044\355\132\363\352"}, + {0x27B3, "\061\044\355\253\316\015\033\053"}, + {0x27B4, "\061\044\355\253\207\355\353"}, + {0x27B5, "\061\044\355\253\207\015\033\053"}, + {0x27B6, "\061\044\355\253\207\356\023"}, + {0x27B7, "\061\044\355\253\151\264\355\353"}, + {0x27B8, "\061\044\355\253\151\264\015\033\053"}, + {0x27B9, "\061\044\355\253\151\264\356\023"}, + {0x27BA, "\061\015\033\053\044\355\003\357\225"}, + {0x27BB, "\061\015\033\053\044\357\162\357\225"}, + {0x27BC, "\061\015\033\053\044\356\247\013\263\007\273"}, + {0x27BD, "\061\355\121\015\033\053\044\356\247\013\263\007\273"}, + {0x27BE, "\061\015\033\053\044\355\132\355\343"}, + {0x2800, "\031\030\147"}, + {0x2801, "\031\030\372\252"}, + {0x2802, "\031\030\373\053"}, + {0x2803, "\031\030\372\253"}, + {0x2804, "\031\030\373\153"}, + {0x2805, "\031\030\372\353"}, + {0x2806, "\031\030\373\054"}, + {0x2807, "\031\030\372\254"}, + {0x2808, "\031\030\373\213"}, + {0x2809, "\031\030\373\014"}, + {0x280A, "\031\030\373\114"}, + {0x280B, "\031\030\372\314"}, + {0x280C, "\031\030\373\154"}, + {0x280D, "\031\030\372\354"}, + {0x280E, "\031\030\373\055"}, + {0x280F, "\031\030\372\255"}, + {0x2810, "\031\030\373\233"}, + {0x2811, "\031\030\373\034"}, + {0x2812, "\031\030\373\134"}, + {0x2813, "\031\030\372\334"}, + {0x2814, "\031\030\373\174"}, + {0x2815, "\031\030\372\374"}, + {0x2816, "\031\030\373\075"}, + {0x2817, "\031\030\372\275"}, + {0x2818, "\031\030\373\214"}, + {0x2819, "\031\030\373\015"}, + {0x281A, "\031\030\373\115"}, + {0x281B, "\031\030\372\315"}, + {0x281C, "\031\030\373\155"}, + {0x281D, "\031\030\372\355"}, + {0x281E, "\031\030\373\056"}, + {0x281F, "\031\030\372\256"}, + {0x2820, "\031\030\373\243"}, + {0x2821, "\031\030\373\044"}, + {0x2822, "\031\030\373\144"}, + {0x2823, "\031\030\372\344"}, + {0x2824, "\031\030\373\204"}, + {0x2825, "\031\030\373\005"}, + {0x2826, "\031\030\373\105"}, + {0x2827, "\031\030\372\305"}, + {0x2828, "\031\030\373\224"}, + {0x2829, "\031\030\373\025"}, + {0x282A, "\031\030\373\125"}, + {0x282B, "\031\030\372\325"}, + {0x282C, "\031\030\373\165"}, + {0x282D, "\031\030\372\365"}, + {0x282E, "\031\030\373\066"}, + {0x282F, "\031\030\372\266"}, + {0x2830, "\031\030\373\234"}, + {0x2831, "\031\030\373\035"}, + {0x2832, "\031\030\373\135"}, + {0x2833, "\031\030\372\335"}, + {0x2834, "\031\030\373\175"}, + {0x2835, "\031\030\372\375"}, + {0x2836, "\031\030\373\076"}, + {0x2837, "\031\030\372\276"}, + {0x2838, "\031\030\373\215"}, + {0x2839, "\031\030\373\016"}, + {0x283A, "\031\030\373\116"}, + {0x283B, "\031\030\372\316"}, + {0x283C, "\031\030\373\156"}, + {0x283D, "\031\030\372\356"}, + {0x283E, "\031\030\373\057"}, + {0x283F, "\031\030\372\257"}, + {0x2840, "\031\030\373\247"}, + {0x2841, "\031\030\373\050"}, + {0x2842, "\031\030\373\150"}, + {0x2843, "\031\030\372\350"}, + {0x2844, "\031\030\373\210"}, + {0x2845, "\031\030\373\011"}, + {0x2846, "\031\030\373\111"}, + {0x2847, "\031\030\372\311"}, + {0x2848, "\031\030\373\230"}, + {0x2849, "\031\030\373\031"}, + {0x284A, "\031\030\373\131"}, + {0x284B, "\031\030\372\331"}, + {0x284C, "\031\030\373\171"}, + {0x284D, "\031\030\372\371"}, + {0x284E, "\031\030\373\072"}, + {0x284F, "\031\030\372\272"}, + {0x2850, "\031\030\373\240"}, + {0x2851, "\031\030\373\041"}, + {0x2852, "\031\030\373\141"}, + {0x2853, "\031\030\372\341"}, + {0x2854, "\031\030\373\201"}, + {0x2855, "\031\030\373\002"}, + {0x2856, "\031\030\373\102"}, + {0x2857, "\031\030\372\302"}, + {0x2858, "\031\030\373\221"}, + {0x2859, "\031\030\373\022"}, + {0x285A, "\031\030\373\122"}, + {0x285B, "\031\030\372\322"}, + {0x285C, "\031\030\373\162"}, + {0x285D, "\031\030\372\362"}, + {0x285E, "\031\030\373\063"}, + {0x285F, "\031\030\372\263"}, + {0x2860, "\031\030\373\244"}, + {0x2861, "\031\030\373\045"}, + {0x2862, "\031\030\373\145"}, + {0x2863, "\031\030\372\345"}, + {0x2864, "\031\030\373\205"}, + {0x2865, "\031\030\373\006"}, + {0x2866, "\031\030\373\106"}, + {0x2867, "\031\030\372\306"}, + {0x2868, "\031\030\373\225"}, + {0x2869, "\031\030\373\026"}, + {0x286A, "\031\030\373\126"}, + {0x286B, "\031\030\372\326"}, + {0x286C, "\031\030\373\166"}, + {0x286D, "\031\030\372\366"}, + {0x286E, "\031\030\373\067"}, + {0x286F, "\031\030\372\267"}, + {0x2870, "\031\030\373\235"}, + {0x2871, "\031\030\373\036"}, + {0x2872, "\031\030\373\136"}, + {0x2873, "\031\030\372\336"}, + {0x2874, "\031\030\373\176"}, + {0x2875, "\031\030\372\376"}, + {0x2876, "\031\030\373\077"}, + {0x2877, "\031\030\372\277"}, + {0x2878, "\031\030\373\216"}, + {0x2879, "\031\030\373\017"}, + {0x287A, "\031\030\373\117"}, + {0x287B, "\031\030\372\317"}, + {0x287C, "\031\030\373\157"}, + {0x287D, "\031\030\372\357"}, + {0x287E, "\031\030\373\060"}, + {0x287F, "\031\030\372\260"}, + {0x2880, "\031\030\373\251"}, + {0x2881, "\031\030\373\052"}, + {0x2882, "\031\030\373\152"}, + {0x2883, "\031\030\372\352"}, + {0x2884, "\031\030\373\212"}, + {0x2885, "\031\030\373\013"}, + {0x2886, "\031\030\373\113"}, + {0x2887, "\031\030\372\313"}, + {0x2888, "\031\030\373\232"}, + {0x2889, "\031\030\373\033"}, + {0x288A, "\031\030\373\133"}, + {0x288B, "\031\030\372\333"}, + {0x288C, "\031\030\373\173"}, + {0x288D, "\031\030\372\373"}, + {0x288E, "\031\030\373\074"}, + {0x288F, "\031\030\372\274"}, + {0x2890, "\031\030\373\242"}, + {0x2891, "\031\030\373\043"}, + {0x2892, "\031\030\373\143"}, + {0x2893, "\031\030\372\343"}, + {0x2894, "\031\030\373\203"}, + {0x2895, "\031\030\373\004"}, + {0x2896, "\031\030\373\104"}, + {0x2897, "\031\030\372\304"}, + {0x2898, "\031\030\373\223"}, + {0x2899, "\031\030\373\024"}, + {0x289A, "\031\030\373\124"}, + {0x289B, "\031\030\372\324"}, + {0x289C, "\031\030\373\164"}, + {0x289D, "\031\030\372\364"}, + {0x289E, "\031\030\373\065"}, + {0x289F, "\031\030\372\265"}, + {0x28A0, "\031\030\373\246"}, + {0x28A1, "\031\030\373\047"}, + {0x28A2, "\031\030\373\147"}, + {0x28A3, "\031\030\372\347"}, + {0x28A4, "\031\030\373\207"}, + {0x28A5, "\031\030\373\010"}, + {0x28A6, "\031\030\373\110"}, + {0x28A7, "\031\030\372\310"}, + {0x28A8, "\031\030\373\227"}, + {0x28A9, "\031\030\373\030"}, + {0x28AA, "\031\030\373\130"}, + {0x28AB, "\031\030\372\330"}, + {0x28AC, "\031\030\373\170"}, + {0x28AD, "\031\030\372\370"}, + {0x28AE, "\031\030\373\071"}, + {0x28AF, "\031\030\372\271"}, + {0x28B0, "\031\030\373\237"}, + {0x28B1, "\031\030\373\040"}, + {0x28B2, "\031\030\373\140"}, + {0x28B3, "\031\030\372\340"}, + {0x28B4, "\031\030\373\200"}, + {0x28B5, "\031\030\373\001"}, + {0x28B6, "\031\030\373\101"}, + {0x28B7, "\031\030\372\301"}, + {0x28B8, "\031\030\373\220"}, + {0x28B9, "\031\030\373\021"}, + {0x28BA, "\031\030\373\121"}, + {0x28BB, "\031\030\372\321"}, + {0x28BC, "\031\030\373\161"}, + {0x28BD, "\031\030\372\361"}, + {0x28BE, "\031\030\373\062"}, + {0x28BF, "\031\030\372\262"}, + {0x28C0, "\031\030\373\250"}, + {0x28C1, "\031\030\373\051"}, + {0x28C2, "\031\030\373\151"}, + {0x28C3, "\031\030\372\351"}, + {0x28C4, "\031\030\373\211"}, + {0x28C5, "\031\030\373\012"}, + {0x28C6, "\031\030\373\112"}, + {0x28C7, "\031\030\372\312"}, + {0x28C8, "\031\030\373\231"}, + {0x28C9, "\031\030\373\032"}, + {0x28CA, "\031\030\373\132"}, + {0x28CB, "\031\030\372\332"}, + {0x28CC, "\031\030\373\172"}, + {0x28CD, "\031\030\372\372"}, + {0x28CE, "\031\030\373\073"}, + {0x28CF, "\031\030\372\273"}, + {0x28D0, "\031\030\373\241"}, + {0x28D1, "\031\030\373\042"}, + {0x28D2, "\031\030\373\142"}, + {0x28D3, "\031\030\372\342"}, + {0x28D4, "\031\030\373\202"}, + {0x28D5, "\031\030\373\003"}, + {0x28D6, "\031\030\373\103"}, + {0x28D7, "\031\030\372\303"}, + {0x28D8, "\031\030\373\222"}, + {0x28D9, "\031\030\373\023"}, + {0x28DA, "\031\030\373\123"}, + {0x28DB, "\031\030\372\323"}, + {0x28DC, "\031\030\373\163"}, + {0x28DD, "\031\030\372\363"}, + {0x28DE, "\031\030\373\064"}, + {0x28DF, "\031\030\372\264"}, + {0x28E0, "\031\030\373\245"}, + {0x28E1, "\031\030\373\046"}, + {0x28E2, "\031\030\373\146"}, + {0x28E3, "\031\030\372\346"}, + {0x28E4, "\031\030\373\206"}, + {0x28E5, "\031\030\373\007"}, + {0x28E6, "\031\030\373\107"}, + {0x28E7, "\031\030\372\307"}, + {0x28E8, "\031\030\373\226"}, + {0x28E9, "\031\030\373\027"}, + {0x28EA, "\031\030\373\127"}, + {0x28EB, "\031\030\372\327"}, + {0x28EC, "\031\030\373\167"}, + {0x28ED, "\031\030\372\367"}, + {0x28EE, "\031\030\373\070"}, + {0x28EF, "\031\030\372\270"}, + {0x28F0, "\031\030\373\236"}, + {0x28F1, "\031\030\373\037"}, + {0x28F2, "\031\030\373\137"}, + {0x28F3, "\031\030\372\337"}, + {0x28F4, "\031\030\373\177"}, + {0x28F5, "\031\030\372\377"}, + {0x28F6, "\031\030\373\100"}, + {0x28F7, "\031\030\372\300"}, + {0x28F8, "\031\030\373\217"}, + {0x28F9, "\031\030\373\020"}, + {0x28FA, "\031\030\373\120"}, + {0x28FB, "\031\030\372\320"}, + {0x28FC, "\031\030\373\160"}, + {0x28FD, "\031\030\372\360"}, + {0x28FE, "\031\030\373\061"}, + {0x28FF, "\031\030\372\261"}, + {0x2E80, "\017\074\363\136"}, + {0x2E81, "\017\074\360\235"}, + {0x2E82, "\017\074\070\122\110"}, + {0x2E83, "\017\074\357\323\127"}, + {0x2E84, "\017\074\357\323\136"}, + {0x2E85, "\017\074\360\326"}, + {0x2E86, "\017\074\361\201"}, + {0x2E87, "\017\074\361\352"}, + {0x2E88, "\017\074\357\107\110"}, + {0x2E89, "\017\074\357\107\127"}, + {0x2E8A, "\017\074\360\202"}, + {0x2E8B, "\017\074\361\304"}, + {0x2E8C, "\017\074\175\110"}, + {0x2E8D, "\017\074\175\127"}, + {0x2E8E, "\017\074\356\212\372\076"}, + {0x2E8F, "\017\074\356\212\127"}, + {0x2E90, "\017\074\356\212\136"}, + {0x2E91, "\017\074\356\212\220"}, + {0x2E92, "\017\074\057\212\374\253"}, + {0x2E93, "\017\074\366\066"}, + {0x2E94, "\017\074\357\156\110"}, + {0x2E95, "\017\074\357\156\127"}, + {0x2E96, "\017\074\355\203\110"}, + {0x2E97, "\017\074\355\203\127"}, + {0x2E98, "\017\074\356\353"}, + {0x2E99, "\017\074\361\354"}, + {0x2E9A, "\017\074\356\113\360\060"}, + {0x2E9B, "\017\074\377\037"}, + {0x2E9C, "\017\074\356\044"}, + {0x2E9D, "\017\074\356\101"}, + {0x2E9E, "\017\074\370\300"}, + {0x2E9F, "\017\074\371\057"}, + {0x2EA0, "\017\074\363\355"}, + {0x2EA1, "\017\074\356\066\110"}, + {0x2EA2, "\017\074\356\066\127"}, + {0x2EA3, "\017\074\356\177"}, + {0x2EA4, "\017\074\361\160\110"}, + {0x2EA5, "\017\074\361\160\127"}, + {0x2EA6, "\017\074\365\245\356\113"}, + {0x2EA7, "\017\074\360\077"}, + {0x2EA8, "\017\074\360\116"}, + {0x2EA9, "\017\074\360\355"}, + {0x2EAA, "\017\074\361\171\360\160"}, + {0x2EAB, "\017\074\361\135"}, + {0x2EAC, "\017\074\357\306\110"}, + {0x2EAD, "\017\074\357\306\127"}, + {0x2EAE, "\017\074\360\065"}, + {0x2EAF, "\017\074\357\332"}, + {0x2EB0, "\017\074\355\010\357\332"}, + {0x2EB1, "\017\074\065\110"}, + {0x2EB2, "\017\074\065\127"}, + {0x2EB3, "\017\074\065\136"}, + {0x2EB4, "\017\074\065\220"}, + {0x2EB5, "\017\074\370\253"}, + {0x2EB6, "\017\074\361\072"}, + {0x2EB7, "\017\074\360\104"}, + {0x2EB8, "\017\074\363\162"}, + {0x2EB9, "\017\074\362\064"}, + {0x2EBA, "\017\074\357\272\110"}, + {0x2EBB, "\017\074\357\272\127"}, + {0x2EBC, "\017\074\362\063"}, + {0x2EBD, "\017\074\361\064"}, + {0x2EBE, "\017\074\356\334\110"}, + {0x2EBF, "\017\074\356\334\127"}, + {0x2EC0, "\017\074\356\334\136"}, + {0x2EC1, "\017\074\362\005"}, + {0x2EC2, "\017\074\360\317"}, + {0x2EC3, "\017\074\357\260\110"}, + {0x2EC4, "\017\074\357\260\127"}, + {0x2EC5, "\017\074\355\010\362\074"}, + {0x2EC6, "\017\074\356\113\357\106"}, + {0x2EC7, "\017\074\357\106"}, + {0x2EC8, "\017\074\355\010\361\155"}, + {0x2EC9, "\017\074\355\010\360\140"}, + {0x2ECA, "\017\074\356\242"}, + {0x2ECB, "\017\074\355\010\362\100"}, + {0x2ECC, "\017\074\356\113\357\014"}, + {0x2ECD, "\017\074\357\014\110"}, + {0x2ECE, "\017\074\357\014\127"}, + {0x2ECF, "\017\074\376\031"}, + {0x2ED0, "\017\074\355\010\361\141"}, + {0x2ED1, "\017\074\355\264\110"}, + {0x2ED2, "\017\074\355\264\127"}, + {0x2ED3, "\017\074\355\010\355\264"}, + {0x2ED4, "\017\074\355\010\357\274"}, + {0x2ED5, "\017\074\357\353\110"}, + {0x2ED6, "\017\074\357\353\127"}, + {0x2ED7, "\017\074\361\206"}, + {0x2ED8, "\017\074\360\075"}, + {0x2ED9, "\017\074\355\010\357\113\361\353"}, + {0x2EDA, "\017\074\355\010\360\240"}, + {0x2EDB, "\017\074\355\010\357\375"}, + {0x2EDC, "\017\074\355\010\362\075"}, + {0x2EDD, "\017\074\356\223\110"}, + {0x2EDE, "\017\074\356\223\127"}, + {0x2EDF, "\017\074\356\223\136"}, + {0x2EE0, "\017\074\355\010\356\223"}, + {0x2EE1, "\017\074\357\373"}, + {0x2EE2, "\017\074\355\010\360\115"}, + {0x2EE3, "\017\074\357\257"}, + {0x2EE4, "\017\074\360\222"}, + {0x2EE5, "\017\074\355\010\361\211"}, + {0x2EE6, "\017\074\355\010\357\254"}, + {0x2EE7, "\017\074\355\010\361\306"}, + {0x2EE8, "\017\074\356\113\360\076"}, + {0x2EE9, "\017\074\356\113\360\357"}, + {0x2EEA, "\017\074\355\010\375\360"}, + {0x2EEB, "\017\074\356\340\357\164"}, + {0x2EEC, "\017\074\355\010\357\164"}, + {0x2EED, "\017\074\356\340\360\173"}, + {0x2EEE, "\017\074\355\010\360\173"}, + {0x2EEF, "\017\074\356\340\357\142"}, + {0x2EF0, "\017\074\355\010\357\142"}, + {0x2EF1, "\017\074\357\047"}, + {0x2EF2, "\017\074\356\340\357\047"}, + {0x2EF3, "\017\074\355\010\357\047"}, + {0x2F00, "\017\041\110"}, + {0x2F01, "\017\041\246"}, + {0x2F02, "\017\041\037"}, + {0x2F03, "\017\041\355\044\044\052"}, + {0x2F04, "\017\041\070\122"}, + {0x2F05, "\017\041\122"}, + {0x2F06, "\017\041\127"}, + {0x2F07, "\017\041\357\132"}, + {0x2F08, "\017\041\360\326"}, + {0x2F09, "\017\041\367\255"}, + {0x2F0A, "\017\041\366\013"}, + {0x2F0B, "\017\041\226"}, + {0x2F0C, "\017\041\361\201"}, + {0x2F0D, "\017\041\365\113"}, + {0x2F0E, "\017\041\366\232"}, + {0x2F0F, "\017\041\361\352"}, + {0x2F10, "\017\041\366\104"}, + {0x2F11, "\017\041\357\107"}, + {0x2F12, "\017\041\366\102"}, + {0x2F13, "\017\041\366\015"}, + {0x2F14, "\017\041\365\126"}, + {0x2F15, "\017\041\365\043"}, + {0x2F16, "\017\041\363\217"}, + {0x2F17, "\017\041\355\034"}, + {0x2F18, "\017\041\360\202"}, + {0x2F19, "\017\041\361\304"}, + {0x2F1A, "\017\041\360\235"}, + {0x2F1B, "\017\041\357\012"}, + {0x2F1C, "\017\041\366\001"}, + {0x2F1D, "\017\041\363\153"}, + {0x2F1E, "\017\041\365\377"}, + {0x2F1F, "\017\041\356\126"}, + {0x2F20, "\017\041\370\147"}, + {0x2F21, "\017\041\362\315"}, + {0x2F22, "\017\041\363\274"}, + {0x2F23, "\017\041\374\346"}, + {0x2F24, "\017\041\340"}, + {0x2F25, "\017\041\366\054"}, + {0x2F26, "\017\041\366\002"}, + {0x2F27, "\017\041\375\225"}, + {0x2F28, "\017\041\373\261"}, + {0x2F29, "\017\041\175"}, + {0x2F2A, "\017\041\356\212"}, + {0x2F2B, "\017\041\363\221"}, + {0x2F2C, "\017\041\363\154"}, + {0x2F2D, "\017\041\361\061"}, + {0x2F2E, "\017\041\374\070"}, + {0x2F2F, "\017\041\357\364"}, + {0x2F30, "\017\041\374\344"}, + {0x2F31, "\017\041\374\255"}, + {0x2F32, "\017\041\374\240"}, + {0x2F33, "\017\041\357\234"}, + {0x2F34, "\017\041\362\350"}, + {0x2F35, "\017\041\365\376"}, + {0x2F36, "\017\041\127\370\254"}, + {0x2F37, "\017\041\375\212"}, + {0x2F38, "\017\041\355\202"}, + {0x2F39, "\017\041\357\156"}, + {0x2F3A, "\017\041\361\210"}, + {0x2F3B, "\017\041\355\056"}, + {0x2F3C, "\017\041\355\203"}, + {0x2F3D, "\017\041\366\312"}, + {0x2F3E, "\017\041\363\041\007\357\274"}, + {0x2F3F, "\017\041\356\353"}, + {0x2F40, "\017\041\363\161"}, + {0x2F41, "\017\041\361\354"}, + {0x2F42, "\017\041\377\024"}, + {0x2F43, "\017\041\363\144"}, + {0x2F44, "\017\041\366\304"}, + {0x2F45, "\017\041\035"}, + {0x2F46, "\017\041\355\140\355\056"}, + {0x2F47, "\017\041\356\044"}, + {0x2F48, "\017\041\365\271"}, + {0x2F49, "\017\041\356\101"}, + {0x2F4A, "\017\041\362\355"}, + {0x2F4B, "\017\041\370\263"}, + {0x2F4C, "\017\041\356\141"}, + {0x2F4D, "\017\041\361\063"}, + {0x2F4E, "\017\041\362\357"}, + {0x2F4F, "\017\041\357\174\371\074\063\355\056"}, + {0x2F50, "\017\041\365\047"}, + {0x2F51, "\017\041\375\235\007\361\210"}, + {0x2F52, "\017\041\365\037"}, + {0x2F53, "\017\041\376\007"}, + {0x2F54, "\017\041\356\066"}, + {0x2F55, "\017\041\356\177"}, + {0x2F56, "\017\041\366\245"}, + {0x2F57, "\017\041\373\327"}, + {0x2F58, "\017\041\366\012"}, + {0x2F59, "\017\041\353\052\007\363\215"}, + {0x2F5A, "\017\041\375\245"}, + {0x2F5B, "\017\041\365\116"}, + {0x2F5C, "\017\041\360\077"}, + {0x2F5D, "\017\041\360\116"}, + {0x2F5E, "\017\041\371\047"}, + {0x2F5F, "\017\041\360\355"}, + {0x2F60, "\017\041\370\315"}, + {0x2F61, "\017\041\375\316"}, + {0x2F62, "\017\041\143"}, + {0x2F63, "\017\041\371\111"}, + {0x2F64, "\017\041\376\002"}, + {0x2F65, "\017\041\363\257"}, + {0x2F66, "\017\041\361\171\360\160"}, + {0x2F67, "\017\041\370\257"}, + {0x2F68, "\017\041\371\016"}, + {0x2F69, "\017\041\147"}, + {0x2F6A, "\017\041\372\173"}, + {0x2F6B, "\017\041\376\004"}, + {0x2F6C, "\017\041\361\135"}, + {0x2F6D, "\017\041\370\130"}, + {0x2F6E, "\017\041\061"}, + {0x2F6F, "\017\041\372\227"}, + {0x2F70, "\017\041\357\306"}, + {0x2F71, "\017\041\375\242"}, + {0x2F72, "\017\041\365\144"}, + {0x2F73, "\017\041\363\237"}, + {0x2F74, "\017\041\365\237"}, + {0x2F75, "\017\041\360\065"}, + {0x2F76, "\017\041\374\072"}, + {0x2F77, "\017\041\357\332"}, + {0x2F78, "\017\041\373\260"}, + {0x2F79, "\017\041\065"}, + {0x2F7A, "\017\041\361\072"}, + {0x2F7B, "\017\041\356\243"}, + {0x2F7C, "\017\041\362\064"}, + {0x2F7D, "\017\041\362\317"}, + {0x2F7E, "\017\041\363\263"}, + {0x2F7F, "\017\041\372\107"}, + {0x2F80, "\017\041\357\272"}, + {0x2F81, "\017\041\362\063"}, + {0x2F82, "\017\041\370\365"}, + {0x2F83, "\017\041\372\202"}, + {0x2F84, "\017\041\362\360"}, + {0x2F85, "\017\041\361\064"}, + {0x2F86, "\017\041\370\131"}, + {0x2F87, "\017\041\374\204"}, + {0x2F88, "\017\041\360\067"}, + {0x2F89, "\017\041\374\176"}, + {0x2F8A, "\017\041\365\101"}, + {0x2F8B, "\017\041\356\334"}, + {0x2F8C, "\017\041\362\005"}, + {0x2F8D, "\017\041\367\217"}, + {0x2F8E, "\017\041\374\217"}, + {0x2F8F, "\017\041\365\354"}, + {0x2F90, "\017\041\360\317"}, + {0x2F91, "\017\041\357\260"}, + {0x2F92, "\017\041\362\074"}, + {0x2F93, "\017\041\357\106"}, + {0x2F94, "\017\041\361\155"}, + {0x2F95, "\017\041\376\005"}, + {0x2F96, "\017\041\366\316"}, + {0x2F97, "\017\041\365\041"}, + {0x2F98, "\017\041\362\327"}, + {0x2F99, "\017\041\360\140"}, + {0x2F9A, "\017\041\374\110"}, + {0x2F9B, "\017\041\365\106"}, + {0x2F9C, "\017\041\356\242"}, + {0x2F9D, "\017\041\365\073"}, + {0x2F9E, "\017\041\362\100"}, + {0x2F9F, "\017\041\376\376"}, + {0x2FA0, "\017\041\370\276"}, + {0x2FA1, "\017\041\357\014"}, + {0x2FA2, "\017\041\374\174"}, + {0x2FA3, "\017\041\057\212\365\071"}, + {0x2FA4, "\017\041\365\125"}, + {0x2FA5, "\017\041\366\313"}, + {0x2FA6, "\017\041\361\141"}, + {0x2FA7, "\017\041\355\264"}, + {0x2FA8, "\017\041\357\274"}, + {0x2FA9, "\017\041\357\353"}, + {0x2FAA, "\017\041\356\172"}, + {0x2FAB, "\017\041\357\254\044\356\247\356\314"}, + {0x2FAC, "\017\041\361\206"}, + {0x2FAD, "\017\041\360\075"}, + {0x2FAE, "\017\041\375\231"}, + {0x2FAF, "\017\041\356\265"}, + {0x2FB0, "\017\041\357\113"}, + {0x2FB1, "\017\041\357\113\361\353"}, + {0x2FB2, "\017\041\363\345"}, + {0x2FB3, "\017\041\355\175"}, + {0x2FB4, "\017\041\360\240"}, + {0x2FB5, "\017\041\357\375"}, + {0x2FB6, "\017\041\362\075"}, + {0x2FB7, "\017\041\356\223"}, + {0x2FB8, "\017\041\357\373"}, + {0x2FB9, "\017\041\372\156"}, + {0x2FBA, "\017\041\360\115"}, + {0x2FBB, "\017\041\357\257"}, + {0x2FBC, "\017\041\102"}, + {0x2FBD, "\017\041\363\303"}, + {0x2FBE, "\017\041\374\071"}, + {0x2FBF, "\017\041\360\002\374\207"}, + {0x2FC0, "\017\041\363\266"}, + {0x2FC1, "\017\041\360\222"}, + {0x2FC2, "\017\041\361\211"}, + {0x2FC3, "\017\041\357\254"}, + {0x2FC4, "\017\041\361\306"}, + {0x2FC5, "\017\041\363\252"}, + {0x2FC6, "\017\041\360\076"}, + {0x2FC7, "\017\041\363\260"}, + {0x2FC8, "\017\041\360\357"}, + {0x2FC9, "\017\041\370\362"}, + {0x2FCA, "\017\041\207"}, + {0x2FCB, "\017\041\363\163"}, + {0x2FCC, "\017\041\366\243"}, + {0x2FCD, "\017\041\375\256"}, + {0x2FCE, "\017\041\375\101"}, + {0x2FCF, "\017\041\361\246"}, + {0x2FD0, "\017\041\371\200"}, + {0x2FD1, "\017\041\357\164"}, + {0x2FD2, "\017\041\355\250"}, + {0x2FD3, "\017\041\357\142"}, + {0x2FD4, "\017\041\357\047"}, + {0x2FD5, "\017\041\366\074"}, + {0x2FF0, "\335\007\355\161\076\052\044\053"}, + {0x2FF1, "\335\007\355\161\076\007\102\013\101"}, + {0x2FF2, "\335\007\355\161\076\007\033\052\355\307\361\055\361\227\044\033\053"}, + {0x2FF3, "\335\007\355\161\076\212\102\355\307\361\055\361\227\013\101"}, + {0x2FF4, "\335\007\355\161\076\375\240\355\375"}, + {0x2FF5, "\335\007\355\161\076\355\375\044\356\031\212\102"}, + {0x2FF6, "\335\007\355\161\076\355\375\044\356\031\212\101"}, + {0x2FF7, "\335\007\355\161\076\355\375\044\356\031\007\033\052"}, + {0x2FF8, "\335\007\355\161\076\355\375\044\356\031\357\117\102\044\052"}, + {0x2FF9, "\335\007\355\161\076\355\375\044\356\031\357\117\102\044\053"}, + {0x2FFA, "\335\007\355\161\076\355\375\044\356\031\357\117\101\044\052"}, + {0x2FFB, "\335\007\355\161\076\363\302"}, + {0x3000, "\355\073\076"}, + {0x3001, "\330\076"}, + {0x3002, "\037\076"}, + {0x3003, "\366\252\007\356\112"}, + {0x3004, "\022\007\361\117\367\206\367\257"}, + {0x3005, "\204\076\356\156"}, + {0x3006, "\204\076\007\366\057"}, + {0x3007, "\331\076"}, + {0x3008, "\122\356\301\044\052"}, + {0x3009, "\122\356\301\044\053"}, + {0x300A, "\070\122\356\301\044\052"}, + {0x300B, "\070\122\356\301\044\053"}, + {0x300C, "\122\273\052"}, + {0x300D, "\122\273\221"}, + {0x300E, "\122\147\273\052"}, + {0x300F, "\122\147\273\221"}, + {0x3010, "\122\207\356\076\052"}, + {0x3011, "\122\207\356\076\221"}, + {0x3012, "\204\357\275"}, + {0x3013, "\057\366\303"}, + {0x3014, "\122\052\013\355\370"}, + {0x3015, "\122\221\013\355\370"}, + {0x3016, "\122\147\356\076\052"}, + {0x3017, "\122\147\356\076\221"}, + {0x3018, "\122\147\052\013\355\370"}, + {0x3019, "\122\147\221\013\355\370"}, + {0x301A, "\122\147\052"}, + {0x301B, "\122\147\221"}, + {0x301C, "\355\126\355\315\013\356\173"}, + {0x301D, "\355\135\070\355\235\355\013"}, + {0x301E, "\355\135\070\355\235"}, + {0x301F, "\355\135\070\355\235\320"}, + {0x3020, "\356\265\013\204\357\275"}, + {0x3021, "\024\110\355\164"}, + {0x3022, "\024\127\355\164"}, + {0x3023, "\024\136\355\164"}, + {0x3024, "\024\220\355\164"}, + {0x3025, "\024\230\355\164"}, + {0x3026, "\024\255\355\164"}, + {0x3027, "\024\252\355\164"}, + {0x3028, "\024\226\355\164"}, + {0x3029, "\024\257\355\164"}, + {0x302A, "\204\076\007\345\356\201"}, + {0x302B, "\204\076\007\345\360\054"}, + {0x302C, "\204\076\007\345\374\356"}, + {0x302D, "\204\076\007\345\366\011"}, + {0x302E, "\204\007\345\014\037"}, + {0x302F, "\204\007\345\014\070\037"}, + {0x3030, "\355\126\355\315\356\232"}, + {0x3031, "\204\256\356\214\007\356\112"}, + {0x3032, "\204\256\356\214\007\356\112\164\355\175\356\266"}, + {0x3033, "\353\355\354\007\204\256\356\214\007\356\112"}, + {0x3034, "\353\355\354\007\204\256\356\214\007\356\112\164\355\175\356\266"}, + {0x3035, "\353\356\020\007\204\256\356\214\007\356\112"}, + {0x3036, "\204\357\275\177"}, + {0x3037, "\022\162\076\355\045\007\360\113\007\243"}, + {0x3038, "\210\355\034\355\164"}, + {0x3039, "\210\356\050\355\164"}, + {0x303A, "\210\357\365\355\164"}, + {0x303E, "\357\176\007\357\052\076"}, + {0x303F, "\365\247\076"}, + {0x3041, "\002\124\063\005"}, + {0x3042, "\002\124\063"}, + {0x3043, "\002\124\103\005"}, + {0x3044, "\002\124\103"}, + {0x3045, "\002\124\132\005"}, + {0x3046, "\002\124\132"}, + {0x3047, "\002\124\130\005"}, + {0x3048, "\002\124\130"}, + {0x3049, "\002\124\064\005"}, + {0x304A, "\002\124\064"}, + {0x304B, "\002\124\240"}, + {0x304C, "\002\124\355\017"}, + {0x304D, "\002\124\355\332"}, + {0x304E, "\002\124\356\204"}, + {0x304F, "\002\124\356\021"}, + {0x3050, "\002\124\357\160"}, + {0x3051, "\002\124\355\331"}, + {0x3052, "\002\124\356\203"}, + {0x3053, "\002\124\355\167"}, + {0x3054, "\002\124\356\071"}, + {0x3055, "\002\124\355\004"}, + {0x3056, "\002\124\355\101"}, + {0x3057, "\002\124\355\275"}, + {0x3058, "\002\124\356\275"}, + {0x3059, "\002\124\356\253"}, + {0x305A, "\002\124\360\022"}, + {0x305B, "\002\124\356\042"}, + {0x305C, "\002\124\356\274"}, + {0x305D, "\002\124\355\070"}, + {0x305E, "\002\124\356\135"}, + {0x305F, "\002\124\311"}, + {0x3060, "\002\124\355\002"}, + {0x3061, "\002\124\355\217"}, + {0x3062, "\002\124\356\062"}, + {0x3063, "\002\124\355\300\005"}, + {0x3064, "\002\124\355\300"}, + {0x3065, "\002\124\212"}, + {0x3066, "\002\124\356\125"}, + {0x3067, "\002\124\007"}, + {0x3068, "\002\124\355\176"}, + {0x3069, "\002\124\355\252"}, + {0x306A, "\002\124\354"}, + {0x306B, "\002\124\244"}, + {0x306C, "\002\124\356\025"}, + {0x306D, "\002\124\355\140"}, + {0x306E, "\002\124\355\113"}, + {0x306F, "\002\124\314"}, + {0x3070, "\002\124\355\052"}, + {0x3071, "\002\124\327"}, + {0x3072, "\002\124\355\255"}, + {0x3073, "\002\124\356\304"}, + {0x3074, "\002\124\355\233"}, + {0x3075, "\002\124\356\336"}, + {0x3076, "\002\124\356\003"}, + {0x3077, "\002\124\357\277"}, + {0x3078, "\002\124\356\072"}, + {0x3079, "\002\124\356\142"}, + {0x307A, "\002\124\356\375"}, + {0x307B, "\002\124\355\107"}, + {0x307C, "\002\124\355\377"}, + {0x307D, "\002\124\355\273"}, + {0x307E, "\002\124\277"}, + {0x307F, "\002\124\355\230"}, + {0x3080, "\002\124\355\111"}, + {0x3081, "\002\124\355\334"}, + {0x3082, "\002\124\355\136"}, + {0x3083, "\002\124\305\005"}, + {0x3084, "\002\124\305"}, + {0x3085, "\002\124\355\364\005"}, + {0x3086, "\002\124\355\364"}, + {0x3087, "\002\124\355\040\005"}, + {0x3088, "\002\124\355\040"}, + {0x3089, "\002\124\322"}, + {0x308A, "\002\124\355\347"}, + {0x308B, "\002\124\356\037"}, + {0x308C, "\002\124\356\035"}, + {0x308D, "\002\124\355\174"}, + {0x308E, "\002\124\355\050\005"}, + {0x308F, "\002\124\355\050"}, + {0x3090, "\002\124\355\362"}, + {0x3091, "\002\124\356\270"}, + {0x3092, "\002\124\355\150"}, + {0x3093, "\002\124\241"}, + {0x3094, "\002\124\360\004"}, + {0x3099, "\026\356\075\355\175\356\266"}, + {0x309A, "\026\356\075\355\175\357\324"}, + {0x309B, "\204\356\075\007\355\175\356\266"}, + {0x309C, "\204\356\075\007\355\175\357\324"}, + {0x309D, "\204\356\156\124"}, + {0x309E, "\204\356\156\360\003\124"}, + {0x30A1, "\002\045\063\005"}, + {0x30A2, "\002\045\063"}, + {0x30A3, "\002\045\103\005"}, + {0x30A4, "\002\045\103"}, + {0x30A5, "\002\045\132\005"}, + {0x30A6, "\002\045\132"}, + {0x30A7, "\002\045\130\005"}, + {0x30A8, "\002\045\130"}, + {0x30A9, "\002\045\064\005"}, + {0x30AA, "\002\045\064"}, + {0x30AB, "\002\045\240"}, + {0x30AC, "\002\045\355\017"}, + {0x30AD, "\002\045\355\332"}, + {0x30AE, "\002\045\356\204"}, + {0x30AF, "\002\045\356\021"}, + {0x30B0, "\002\045\357\160"}, + {0x30B1, "\002\045\355\331"}, + {0x30B2, "\002\045\356\203"}, + {0x30B3, "\002\045\355\167"}, + {0x30B4, "\002\045\356\071"}, + {0x30B5, "\002\045\355\004"}, + {0x30B6, "\002\045\355\101"}, + {0x30B7, "\002\045\355\275"}, + {0x30B8, "\002\045\356\275"}, + {0x30B9, "\002\045\356\253"}, + {0x30BA, "\002\045\360\022"}, + {0x30BB, "\002\045\356\042"}, + {0x30BC, "\002\045\356\274"}, + {0x30BD, "\002\045\355\070"}, + {0x30BE, "\002\045\356\135"}, + {0x30BF, "\002\045\311"}, + {0x30C0, "\002\045\355\002"}, + {0x30C1, "\002\045\355\217"}, + {0x30C2, "\002\045\356\062"}, + {0x30C3, "\002\045\355\300\005"}, + {0x30C4, "\002\045\355\300"}, + {0x30C5, "\002\045\212"}, + {0x30C6, "\002\045\356\125"}, + {0x30C7, "\002\045\007"}, + {0x30C8, "\002\045\355\176"}, + {0x30C9, "\002\045\355\252"}, + {0x30CA, "\002\045\354"}, + {0x30CB, "\002\045\244"}, + {0x30CC, "\002\045\356\025"}, + {0x30CD, "\002\045\355\140"}, + {0x30CE, "\002\045\355\113"}, + {0x30CF, "\002\045\314"}, + {0x30D0, "\002\045\355\052"}, + {0x30D1, "\002\045\327"}, + {0x30D2, "\002\045\355\255"}, + {0x30D3, "\002\045\356\304"}, + {0x30D4, "\002\045\355\233"}, + {0x30D5, "\002\045\356\336"}, + {0x30D6, "\002\045\356\003"}, + {0x30D7, "\002\045\357\277"}, + {0x30D8, "\002\045\356\072"}, + {0x30D9, "\002\045\356\142"}, + {0x30DA, "\002\045\356\375"}, + {0x30DB, "\002\045\355\107"}, + {0x30DC, "\002\045\355\377"}, + {0x30DD, "\002\045\355\273"}, + {0x30DE, "\002\045\277"}, + {0x30DF, "\002\045\355\230"}, + {0x30E0, "\002\045\355\111"}, + {0x30E1, "\002\045\355\334"}, + {0x30E2, "\002\045\355\136"}, + {0x30E3, "\002\045\305\005"}, + {0x30E4, "\002\045\305"}, + {0x30E5, "\002\045\355\364\005"}, + {0x30E6, "\002\045\355\364"}, + {0x30E7, "\002\045\355\040\005"}, + {0x30E8, "\002\045\355\040"}, + {0x30E9, "\002\045\322"}, + {0x30EA, "\002\045\355\347"}, + {0x30EB, "\002\045\356\037"}, + {0x30EC, "\002\045\356\035"}, + {0x30ED, "\002\045\355\174"}, + {0x30EE, "\002\045\355\050\005"}, + {0x30EF, "\002\045\355\050"}, + {0x30F0, "\002\045\355\362"}, + {0x30F1, "\002\045\356\270"}, + {0x30F2, "\002\045\355\150"}, + {0x30F3, "\002\045\241"}, + {0x30F4, "\002\045\360\004"}, + {0x30F5, "\002\045\240\005"}, + {0x30F6, "\002\045\355\331\005"}, + {0x30F7, "\002\045\355\241"}, + {0x30F8, "\002\045\360\001"}, + {0x30F9, "\002\045\357\053"}, + {0x30FA, "\002\045\356\132"}, + {0x30FB, "\037\355\137\045"}, + {0x30FC, "\204\356\075\007\355\175\357\013"}, + {0x30FD, "\204\356\156\045"}, + {0x30FE, "\204\356\156\360\003\045"}, + {0x3105, "\001\166\355\021"}, + {0x3106, "\001\166\372\142"}, + {0x3107, "\001\166\276"}, + {0x3108, "\001\166\355\062"}, + {0x3109, "\001\166\261"}, + {0x310A, "\001\166\375\076"}, + {0x310B, "\001\166\241"}, + {0x310C, "\001\166\211"}, + {0x310D, "\001\166\352"}, + {0x310E, "\001\166\360\363"}, + {0x310F, "\001\166\237"}, + {0x3110, "\001\166\362\040"}, + {0x3111, "\001\166\375\263"}, + {0x3112, "\001\166\367\117"}, + {0x3113, "\001\166\361\360"}, + {0x3114, "\001\166\375\115"}, + {0x3115, "\001\166\357\075"}, + {0x3116, "\001\166\355\053"}, + {0x3117, "\001\166\375\342"}, + {0x3118, "\001\166\375\343"}, + {0x3119, "\001\166\223"}, + {0x311A, "\001\166\063"}, + {0x311B, "\001\166\306"}, + {0x311C, "\001\166\130"}, + {0x311D, "\001\166\356\136"}, + {0x311E, "\001\166\307"}, + {0x311F, "\001\166\366\037"}, + {0x3120, "\001\166\362\342"}, + {0x3121, "\001\166\366\020"}, + {0x3122, "\001\166\357\064"}, + {0x3123, "\001\166\013"}, + {0x3124, "\001\166\355\373"}, + {0x3125, "\001\166\356\007"}, + {0x3126, "\001\166\366\026"}, + {0x3127, "\001\166\103"}, + {0x3128, "\001\166\113"}, + {0x3129, "\001\166\132"}, + {0x312A, "\001\166\355\025"}, + {0x312B, "\001\166\355\336"}, + {0x312C, "\001\166\366\233"}, + {0x3131, "\001\014\355\333"}, + {0x3132, "\001\014\357\040"}, + {0x3133, "\001\014\357\221"}, + {0x3134, "\001\014\355\337"}, + {0x3135, "\001\014\357\246"}, + {0x3136, "\001\014\357\245"}, + {0x3137, "\001\014\355\360"}, + {0x3138, "\001\014\357\340"}, + {0x3139, "\001\014\355\350"}, + {0x313A, "\001\014\357\307"}, + {0x313B, "\001\014\357\310"}, + {0x313C, "\001\014\357\312"}, + {0x313D, "\001\014\357\313"}, + {0x313E, "\001\014\357\314"}, + {0x313F, "\001\014\357\311"}, + {0x3140, "\001\014\357\023"}, + {0x3141, "\001\014\355\335"}, + {0x3142, "\001\014\355\345"}, + {0x3143, "\001\014\357\336"}, + {0x3144, "\001\014\357\002"}, + {0x3145, "\001\014\355\351"}, + {0x3146, "\001\014\357\041"}, + {0x3147, "\001\014\355\327"}, + {0x3148, "\001\014\355\276"}, + {0x3149, "\001\014\357\337"}, + {0x314A, "\001\014\355\356"}, + {0x314B, "\001\014\355\330"}, + {0x314C, "\001\014\355\355"}, + {0x314D, "\001\014\355\344"}, + {0x314E, "\001\014\355\325"}, + {0x314F, "\001\014\063"}, + {0x3150, "\001\014\356\136"}, + {0x3151, "\001\014\305"}, + {0x3152, "\001\014\360\016"}, + {0x3153, "\001\014\064"}, + {0x3154, "\001\014\217"}, + {0x3155, "\001\014\355\040"}, + {0x3156, "\001\014\355\303"}, + {0x3157, "\001\014\306"}, + {0x3158, "\001\014\355\050"}, + {0x3159, "\001\014\360\010"}, + {0x315A, "\001\014\356\011"}, + {0x315B, "\001\014\356\273"}, + {0x315C, "\001\014\113"}, + {0x315D, "\001\014\355\150"}, + {0x315E, "\001\014\356\271"}, + {0x315F, "\001\014\355\362"}, + {0x3160, "\001\014\355\151"}, + {0x3161, "\001\014\360\033"}, + {0x3162, "\001\014\360\034"}, + {0x3163, "\001\014\103"}, + {0x3164, "\356\145\014"}, + {0x3165, "\001\014\361\335"}, + {0x3166, "\001\014\357\247"}, + {0x3167, "\001\014\361\113"}, + {0x3168, "\001\014\361\112"}, + {0x3169, "\001\014\361\263"}, + {0x316A, "\001\014\361\267"}, + {0x316B, "\001\014\361\266"}, + {0x316C, "\001\014\361\265"}, + {0x316D, "\001\014\361\270"}, + {0x316E, "\001\014\357\235"}, + {0x316F, "\001\014\361\057"}, + {0x3170, "\001\014\361\056"}, + {0x3171, "\001\014\357\213"}, + {0x3172, "\001\014\361\172"}, + {0x3173, "\001\014\361\200"}, + {0x3174, "\001\014\361\174"}, + {0x3175, "\001\014\361\175"}, + {0x3176, "\001\014\361\177"}, + {0x3177, "\001\014\361\176"}, + {0x3178, "\001\014\357\215"}, + {0x3179, "\001\014\360\365"}, + {0x317A, "\001\014\357\326"}, + {0x317B, "\001\014\361\320"}, + {0x317C, "\001\014\357\330"}, + {0x317D, "\001\014\357\327"}, + {0x317E, "\001\014\361\322"}, + {0x317F, "\001\014\357\265"}, + {0x3180, "\001\014\357\335"}, + {0x3181, "\001\014\360\012"}, + {0x3182, "\001\014\362\113"}, + {0x3183, "\001\014\362\112"}, + {0x3184, "\001\014\357\214"}, + {0x3185, "\001\014\361\334"}, + {0x3186, "\001\014\360\013"}, + {0x3187, "\001\014\362\136"}, + {0x3188, "\001\014\362\137"}, + {0x3189, "\001\014\362\135"}, + {0x318A, "\001\014\362\121"}, + {0x318B, "\001\014\362\122"}, + {0x318C, "\001\014\362\120"}, + {0x318D, "\001\014\360\053"}, + {0x318E, "\001\014\362\371"}, + {0x3190, "\204\355\041\076\007\370\162"}, + {0x3191, "\204\355\041\076\365\161"}, + {0x3192, "\204\355\041\076\110"}, + {0x3193, "\204\355\041\076\127"}, + {0x3194, "\204\355\041\076\136"}, + {0x3195, "\204\355\041\076\220"}, + {0x3196, "\204\355\041\076\212\102"}, + {0x3197, "\204\355\041\076\212\356\307"}, + {0x3198, "\204\355\041\076\212\101"}, + {0x3199, "\204\355\041\076\212\361\222"}, + {0x319A, "\204\355\041\076\212\357\323"}, + {0x319B, "\204\355\041\076\212\375\257"}, + {0x319C, "\204\355\041\076\212\361\243"}, + {0x319D, "\204\355\041\076\212\357\100"}, + {0x319E, "\204\355\041\076\007\033\356\126"}, + {0x319F, "\204\355\041\076\007\370\123"}, + {0x31A0, "\001\166\334"}, + {0x31A1, "\001\166\271"}, + {0x31A2, "\001\166\365\277"}, + {0x31A3, "\001\166\266"}, + {0x31A4, "\001\166\217"}, + {0x31A5, "\001\166\366\005"}, + {0x31A6, "\001\166\064"}, + {0x31A7, "\001\166\361\137"}, + {0x31A8, "\001\166\377\046"}, + {0x31A9, "\001\166\362\331"}, + {0x31AA, "\001\166\367\214"}, + {0x31AB, "\001\166\372\127"}, + {0x31AC, "\001\166\367\204"}, + {0x31AD, "\001\166\371\211"}, + {0x31AE, "\001\166\363\015"}, + {0x31AF, "\001\166\362\343"}, + {0x31B0, "\001\166\356\277"}, + {0x31B1, "\001\166\356\366"}, + {0x31B2, "\001\166\372\077"}, + {0x31B3, "\001\166\367\216"}, + {0x31B4, "\001\166\355\021\032"}, + {0x31B5, "\001\166\261\032"}, + {0x31B6, "\001\166\360\363\032"}, + {0x31B7, "\001\166\237\032"}, + {0x3200, "\014\355\333\075\077"}, + {0x3201, "\014\355\337\075\077"}, + {0x3202, "\014\355\360\075\077"}, + {0x3203, "\014\355\350\075\077"}, + {0x3204, "\014\355\335\075\077"}, + {0x3205, "\014\355\345\075\077"}, + {0x3206, "\014\355\351\075\077"}, + {0x3207, "\014\355\327\075\077"}, + {0x3208, "\014\355\276\075\077"}, + {0x3209, "\014\355\356\075\077"}, + {0x320A, "\014\355\330\075\077"}, + {0x320B, "\014\355\355\075\077"}, + {0x320C, "\014\355\344\075\077"}, + {0x320D, "\014\355\325\075\077"}, + {0x320E, "\014\355\333\063\075\077"}, + {0x320F, "\014\355\337\063\075\077"}, + {0x3210, "\014\355\360\063\075\077"}, + {0x3211, "\014\355\350\063\075\077"}, + {0x3212, "\014\355\335\063\075\077"}, + {0x3213, "\014\355\345\063\075\077"}, + {0x3214, "\014\355\351\063\075\077"}, + {0x3215, "\014\355\327\063\075\077"}, + {0x3216, "\014\355\276\063\075\077"}, + {0x3217, "\014\355\356\063\075\077"}, + {0x3218, "\014\355\330\063\075\077"}, + {0x3219, "\014\355\355\063\075\077"}, + {0x321A, "\014\355\344\063\075\077"}, + {0x321B, "\014\355\325\063\075\077"}, + {0x321C, "\014\355\276\113\075\077"}, + {0x3220, "\016\110\075\077"}, + {0x3221, "\016\127\075\077"}, + {0x3222, "\016\136\075\077"}, + {0x3223, "\016\220\075\077"}, + {0x3224, "\016\230\075\077"}, + {0x3225, "\016\255\075\077"}, + {0x3226, "\016\252\075\077"}, + {0x3227, "\016\226\075\077"}, + {0x3228, "\016\257\075\077"}, + {0x3229, "\016\355\034\075\077"}, + {0x322A, "\016\356\101\075\077"}, + {0x322B, "\016\356\177\075\077"}, + {0x322C, "\016\356\066\075\077"}, + {0x322D, "\016\356\001\075\077"}, + {0x322E, "\016\361\103\075\077"}, + {0x322F, "\016\356\126\075\077"}, + {0x3230, "\016\356\044\075\077"}, + {0x3231, "\016\361\050\075\077"}, + {0x3232, "\016\360\061\075\077"}, + {0x3233, "\016\357\331\075\077"}, + {0x3234, "\016\361\116\075\077"}, + {0x3235, "\016\361\333\075\077"}, + {0x3236, "\016\360\241\075\077"}, + {0x3237, "\016\360\254\075\077"}, + {0x3238, "\016\357\364\075\077"}, + {0x3239, "\016\374\056\075\077"}, + {0x323A, "\016\362\347\075\077"}, + {0x323B, "\016\362\157\075\077"}, + {0x323C, "\016\375\040\075\077"}, + {0x323D, "\016\360\232\075\077"}, + {0x323E, "\016\361\256\075\077"}, + {0x323F, "\016\360\046\075\077"}, + {0x3240, "\016\366\060\075\077"}, + {0x3241, "\016\361\255\075\077"}, + {0x3242, "\016\374\343\075\077"}, + {0x3243, "\016\363\002\075\077"}, + {0x3260, "\014\051\355\333"}, + {0x3261, "\014\051\355\337"}, + {0x3262, "\014\051\355\360"}, + {0x3263, "\014\051\355\350"}, + {0x3264, "\014\051\355\335"}, + {0x3265, "\014\051\355\345"}, + {0x3266, "\014\051\355\351"}, + {0x3267, "\014\051\355\327"}, + {0x3268, "\014\051\355\276"}, + {0x3269, "\014\051\355\356"}, + {0x326A, "\014\051\355\330"}, + {0x326B, "\014\051\355\355"}, + {0x326C, "\014\051\355\344"}, + {0x326D, "\014\051\355\325"}, + {0x326E, "\014\051\355\333\063"}, + {0x326F, "\014\051\355\337\063"}, + {0x3270, "\014\051\355\360\063"}, + {0x3271, "\014\051\355\350\063"}, + {0x3272, "\014\051\355\335\063"}, + {0x3273, "\014\051\355\345\063"}, + {0x3274, "\014\051\355\351\063"}, + {0x3275, "\014\051\355\327\063"}, + {0x3276, "\014\051\355\276\063"}, + {0x3277, "\014\051\355\356\063"}, + {0x3278, "\014\051\355\330\063"}, + {0x3279, "\014\051\355\355\063"}, + {0x327A, "\014\051\355\344\063"}, + {0x327B, "\014\051\355\325\063"}, + {0x327F, "\022\007\361\117\365\076"}, + {0x3280, "\016\110\051"}, + {0x3281, "\016\127\051"}, + {0x3282, "\016\136\051"}, + {0x3283, "\016\220\051"}, + {0x3284, "\016\230\051"}, + {0x3285, "\016\255\051"}, + {0x3286, "\016\252\051"}, + {0x3287, "\016\226\051"}, + {0x3288, "\016\257\051"}, + {0x3289, "\016\355\034\051"}, + {0x328A, "\016\356\101\051"}, + {0x328B, "\016\356\177\051"}, + {0x328C, "\016\356\066\051"}, + {0x328D, "\016\356\001\051"}, + {0x328E, "\016\361\103\051"}, + {0x328F, "\016\356\126\051"}, + {0x3290, "\016\356\044\051"}, + {0x3291, "\016\361\050\051"}, + {0x3292, "\016\360\061\051"}, + {0x3293, "\016\357\331\051"}, + {0x3294, "\016\361\116\051"}, + {0x3295, "\016\361\333\051"}, + {0x3296, "\016\360\241\051"}, + {0x3297, "\016\360\254\051"}, + {0x3298, "\016\357\364\051"}, + {0x3299, "\016\374\242\051"}, + {0x329A, "\016\361\102\051"}, + {0x329B, "\016\360\237\051"}, + {0x329C, "\016\362\277\051"}, + {0x329D, "\016\366\031\051"}, + {0x329E, "\016\360\345\051"}, + {0x329F, "\016\363\004\051"}, + {0x32A0, "\016\362\364\051"}, + {0x32A1, "\016\361\255\051"}, + {0x32A2, "\016\365\067\051"}, + {0x32A3, "\016\365\074\051"}, + {0x32A4, "\016\102\051"}, + {0x32A5, "\016\356\307\051"}, + {0x32A6, "\016\101\051"}, + {0x32A7, "\016\052\051"}, + {0x32A8, "\016\221\051"}, + {0x32A9, "\016\371\060\051"}, + {0x32AA, "\016\374\052\051"}, + {0x32AB, "\016\362\157\051"}, + {0x32AC, "\016\375\041\051"}, + {0x32AD, "\016\360\232\051"}, + {0x32AE, "\016\361\256\051"}, + {0x32AF, "\016\360\046\051"}, + {0x32B0, "\016\371\364\051"}, + {0x32C0, "\022\162\076\367\256"}, + {0x32C1, "\022\162\076\366\134"}, + {0x32C2, "\022\162\076\370\271"}, + {0x32C3, "\022\162\076\363\010"}, + {0x32C4, "\022\162\076\361\047"}, + {0x32C5, "\022\162\076\367\327"}, + {0x32C6, "\022\162\076\367\326"}, + {0x32C7, "\022\162\076\362\345"}, + {0x32C8, "\022\162\076\374\252"}, + {0x32C9, "\022\162\076\372\073"}, + {0x32CA, "\022\162\076\371\330"}, + {0x32CB, "\022\162\076\365\352"}, + {0x32D0, "\045\051\063"}, + {0x32D1, "\045\051\103"}, + {0x32D2, "\045\051\132"}, + {0x32D3, "\045\051\130"}, + {0x32D4, "\045\051\064"}, + {0x32D5, "\045\051\240"}, + {0x32D6, "\045\051\355\332"}, + {0x32D7, "\045\051\356\021"}, + {0x32D8, "\045\051\355\331"}, + {0x32D9, "\045\051\355\167"}, + {0x32DA, "\045\051\355\004"}, + {0x32DB, "\045\051\355\275"}, + {0x32DC, "\045\051\356\253"}, + {0x32DD, "\045\051\356\042"}, + {0x32DE, "\045\051\355\070"}, + {0x32DF, "\045\051\311"}, + {0x32E0, "\045\051\355\217"}, + {0x32E1, "\045\051\355\300"}, + {0x32E2, "\045\051\356\125"}, + {0x32E3, "\045\051\355\176"}, + {0x32E4, "\045\051\354"}, + {0x32E5, "\045\051\244"}, + {0x32E6, "\045\051\356\025"}, + {0x32E7, "\045\051\355\140"}, + {0x32E8, "\045\051\355\113"}, + {0x32E9, "\045\051\314"}, + {0x32EA, "\045\051\355\255"}, + {0x32EB, "\045\051\356\336"}, + {0x32EC, "\045\051\356\072"}, + {0x32ED, "\045\051\355\107"}, + {0x32EE, "\045\051\277"}, + {0x32EF, "\045\051\355\230"}, + {0x32F0, "\045\051\355\111"}, + {0x32F1, "\045\051\355\334"}, + {0x32F2, "\045\051\355\136"}, + {0x32F3, "\045\051\305"}, + {0x32F4, "\045\051\355\364"}, + {0x32F5, "\045\051\355\040"}, + {0x32F6, "\045\051\322"}, + {0x32F7, "\045\051\355\347"}, + {0x32F8, "\045\051\356\037"}, + {0x32F9, "\045\051\356\035"}, + {0x32FA, "\045\051\355\174"}, + {0x32FB, "\045\051\355\050"}, + {0x32FC, "\045\051\355\362"}, + {0x32FD, "\045\051\356\270"}, + {0x32FE, "\045\051\355\150"}, + {0x3300, "\362\352\046\013\035"}, + {0x3301, "\362\365\046\013\035"}, + {0x3302, "\362\337\046\013\035"}, + {0x3303, "\377\001\046\013\035"}, + {0x3304, "\367\213\046\013\035"}, + {0x3305, "\367\222\046\013\035"}, + {0x3306, "\375\373\046\013\035"}, + {0x3307, "\366\023\046\013\035"}, + {0x3308, "\377\043\046\013\035"}, + {0x3309, "\372\102\046\013\035"}, + {0x330A, "\377\064\046\013\035"}, + {0x330B, "\367\356\046\013\035"}, + {0x330C, "\367\364\046\013\035"}, + {0x330D, "\367\366\046\013\035"}, + {0x330E, "\366\142\046\013\035"}, + {0x330F, "\366\137\046\013\035"}, + {0x3310, "\366\223\046\013\035"}, + {0x3311, "\366\225\046\013\035"}, + {0x3312, "\370\107\046\013\035"}, + {0x3313, "\366\227\046\013\035"}, + {0x3314, "\370\017\046\013\035"}, + {0x3315, "\370\020\046\013\035"}, + {0x3316, "\370\021\046\013\035"}, + {0x3317, "\370\022\046\013\035"}, + {0x3318, "\366\261\046\013\035"}, + {0x3319, "\366\262\046\013\035"}, + {0x331A, "\370\057\046\013\035"}, + {0x331B, "\370\061\046\013\035"}, + {0x331C, "\370\116\046\013\035"}, + {0x331D, "\370\041\046\013\035"}, + {0x331E, "\370\121\046\013\035"}, + {0x331F, "\374\211\046\013\035"}, + {0x3320, "\374\221\046\013\035"}, + {0x3321, "\374\321\046\013\035"}, + {0x3322, "\374\247\046\013\035"}, + {0x3323, "\374\250\046\013\035"}, + {0x3324, "\365\351\046\013\035"}, + {0x3325, "\365\255\046\013\035"}, + {0x3326, "\365\324\046\013\035"}, + {0x3327, "\375\226\046\013\035"}, + {0x3328, "\371\102\046\013\035"}, + {0x3329, "\371\325\046\013\035"}, + {0x332A, "\366\310\046\013\035"}, + {0x332B, "\373\324\046\013\035"}, + {0x332C, "\373\325\046\013\035"}, + {0x332D, "\363\211\046\013\035"}, + {0x332E, "\372\224\046\013\035"}, + {0x332F, "\372\232\046\013\035"}, + {0x3330, "\372\231\046\013\035"}, + {0x3331, "\363\135\046\013\035"}, + {0x3332, "\367\120\046\013\035"}, + {0x3333, "\367\126\046\013\035"}, + {0x3334, "\363\175\046\013\035"}, + {0x3335, "\367\125\046\013\035"}, + {0x3336, "\366\323\046\013\035"}, + {0x3337, "\372\206\046\013\035"}, + {0x3338, "\372\175\046\013\035"}, + {0x3339, "\366\326\046\013\035"}, + {0x333A, "\372\176\046\013\035"}, + {0x333B, "\373\330\046\013\035"}, + {0x333C, "\356\305\046\013\035"}, + {0x333D, "\372\251\046\013\035"}, + {0x333E, "\363\150\046\013\035"}, + {0x333F, "\367\100\046\013\035"}, + {0x3340, "\373\254\046\013\035"}, + {0x3341, "\367\163\046\013\035"}, + {0x3342, "\367\162\046\013\035"}, + {0x3343, "\370\303\046\013\035"}, + {0x3344, "\370\302\046\013\035"}, + {0x3345, "\370\252\046\013\035"}, + {0x3346, "\370\256\046\013\035"}, + {0x3347, "\370\264\046\013\035"}, + {0x3348, "\370\360\046\013\035"}, + {0x3349, "\370\370\046\013\035"}, + {0x334A, "\370\371\046\013\035"}, + {0x334B, "\357\244\046\013\035"}, + {0x334C, "\371\063\046\013\035"}, + {0x334D, "\371\065\046\013\035"}, + {0x334E, "\376\226\046\013\035"}, + {0x334F, "\376\227\046\013\035"}, + {0x3350, "\376\204\046\013\035"}, + {0x3351, "\374\067\046\013\035"}, + {0x3352, "\374\066\046\013\035"}, + {0x3353, "\374\151\046\013\035"}, + {0x3354, "\374\203\046\013\035"}, + {0x3355, "\374\053\046\013\035"}, + {0x3356, "\374\054\046\013\035"}, + {0x3357, "\376\075\046\013\035"}, + {0x3358, "\022\162\076\341\331"}, + {0x3359, "\022\162\076\341\110"}, + {0x335A, "\022\162\076\341\127"}, + {0x335B, "\022\162\076\341\136"}, + {0x335C, "\022\162\076\341\220"}, + {0x335D, "\022\162\076\341\230"}, + {0x335E, "\022\162\076\341\255"}, + {0x335F, "\022\162\076\341\252"}, + {0x3360, "\022\162\076\341\226"}, + {0x3361, "\022\162\076\341\257"}, + {0x3362, "\022\162\076\341\355\034"}, + {0x3363, "\022\162\076\341\356\027"}, + {0x3364, "\022\162\076\341\355\317"}, + {0x3365, "\022\162\076\341\356\260"}, + {0x3366, "\022\162\076\341\356\246"}, + {0x3367, "\022\162\076\341\356\250"}, + {0x3368, "\022\162\076\341\356\043"}, + {0x3369, "\022\162\076\341\356\162"}, + {0x336A, "\022\162\076\341\356\160"}, + {0x336B, "\022\162\076\341\356\161"}, + {0x336C, "\022\162\076\341\356\050"}, + {0x336D, "\022\162\076\341\362\066"}, + {0x336E, "\022\162\076\341\362\065"}, + {0x336F, "\022\162\076\341\362\070"}, + {0x3370, "\022\162\076\341\362\067"}, + {0x3371, "\367\116\046\013\035"}, + {0x3372, "\355\002\046\013\035"}, + {0x3373, "\355\307\046\013\035"}, + {0x3374, "\363\031\046\013\035"}, + {0x3375, "\372\135\046\013\035"}, + {0x3376, "\372\172\046\013\035"}, + {0x337B, "\357\062\366\330\046\013\035"}, + {0x337C, "\357\062\363\343\046\013\035"}, + {0x337D, "\357\062\375\113\046\013\035"}, + {0x337E, "\357\062\370\323\046\013\035"}, + {0x337F, "\357\331\046\013\035"}, + {0x3380, "\327\362\323\046\013\035"}, + {0x3381, "\354\046\013\035"}, + {0x3382, "\355\111\063\046\013\035"}, + {0x3383, "\277\046\013\035"}, + {0x3384, "\240\046\013\035"}, + {0x3385, "\367\374\046\013\035"}, + {0x3386, "\361\051\046\013\035"}, + {0x3387, "\366\145\046\013\035"}, + {0x3388, "\363\225\046\013\035"}, + {0x3389, "\367\375\046\013\035"}, + {0x338A, "\372\207\046\013\035"}, + {0x338B, "\371\201\046\013\035"}, + {0x338C, "\355\111\355\062\046\013\035"}, + {0x338D, "\355\111\266\046\013\035"}, + {0x338E, "\370\324\046\013\035"}, + {0x338F, "\360\370\046\013\035"}, + {0x3390, "\367\155\046\013\035"}, + {0x3391, "\370\011\046\013\035"}, + {0x3392, "\370\353\046\013\035"}, + {0x3393, "\366\215\046\013\035"}, + {0x3394, "\375\176\046\013\035"}, + {0x3395, "\355\111\211\046\013\035"}, + {0x3396, "\371\003\046\013\035"}, + {0x3397, "\365\313\046\013\035"}, + {0x3398, "\370\034\046\013\035"}, + {0x3399, "\366\075\046\013\035"}, + {0x339A, "\371\302\046\013\035"}, + {0x339B, "\355\111\276\046\013\035"}, + {0x339C, "\357\236\046\013\035"}, + {0x339D, "\357\104\046\013\035"}, + {0x339E, "\356\343\046\013\035"}, + {0x339F, "\357\236\035\046\013\035"}, + {0x33A0, "\357\104\035\046\013\035"}, + {0x33A1, "\276\035\046\013\035"}, + {0x33A2, "\356\343\035\046\013\035"}, + {0x33A3, "\357\236\356\316\046\013\035"}, + {0x33A4, "\357\104\356\316\046\013\035"}, + {0x33A5, "\276\356\316\046\013\035"}, + {0x33A6, "\356\343\356\316\046\013\035"}, + {0x33A7, "\276\355\146\223\046\013\035"}, + {0x33A8, "\276\355\146\223\035\046\013\035"}, + {0x33A9, "\327\046\013\035"}, + {0x33AA, "\370\047\046\013\035"}, + {0x33AB, "\371\026\046\013\035"}, + {0x33AC, "\366\241\046\013\035"}, + {0x33AD, "\357\020\046\013\035"}, + {0x33AE, "\357\020\355\146\223\046\013\035"}, + {0x33AF, "\357\020\355\146\223\035\046\013\035"}, + {0x33B0, "\373\301\046\013\035"}, + {0x33B1, "\371\362\046\013\035"}, + {0x33B2, "\355\111\223\046\013\035"}, + {0x33B3, "\371\027\046\013\035"}, + {0x33B4, "\373\312\046\013\035"}, + {0x33B5, "\371\376\046\013\035"}, + {0x33B6, "\355\111\355\025\046\013\035"}, + {0x33B7, "\361\100\046\013\035"}, + {0x33B8, "\370\064\046\013\035"}, + {0x33B9, "\361\100\357\244\046\013\035"}, + {0x33BA, "\373\313\046\013\035"}, + {0x33BB, "\371\377\046\013\035"}, + {0x33BC, "\355\111\347\046\013\035"}, + {0x33BD, "\361\101\046\013\035"}, + {0x33BE, "\370\065\046\013\035"}, + {0x33BF, "\361\101\357\244\046\013\035"}, + {0x33C0, "\352\356\365\046\013\035"}, + {0x33C1, "\276\356\365\046\013\035"}, + {0x33C2, "\356\277\046\013\035"}, + {0x33C3, "\363\160\046\013\035"}, + {0x33C4, "\363\241\046\013\035"}, + {0x33C5, "\363\242\046\013\035"}, + {0x33C6, "\313\355\146\360\370\046\013\035"}, + {0x33C7, "\360\133\046\013\035"}, + {0x33C8, "\365\203\046\013\035"}, + {0x33C9, "\366\274\046\013\035"}, + {0x33CA, "\314\046\013\035"}, + {0x33CB, "\367\115\046\013\035"}, + {0x33CC, "\357\175\046\013\035"}, + {0x33CD, "\361\002\046\013\035"}, + {0x33CE, "\356\343\010\046\013\035"}, + {0x33CF, "\370\051\046\013\035"}, + {0x33D0, "\370\176\046\013\035"}, + {0x33D1, "\370\177\046\013\035"}, + {0x33D2, "\370\201\046\013\035"}, + {0x33D3, "\370\227\046\013\035"}, + {0x33D4, "\361\051\005\046\013\035"}, + {0x33D5, "\370\361\046\013\035"}, + {0x33D6, "\371\012\046\013\035"}, + {0x33D7, "\372\210\046\013\035"}, + {0x33D8, "\372\250\046\013\035"}, + {0x33D9, "\373\263\046\013\035"}, + {0x33DA, "\373\264\046\013\035"}, + {0x33DB, "\374\370\046\013\035"}, + {0x33DC, "\375\050\046\013\035"}, + {0x33DD, "\376\077\046\013\035"}, + {0x33E0, "\022\162\076\303\110"}, + {0x33E1, "\022\162\076\303\127"}, + {0x33E2, "\022\162\076\303\136"}, + {0x33E3, "\022\162\076\303\220"}, + {0x33E4, "\022\162\076\303\230"}, + {0x33E5, "\022\162\076\303\255"}, + {0x33E6, "\022\162\076\303\252"}, + {0x33E7, "\022\162\076\303\226"}, + {0x33E8, "\022\162\076\303\257"}, + {0x33E9, "\022\162\076\303\355\034"}, + {0x33EA, "\022\162\076\303\356\027"}, + {0x33EB, "\022\162\076\303\355\317"}, + {0x33EC, "\022\162\076\356\260"}, + {0x33ED, "\022\162\076\303\356\246"}, + {0x33EE, "\022\162\076\303\356\250"}, + {0x33EF, "\022\162\076\303\356\043"}, + {0x33F0, "\022\162\076\303\356\162"}, + {0x33F1, "\022\162\076\303\356\160"}, + {0x33F2, "\022\162\076\303\356\161"}, + {0x33F3, "\022\162\076\303\356\050"}, + {0x33F4, "\022\162\076\303\362\066"}, + {0x33F5, "\022\162\076\303\362\065"}, + {0x33F6, "\022\162\076\303\362\070"}, + {0x33F7, "\022\162\076\303\362\067"}, + {0x33F8, "\022\162\076\303\376\032"}, + {0x33F9, "\022\162\076\303\376\036"}, + {0x33FA, "\022\162\076\303\376\035"}, + {0x33FB, "\022\162\076\303\376\033"}, + {0x33FC, "\022\162\076\303\376\034"}, + {0x33FD, "\022\162\076\303\357\365"}, + {0x33FE, "\022\162\076\303\375\253"}, + {0xA000, "\002\003\367\235"}, + {0xA001, "\002\003\367\237"}, + {0xA002, "\002\003\103"}, + {0xA003, "\002\003\367\226"}, + {0xA004, "\002\003\367\176"}, + {0xA005, "\002\003\367\177"}, + {0xA006, "\002\003\367\174"}, + {0xA007, "\002\003\367\175"}, + {0xA008, "\002\003\362\377"}, + {0xA009, "\002\003\363\011"}, + {0xA00A, "\002\003\063"}, + {0xA00B, "\002\003\362\346"}, + {0xA00C, "\002\003\375\375"}, + {0xA00D, "\002\003\375\372"}, + {0xA00E, "\002\003\375\374"}, + {0xA00F, "\002\003\372\115"}, + {0xA010, "\002\003\372\136"}, + {0xA011, "\002\003\064"}, + {0xA012, "\002\003\361\140"}, + {0xA013, "\002\003\366\030"}, + {0xA014, "\002\003\130"}, + {0xA015, "\002\003\376\105"}, + {0xA016, "\002\003\363\140"}, + {0xA017, "\002\003\363\141"}, + {0xA018, "\002\003\356\304"}, + {0xA019, "\002\003\363\133"}, + {0xA01A, "\002\003\363\125"}, + {0xA01B, "\002\003\363\126"}, + {0xA01C, "\002\003\363\123"}, + {0xA01D, "\002\003\363\124"}, + {0xA01E, "\002\003\363\037"}, + {0xA01F, "\002\003\363\042"}, + {0xA020, "\002\003\355\052"}, + {0xA021, "\002\003\363\030"}, + {0xA022, "\002\003\363\171"}, + {0xA023, "\002\003\363\167"}, + {0xA024, "\002\003\363\170"}, + {0xA025, "\002\003\363\151"}, + {0xA026, "\002\003\363\156"}, + {0xA027, "\002\003\355\377"}, + {0xA028, "\002\003\363\147"}, + {0xA029, "\002\003\363\115"}, + {0xA02A, "\002\003\356\142"}, + {0xA02B, "\002\003\363\112"}, + {0xA02C, "\002\003\363\176"}, + {0xA02D, "\002\003\363\177"}, + {0xA02E, "\002\003\356\003"}, + {0xA02F, "\002\003\363\172"}, + {0xA030, "\002\003\363\174"}, + {0xA031, "\002\003\360\101"}, + {0xA032, "\002\003\363\205"}, + {0xA033, "\002\003\363\206"}, + {0xA034, "\002\003\363\201"}, + {0xA035, "\002\003\363\202"}, + {0xA036, "\002\003\363\204"}, + {0xA037, "\002\003\363\203"}, + {0xA038, "\002\003\372\234"}, + {0xA039, "\002\003\372\235"}, + {0xA03A, "\002\003\355\233"}, + {0xA03B, "\002\003\372\233"}, + {0xA03C, "\002\003\372\230"}, + {0xA03D, "\002\003\372\225"}, + {0xA03E, "\002\003\372\226"}, + {0xA03F, "\002\003\372\164"}, + {0xA040, "\002\003\372\167"}, + {0xA041, "\002\003\327"}, + {0xA042, "\002\003\372\153"}, + {0xA043, "\002\003\373\305"}, + {0xA044, "\002\003\373\303"}, + {0xA045, "\002\003\373\304"}, + {0xA046, "\002\003\373\257"}, + {0xA047, "\002\003\373\262"}, + {0xA048, "\002\003\355\273"}, + {0xA049, "\002\003\373\255"}, + {0xA04A, "\002\003\361\230"}, + {0xA04B, "\002\003\373\311"}, + {0xA04C, "\002\003\357\277"}, + {0xA04D, "\002\003\373\306"}, + {0xA04E, "\002\003\373\310"}, + {0xA04F, "\002\003\373\307"}, + {0xA050, "\002\003\361\231"}, + {0xA051, "\002\003\373\321"}, + {0xA052, "\002\003\373\315"}, + {0xA053, "\002\003\373\316"}, + {0xA054, "\002\003\373\320"}, + {0xA055, "\002\003\373\317"}, + {0xA056, "\002\003\363\061"}, + {0xA057, "\002\003\363\062"}, + {0xA058, "\002\003\363\053"}, + {0xA059, "\002\003\363\060"}, + {0xA05A, "\002\003\363\056"}, + {0xA05B, "\002\003\363\057"}, + {0xA05C, "\002\003\363\054"}, + {0xA05D, "\002\003\363\055"}, + {0xA05E, "\002\003\363\046"}, + {0xA05F, "\002\003\363\047"}, + {0xA060, "\002\003\363\044"}, + {0xA061, "\002\003\363\045"}, + {0xA062, "\002\003\363\072"}, + {0xA063, "\002\003\363\070"}, + {0xA064, "\002\003\363\071"}, + {0xA065, "\002\003\363\065"}, + {0xA066, "\002\003\363\066"}, + {0xA067, "\002\003\363\063"}, + {0xA068, "\002\003\363\064"}, + {0xA069, "\002\003\363\052"}, + {0xA06A, "\002\003\363\050"}, + {0xA06B, "\002\003\363\051"}, + {0xA06C, "\002\003\360\070"}, + {0xA06D, "\002\003\363\076"}, + {0xA06E, "\002\003\363\067"}, + {0xA06F, "\002\003\363\073"}, + {0xA070, "\002\003\363\075"}, + {0xA071, "\002\003\363\074"}, + {0xA072, "\002\003\363\101"}, + {0xA073, "\002\003\363\102"}, + {0xA074, "\002\003\363\077"}, + {0xA075, "\002\003\363\100"}, + {0xA076, "\002\003\371\122"}, + {0xA077, "\002\003\371\123"}, + {0xA078, "\002\003\371\116"}, + {0xA079, "\002\003\371\121"}, + {0xA07A, "\002\003\371\120"}, + {0xA07B, "\002\003\361\107"}, + {0xA07C, "\002\003\371\117"}, + {0xA07D, "\002\003\371\114"}, + {0xA07E, "\002\003\371\115"}, + {0xA07F, "\002\003\371\112"}, + {0xA080, "\002\003\371\113"}, + {0xA081, "\002\003\371\126"}, + {0xA082, "\002\003\371\127"}, + {0xA083, "\002\003\371\124"}, + {0xA084, "\002\003\371\125"}, + {0xA085, "\002\003\371\134"}, + {0xA086, "\002\003\371\135"}, + {0xA087, "\002\003\371\130"}, + {0xA088, "\002\003\371\131"}, + {0xA089, "\002\003\371\133"}, + {0xA08A, "\002\003\371\132"}, + {0xA08B, "\002\003\371\142"}, + {0xA08C, "\002\003\371\143"}, + {0xA08D, "\002\003\371\136"}, + {0xA08E, "\002\003\371\137"}, + {0xA08F, "\002\003\371\141"}, + {0xA090, "\002\003\371\140"}, + {0xA091, "\002\003\367\030"}, + {0xA092, "\002\003\367\031"}, + {0xA093, "\002\003\367\023"}, + {0xA094, "\002\003\367\027"}, + {0xA095, "\002\003\367\026"}, + {0xA096, "\002\003\367\024"}, + {0xA097, "\002\003\367\025"}, + {0xA098, "\002\003\367\021"}, + {0xA099, "\002\003\367\022"}, + {0xA09A, "\002\003\367\017"}, + {0xA09B, "\002\003\367\020"}, + {0xA09C, "\002\003\367\040"}, + {0xA09D, "\002\003\367\036"}, + {0xA09E, "\002\003\367\037"}, + {0xA09F, "\002\003\367\033"}, + {0xA0A0, "\002\003\367\034"}, + {0xA0A1, "\002\003\360\323"}, + {0xA0A2, "\002\003\367\032"}, + {0xA0A3, "\002\003\367\044"}, + {0xA0A4, "\002\003\367\045"}, + {0xA0A5, "\002\003\367\035"}, + {0xA0A6, "\002\003\367\041"}, + {0xA0A7, "\002\003\367\043"}, + {0xA0A8, "\002\003\367\042"}, + {0xA0A9, "\002\003\367\052"}, + {0xA0AA, "\002\003\367\046"}, + {0xA0AB, "\002\003\367\047"}, + {0xA0AC, "\002\003\367\051"}, + {0xA0AD, "\002\003\367\050"}, + {0xA0AE, "\002\003\370\373"}, + {0xA0AF, "\002\003\370\374"}, + {0xA0B0, "\002\003\355\230"}, + {0xA0B1, "\002\003\370\367"}, + {0xA0B2, "\002\003\370\357"}, + {0xA0B3, "\002\003\370\355"}, + {0xA0B4, "\002\003\370\356"}, + {0xA0B5, "\002\003\370\275"}, + {0xA0B6, "\002\003\370\301"}, + {0xA0B7, "\002\003\277"}, + {0xA0B8, "\002\003\370\265"}, + {0xA0B9, "\002\003\371\035"}, + {0xA0BA, "\002\003\371\036"}, + {0xA0BB, "\002\003\371\033"}, + {0xA0BC, "\002\003\371\034"}, + {0xA0BD, "\002\003\361\065"}, + {0xA0BE, "\002\003\371\023"}, + {0xA0BF, "\002\003\355\136"}, + {0xA0C0, "\002\003\361\062"}, + {0xA0C1, "\002\003\370\322"}, + {0xA0C2, "\002\003\355\334"}, + {0xA0C3, "\002\003\371\042"}, + {0xA0C4, "\002\003\371\043"}, + {0xA0C5, "\002\003\355\111"}, + {0xA0C6, "\002\003\371\037"}, + {0xA0C7, "\002\003\371\040"}, + {0xA0C8, "\002\003\361\077"}, + {0xA0C9, "\002\003\371\050"}, + {0xA0CA, "\002\003\371\051"}, + {0xA0CB, "\002\003\371\045"}, + {0xA0CC, "\002\003\371\046"}, + {0xA0CD, "\002\003\366\070"}, + {0xA0CE, "\002\003\366\071"}, + {0xA0CF, "\002\003\356\200"}, + {0xA0D0, "\002\003\366\067"}, + {0xA0D1, "\002\003\366\046"}, + {0xA0D2, "\002\003\366\050"}, + {0xA0D3, "\002\003\355\225"}, + {0xA0D4, "\002\003\366\044"}, + {0xA0D5, "\002\003\366\105"}, + {0xA0D6, "\002\003\356\014"}, + {0xA0D7, "\002\003\366\101"}, + {0xA0D8, "\002\003\366\116"}, + {0xA0D9, "\002\003\366\117"}, + {0xA0DA, "\002\003\366\111"}, + {0xA0DB, "\002\003\366\112"}, + {0xA0DC, "\002\003\366\114"}, + {0xA0DD, "\002\003\366\113"}, + {0xA0DE, "\002\003\366\123"}, + {0xA0DF, "\002\003\366\124"}, + {0xA0E0, "\002\003\366\121"}, + {0xA0E1, "\002\003\366\122"}, + {0xA0E2, "\002\003\376\046"}, + {0xA0E3, "\002\003\376\047"}, + {0xA0E4, "\002\003\360\001"}, + {0xA0E5, "\002\003\376\037"}, + {0xA0E6, "\002\003\376\027"}, + {0xA0E7, "\002\003\376\030"}, + {0xA0E8, "\002\003\376\024"}, + {0xA0E9, "\002\003\376\025"}, + {0xA0EA, "\002\003\376\012"}, + {0xA0EB, "\002\003\376\013"}, + {0xA0EC, "\002\003\355\241"}, + {0xA0ED, "\002\003\376\006"}, + {0xA0EE, "\002\003\376\052"}, + {0xA0EF, "\002\003\376\054"}, + {0xA0F0, "\002\003\356\132"}, + {0xA0F1, "\002\003\376\051"}, + {0xA0F2, "\002\003\376\020"}, + {0xA0F3, "\002\003\362\062"}, + {0xA0F4, "\002\003\376\060"}, + {0xA0F5, "\002\003\376\061"}, + {0xA0F6, "\002\003\360\004"}, + {0xA0F7, "\002\003\376\056"}, + {0xA0F8, "\002\003\376\057"}, + {0xA0F9, "\002\003\362\077"}, + {0xA0FA, "\002\003\376\067"}, + {0xA0FB, "\002\003\376\070"}, + {0xA0FC, "\002\003\376\063"}, + {0xA0FD, "\002\003\376\064"}, + {0xA0FE, "\002\003\376\066"}, + {0xA0FF, "\002\003\376\065"}, + {0xA100, "\002\003\365\274"}, + {0xA101, "\002\003\355\034"}, + {0xA102, "\002\003\356\062"}, + {0xA103, "\002\003\365\270"}, + {0xA104, "\002\003\365\266"}, + {0xA105, "\002\003\365\264"}, + {0xA106, "\002\003\365\265"}, + {0xA107, "\002\003\365\177"}, + {0xA108, "\002\003\365\202"}, + {0xA109, "\002\003\355\002"}, + {0xA10A, "\002\003\365\174"}, + {0xA10B, "\002\003\365\333"}, + {0xA10C, "\002\003\365\332"}, + {0xA10D, "\002\003\365\325"}, + {0xA10E, "\002\003\365\327"}, + {0xA10F, "\002\003\355\252"}, + {0xA110, "\002\003\365\323"}, + {0xA111, "\002\003\365\257"}, + {0xA112, "\002\003\007"}, + {0xA113, "\002\003\365\251"}, + {0xA114, "\002\003\365\336"}, + {0xA115, "\002\003\365\337"}, + {0xA116, "\002\003\212"}, + {0xA117, "\002\003\365\334"}, + {0xA118, "\002\003\365\335"}, + {0xA119, "\002\003\356\324"}, + {0xA11A, "\002\003\375\214"}, + {0xA11B, "\002\003\375\216"}, + {0xA11C, "\002\003\355\217"}, + {0xA11D, "\002\003\375\207"}, + {0xA11E, "\002\003\375\204"}, + {0xA11F, "\002\003\375\202"}, + {0xA120, "\002\003\375\203"}, + {0xA121, "\002\003\375\106"}, + {0xA122, "\002\003\375\112"}, + {0xA123, "\002\003\311"}, + {0xA124, "\002\003\375\103"}, + {0xA125, "\002\003\375\321"}, + {0xA126, "\002\003\375\322"}, + {0xA127, "\002\003\375\317"}, + {0xA128, "\002\003\375\320"}, + {0xA129, "\002\003\375\232"}, + {0xA12A, "\002\003\375\241"}, + {0xA12B, "\002\003\355\176"}, + {0xA12C, "\002\003\375\230"}, + {0xA12D, "\002\003\375\165"}, + {0xA12E, "\002\003\356\125"}, + {0xA12F, "\002\003\375\161"}, + {0xA130, "\002\003\375\326"}, + {0xA131, "\002\003\375\327"}, + {0xA132, "\002\003\355\300"}, + {0xA133, "\002\003\375\323"}, + {0xA134, "\002\003\375\325"}, + {0xA135, "\002\003\375\324"}, + {0xA136, "\002\003\365\216"}, + {0xA137, "\002\003\365\217"}, + {0xA138, "\002\003\360\164"}, + {0xA139, "\002\003\365\215"}, + {0xA13A, "\002\003\365\214"}, + {0xA13B, "\002\003\365\212"}, + {0xA13C, "\002\003\365\213"}, + {0xA13D, "\002\003\365\205"}, + {0xA13E, "\002\003\365\206"}, + {0xA13F, "\002\003\355\120"}, + {0xA140, "\002\003\365\204"}, + {0xA141, "\002\003\365\227"}, + {0xA142, "\002\003\365\225"}, + {0xA143, "\002\003\365\226"}, + {0xA144, "\002\003\365\221"}, + {0xA145, "\002\003\365\223"}, + {0xA146, "\002\003\360\165"}, + {0xA147, "\002\003\365\220"}, + {0xA148, "\002\003\365\211"}, + {0xA149, "\002\003\360\163"}, + {0xA14A, "\002\003\365\210"}, + {0xA14B, "\002\003\365\232"}, + {0xA14C, "\002\003\365\233"}, + {0xA14D, "\002\003\365\224"}, + {0xA14E, "\002\003\365\230"}, + {0xA14F, "\002\003\365\231"}, + {0xA150, "\002\003\360\166"}, + {0xA151, "\002\003\371\157"}, + {0xA152, "\002\003\371\160"}, + {0xA153, "\002\003\371\153"}, + {0xA154, "\002\003\371\156"}, + {0xA155, "\002\003\371\155"}, + {0xA156, "\002\003\371\154"}, + {0xA157, "\002\003\371\146"}, + {0xA158, "\002\003\371\147"}, + {0xA159, "\002\003\371\144"}, + {0xA15A, "\002\003\371\145"}, + {0xA15B, "\002\003\371\163"}, + {0xA15C, "\002\003\371\164"}, + {0xA15D, "\002\003\371\161"}, + {0xA15E, "\002\003\371\162"}, + {0xA15F, "\002\003\371\152"}, + {0xA160, "\002\003\371\150"}, + {0xA161, "\002\003\371\151"}, + {0xA162, "\002\003\371\171"}, + {0xA163, "\002\003\371\172"}, + {0xA164, "\002\003\371\165"}, + {0xA165, "\002\003\371\166"}, + {0xA166, "\002\003\371\170"}, + {0xA167, "\002\003\371\167"}, + {0xA168, "\002\003\367\067"}, + {0xA169, "\002\003\367\070"}, + {0xA16A, "\002\003\367\061"}, + {0xA16B, "\002\003\367\066"}, + {0xA16C, "\002\003\367\064"}, + {0xA16D, "\002\003\367\065"}, + {0xA16E, "\002\003\367\062"}, + {0xA16F, "\002\003\367\063"}, + {0xA170, "\002\003\367\054"}, + {0xA171, "\002\003\367\055"}, + {0xA172, "\002\003\360\324"}, + {0xA173, "\002\003\367\053"}, + {0xA174, "\002\003\367\075"}, + {0xA175, "\002\003\367\074"}, + {0xA176, "\002\003\367\072"}, + {0xA177, "\002\003\367\073"}, + {0xA178, "\002\003\367\071"}, + {0xA179, "\002\003\367\060"}, + {0xA17A, "\002\003\367\056"}, + {0xA17B, "\002\003\367\057"}, + {0xA17C, "\002\003\367\076"}, + {0xA17D, "\002\003\371\245"}, + {0xA17E, "\002\003\371\246"}, + {0xA17F, "\002\003\244"}, + {0xA180, "\002\003\371\243"}, + {0xA181, "\002\003\371\236"}, + {0xA182, "\002\003\371\234"}, + {0xA183, "\002\003\371\235"}, + {0xA184, "\002\003\371\110"}, + {0xA185, "\002\003\354"}, + {0xA186, "\002\003\371\103"}, + {0xA187, "\002\003\371\370"}, + {0xA188, "\002\003\371\366"}, + {0xA189, "\002\003\371\367"}, + {0xA18A, "\002\003\371\324"}, + {0xA18B, "\002\003\371\331"}, + {0xA18C, "\002\003\355\113"}, + {0xA18D, "\002\003\371\323"}, + {0xA18E, "\002\003\371\177"}, + {0xA18F, "\002\003\355\140"}, + {0xA190, "\002\003\371\174"}, + {0xA191, "\002\003\371\374"}, + {0xA192, "\002\003\371\375"}, + {0xA193, "\002\003\356\025"}, + {0xA194, "\002\003\371\371"}, + {0xA195, "\002\003\371\373"}, + {0xA196, "\002\003\371\372"}, + {0xA197, "\002\003\366\372"}, + {0xA198, "\002\003\366\373"}, + {0xA199, "\002\003\366\365"}, + {0xA19A, "\002\003\366\371"}, + {0xA19B, "\002\003\366\370"}, + {0xA19C, "\002\003\366\366"}, + {0xA19D, "\002\003\366\367"}, + {0xA19E, "\002\003\366\360"}, + {0xA19F, "\002\003\366\361"}, + {0xA1A0, "\002\003\366\356"}, + {0xA1A1, "\002\003\366\357"}, + {0xA1A2, "\002\003\367\003"}, + {0xA1A3, "\002\003\367\001"}, + {0xA1A4, "\002\003\367\002"}, + {0xA1A5, "\002\003\366\376"}, + {0xA1A6, "\002\003\366\374"}, + {0xA1A7, "\002\003\366\375"}, + {0xA1A8, "\002\003\366\364"}, + {0xA1A9, "\002\003\366\362"}, + {0xA1AA, "\002\003\366\363"}, + {0xA1AB, "\002\003\367\007"}, + {0xA1AC, "\002\003\367\010"}, + {0xA1AD, "\002\003\366\377"}, + {0xA1AE, "\002\003\367\004"}, + {0xA1AF, "\002\003\367\006"}, + {0xA1B0, "\002\003\367\005"}, + {0xA1B1, "\002\003\367\015"}, + {0xA1B2, "\002\003\367\016"}, + {0xA1B3, "\002\003\367\011"}, + {0xA1B4, "\002\003\367\012"}, + {0xA1B5, "\002\003\367\014"}, + {0xA1B6, "\002\003\367\013"}, + {0xA1B7, "\002\003\370\174"}, + {0xA1B8, "\002\003\370\175"}, + {0xA1B9, "\002\003\356\077"}, + {0xA1BA, "\002\003\370\172"}, + {0xA1BB, "\002\003\370\165"}, + {0xA1BC, "\002\003\370\166"}, + {0xA1BD, "\002\003\361\027"}, + {0xA1BE, "\002\003\370\164"}, + {0xA1BF, "\002\003\370\134"}, + {0xA1C0, "\002\003\370\137"}, + {0xA1C1, "\002\003\033"}, + {0xA1C2, "\002\003\370\133"}, + {0xA1C3, "\002\003\370\217"}, + {0xA1C4, "\002\003\370\220"}, + {0xA1C5, "\002\003\370\215"}, + {0xA1C6, "\002\003\370\216"}, + {0xA1C7, "\002\003\370\206"}, + {0xA1C8, "\002\003\370\210"}, + {0xA1C9, "\002\003\355\170"}, + {0xA1CA, "\002\003\370\204"}, + {0xA1CB, "\002\003\370\150"}, + {0xA1CC, "\002\003\050"}, + {0xA1CD, "\002\003\370\146"}, + {0xA1CE, "\002\003\370\224"}, + {0xA1CF, "\002\003\370\225"}, + {0xA1D0, "\002\003\370\212"}, + {0xA1D1, "\002\003\370\221"}, + {0xA1D2, "\002\003\370\223"}, + {0xA1D3, "\002\003\370\222"}, + {0xA1D4, "\002\003\370\233"}, + {0xA1D5, "\002\003\370\234"}, + {0xA1D6, "\002\003\370\230"}, + {0xA1D7, "\002\003\370\231"}, + {0xA1D8, "\002\003\370\232"}, + {0xA1D9, "\002\003\361\045"}, + {0xA1DA, "\002\003\366\230"}, + {0xA1DB, "\002\003\366\231"}, + {0xA1DC, "\002\003\356\204"}, + {0xA1DD, "\002\003\366\226"}, + {0xA1DE, "\002\003\366\221"}, + {0xA1DF, "\002\003\366\222"}, + {0xA1E0, "\002\003\366\217"}, + {0xA1E1, "\002\003\366\220"}, + {0xA1E2, "\002\003\366\143"}, + {0xA1E3, "\002\003\366\144"}, + {0xA1E4, "\002\003\355\017"}, + {0xA1E5, "\002\003\366\140"}, + {0xA1E6, "\002\003\366\255"}, + {0xA1E7, "\002\003\366\256"}, + {0xA1E8, "\002\003\366\253"}, + {0xA1E9, "\002\003\366\254"}, + {0xA1EA, "\002\003\360\277"}, + {0xA1EB, "\002\003\366\240"}, + {0xA1EC, "\002\003\356\071"}, + {0xA1ED, "\002\003\366\235"}, + {0xA1EE, "\002\003\366\155"}, + {0xA1EF, "\002\003\366\156"}, + {0xA1F0, "\002\003\356\203"}, + {0xA1F1, "\002\003\360\263"}, + {0xA1F2, "\002\003\366\264"}, + {0xA1F3, "\002\003\366\265"}, + {0xA1F4, "\002\003\357\160"}, + {0xA1F5, "\002\003\366\257"}, + {0xA1F6, "\002\003\366\263"}, + {0xA1F7, "\002\003\366\260"}, + {0xA1F8, "\002\003\360\377"}, + {0xA1F9, "\002\003\370\023"}, + {0xA1FA, "\002\003\355\332"}, + {0xA1FB, "\002\003\360\376"}, + {0xA1FC, "\002\003\370\015"}, + {0xA1FD, "\002\003\370\013"}, + {0xA1FE, "\002\003\370\014"}, + {0xA1FF, "\002\003\367\367"}, + {0xA200, "\002\003\367\372"}, + {0xA201, "\002\003\240"}, + {0xA202, "\002\003\367\362"}, + {0xA203, "\002\003\370\054"}, + {0xA204, "\002\003\370\052"}, + {0xA205, "\002\003\370\053"}, + {0xA206, "\002\003\370\042"}, + {0xA207, "\002\003\370\045"}, + {0xA208, "\002\003\355\167"}, + {0xA209, "\002\003\370\040"}, + {0xA20A, "\002\003\370\001"}, + {0xA20B, "\002\003\370\002"}, + {0xA20C, "\002\003\355\331"}, + {0xA20D, "\002\003\367\377"}, + {0xA20E, "\002\003\370\062"}, + {0xA20F, "\002\003\370\063"}, + {0xA210, "\002\003\356\021"}, + {0xA211, "\002\003\370\055"}, + {0xA212, "\002\003\370\060"}, + {0xA213, "\002\003\370\056"}, + {0xA214, "\002\003\366\170"}, + {0xA215, "\002\003\366\171"}, + {0xA216, "\002\003\360\267"}, + {0xA217, "\002\003\366\167"}, + {0xA218, "\002\003\366\165"}, + {0xA219, "\002\003\366\166"}, + {0xA21A, "\002\003\366\160"}, + {0xA21B, "\002\003\366\161"}, + {0xA21C, "\002\003\360\265"}, + {0xA21D, "\002\003\366\157"}, + {0xA21E, "\002\003\366\177"}, + {0xA21F, "\002\003\366\200"}, + {0xA220, "\002\003\360\272"}, + {0xA221, "\002\003\366\176"}, + {0xA222, "\002\003\366\172"}, + {0xA223, "\002\003\366\174"}, + {0xA224, "\002\003\360\270"}, + {0xA225, "\002\003\360\271"}, + {0xA226, "\002\003\366\163"}, + {0xA227, "\002\003\366\164"}, + {0xA228, "\002\003\360\266"}, + {0xA229, "\002\003\366\162"}, + {0xA22A, "\002\003\366\204"}, + {0xA22B, "\002\003\366\205"}, + {0xA22C, "\002\003\366\175"}, + {0xA22D, "\002\003\366\201"}, + {0xA22E, "\002\003\366\203"}, + {0xA22F, "\002\003\366\202"}, + {0xA230, "\002\003\370\335"}, + {0xA231, "\002\003\370\334"}, + {0xA232, "\002\003\370\327"}, + {0xA233, "\002\003\370\330"}, + {0xA234, "\002\003\370\325"}, + {0xA235, "\002\003\370\326"}, + {0xA236, "\002\003\370\344"}, + {0xA237, "\002\003\370\342"}, + {0xA238, "\002\003\370\343"}, + {0xA239, "\002\003\370\337"}, + {0xA23A, "\002\003\370\340"}, + {0xA23B, "\002\003\355\207"}, + {0xA23C, "\002\003\370\336"}, + {0xA23D, "\002\003\370\333"}, + {0xA23E, "\002\003\370\331"}, + {0xA23F, "\002\003\370\332"}, + {0xA240, "\002\003\370\350"}, + {0xA241, "\002\003\370\351"}, + {0xA242, "\002\003\370\341"}, + {0xA243, "\002\003\370\345"}, + {0xA244, "\002\003\370\347"}, + {0xA245, "\002\003\370\346"}, + {0xA246, "\002\003\360\334"}, + {0xA247, "\002\003\367\146"}, + {0xA248, "\002\003\367\140"}, + {0xA249, "\002\003\367\145"}, + {0xA24A, "\002\003\367\143"}, + {0xA24B, "\002\003\367\144"}, + {0xA24C, "\002\003\367\141"}, + {0xA24D, "\002\003\367\142"}, + {0xA24E, "\002\003\367\133"}, + {0xA24F, "\002\003\367\134"}, + {0xA250, "\002\003\367\131"}, + {0xA251, "\002\003\367\132"}, + {0xA252, "\002\003\367\152"}, + {0xA253, "\002\003\367\153"}, + {0xA254, "\002\003\360\337"}, + {0xA255, "\002\003\367\151"}, + {0xA256, "\002\003\360\336"}, + {0xA257, "\002\003\367\150"}, + {0xA258, "\002\003\367\147"}, + {0xA259, "\002\003\360\335"}, + {0xA25A, "\002\003\367\137"}, + {0xA25B, "\002\003\367\135"}, + {0xA25C, "\002\003\367\136"}, + {0xA25D, "\002\003\371\215"}, + {0xA25E, "\002\003\371\213"}, + {0xA25F, "\002\003\371\214"}, + {0xA260, "\002\003\371\203"}, + {0xA261, "\002\003\371\204"}, + {0xA262, "\002\003\355\066"}, + {0xA263, "\002\003\371\202"}, + {0xA264, "\002\003\371\223"}, + {0xA265, "\002\003\371\224"}, + {0xA266, "\002\003\371\222"}, + {0xA267, "\002\003\371\217"}, + {0xA268, "\002\003\371\221"}, + {0xA269, "\002\003\356\225"}, + {0xA26A, "\002\003\371\216"}, + {0xA26B, "\002\003\371\210"}, + {0xA26C, "\002\003\371\206"}, + {0xA26D, "\002\003\371\207"}, + {0xA26E, "\002\003\366\347"}, + {0xA26F, "\002\003\366\345"}, + {0xA270, "\002\003\366\344"}, + {0xA271, "\002\003\366\317"}, + {0xA272, "\002\003\366\321"}, + {0xA273, "\002\003\314"}, + {0xA274, "\002\003\366\315"}, + {0xA275, "\002\003\367\123"}, + {0xA276, "\002\003\367\124"}, + {0xA277, "\002\003\367\121"}, + {0xA278, "\002\003\367\122"}, + {0xA279, "\002\003\367\105"}, + {0xA27A, "\002\003\367\114"}, + {0xA27B, "\002\003\355\107"}, + {0xA27C, "\002\003\367\101"}, + {0xA27D, "\002\003\366\327"}, + {0xA27E, "\002\003\356\072"}, + {0xA27F, "\002\003\366\324"}, + {0xA280, "\002\003\376\074"}, + {0xA281, "\002\003\376\076"}, + {0xA282, "\002\003\355\050"}, + {0xA283, "\002\003\376\073"}, + {0xA284, "\002\003\376\111"}, + {0xA285, "\002\003\376\107"}, + {0xA286, "\002\003\376\110"}, + {0xA287, "\002\003\376\104"}, + {0xA288, "\002\003\355\150"}, + {0xA289, "\002\003\376\103"}, + {0xA28A, "\002\003\376\102"}, + {0xA28B, "\002\003\356\270"}, + {0xA28C, "\002\003\376\101"}, + {0xA28D, "\002\003\376\303"}, + {0xA28E, "\002\003\376\304"}, + {0xA28F, "\002\003\356\275"}, + {0xA290, "\002\003\376\302"}, + {0xA291, "\002\003\376\277"}, + {0xA292, "\002\003\376\275"}, + {0xA293, "\002\003\376\276"}, + {0xA294, "\002\003\376\236"}, + {0xA295, "\002\003\376\240"}, + {0xA296, "\002\003\355\101"}, + {0xA297, "\002\003\376\234"}, + {0xA298, "\002\003\376\312"}, + {0xA299, "\002\003\376\310"}, + {0xA29A, "\002\003\376\311"}, + {0xA29B, "\002\003\362\143"}, + {0xA29C, "\002\003\376\306"}, + {0xA29D, "\002\003\356\135"}, + {0xA29E, "\002\003\376\305"}, + {0xA29F, "\002\003\376\242"}, + {0xA2A0, "\002\003\356\274"}, + {0xA2A1, "\002\003\376\241"}, + {0xA2A2, "\002\003\376\315"}, + {0xA2A3, "\002\003\376\316"}, + {0xA2A4, "\002\003\360\022"}, + {0xA2A5, "\002\003\376\313"}, + {0xA2A6, "\002\003\376\314"}, + {0xA2A7, "\002\003\362\145"}, + {0xA2A8, "\002\003\376\324"}, + {0xA2A9, "\002\003\376\325"}, + {0xA2AA, "\002\003\376\320"}, + {0xA2AB, "\002\003\376\321"}, + {0xA2AC, "\002\003\376\323"}, + {0xA2AD, "\002\003\376\322"}, + {0xA2AE, "\002\003\363\353"}, + {0xA2AF, "\002\003\363\356"}, + {0xA2B0, "\002\003\363\344"}, + {0xA2B1, "\002\003\360\131"}, + {0xA2B2, "\002\003\363\350"}, + {0xA2B3, "\002\003\363\351"}, + {0xA2B4, "\002\003\363\346"}, + {0xA2B5, "\002\003\363\347"}, + {0xA2B6, "\002\003\363\236"}, + {0xA2B7, "\002\003\363\240"}, + {0xA2B8, "\002\003\357\073"}, + {0xA2B9, "\002\003\363\232"}, + {0xA2BA, "\002\003\365\130"}, + {0xA2BB, "\002\003\365\127"}, + {0xA2BC, "\002\003\360\145"}, + {0xA2BD, "\002\003\365\077"}, + {0xA2BE, "\002\003\365\114"}, + {0xA2BF, "\002\003\360\133"}, + {0xA2C0, "\002\003\365\066"}, + {0xA2C1, "\002\003\363\253"}, + {0xA2C2, "\002\003\360\107"}, + {0xA2C3, "\002\003\363\251"}, + {0xA2C4, "\002\003\365\135"}, + {0xA2C5, "\002\003\365\136"}, + {0xA2C6, "\002\003\365\123"}, + {0xA2C7, "\002\003\365\131"}, + {0xA2C8, "\002\003\365\134"}, + {0xA2C9, "\002\003\365\132"}, + {0xA2CA, "\002\003\360\150"}, + {0xA2CB, "\002\003\365\143"}, + {0xA2CC, "\002\003\360\146"}, + {0xA2CD, "\002\003\360\147"}, + {0xA2CE, "\002\003\365\142"}, + {0xA2CF, "\002\003\365\141"}, + {0xA2D0, "\002\003\376\341"}, + {0xA2D1, "\002\003\376\342"}, + {0xA2D2, "\002\003\376\335"}, + {0xA2D3, "\002\003\362\147"}, + {0xA2D4, "\002\003\362\146"}, + {0xA2D5, "\002\003\376\340"}, + {0xA2D6, "\002\003\376\336"}, + {0xA2D7, "\002\003\376\337"}, + {0xA2D8, "\002\003\376\330"}, + {0xA2D9, "\002\003\376\331"}, + {0xA2DA, "\002\003\376\326"}, + {0xA2DB, "\002\003\376\327"}, + {0xA2DC, "\002\003\376\345"}, + {0xA2DD, "\002\003\376\343"}, + {0xA2DE, "\002\003\376\344"}, + {0xA2DF, "\002\003\376\334"}, + {0xA2E0, "\002\003\376\332"}, + {0xA2E1, "\002\003\376\333"}, + {0xA2E2, "\002\003\376\352"}, + {0xA2E3, "\002\003\376\346"}, + {0xA2E4, "\002\003\376\347"}, + {0xA2E5, "\002\003\376\351"}, + {0xA2E6, "\002\003\376\350"}, + {0xA2E7, "\002\003\376\357"}, + {0xA2E8, "\002\003\376\360"}, + {0xA2E9, "\002\003\376\353"}, + {0xA2EA, "\002\003\376\354"}, + {0xA2EB, "\002\003\376\356"}, + {0xA2EC, "\002\003\376\355"}, + {0xA2ED, "\002\003\372\037"}, + {0xA2EE, "\002\003\372\040"}, + {0xA2EF, "\002\003\372\032"}, + {0xA2F0, "\002\003\372\036"}, + {0xA2F1, "\002\003\372\035"}, + {0xA2F2, "\002\003\372\033"}, + {0xA2F3, "\002\003\372\034"}, + {0xA2F4, "\002\003\372\026"}, + {0xA2F5, "\002\003\372\027"}, + {0xA2F6, "\002\003\372\024"}, + {0xA2F7, "\002\003\372\025"}, + {0xA2F8, "\002\003\372\045"}, + {0xA2F9, "\002\003\372\044"}, + {0xA2FA, "\002\003\372\042"}, + {0xA2FB, "\002\003\372\041"}, + {0xA2FC, "\002\003\372\031"}, + {0xA2FD, "\002\003\372\030"}, + {0xA2FE, "\002\003\372\050"}, + {0xA2FF, "\002\003\372\043"}, + {0xA300, "\002\003\372\046"}, + {0xA301, "\002\003\372\047"}, + {0xA302, "\002\003\361\130"}, + {0xA303, "\002\003\372\055"}, + {0xA304, "\002\003\372\056"}, + {0xA305, "\002\003\372\051"}, + {0xA306, "\002\003\372\052"}, + {0xA307, "\002\003\372\054"}, + {0xA308, "\002\003\372\053"}, + {0xA309, "\002\003\374\322"}, + {0xA30A, "\002\003\255"}, + {0xA30B, "\002\003\355\275"}, + {0xA30C, "\002\003\374\320"}, + {0xA30D, "\002\003\374\313"}, + {0xA30E, "\002\003\374\311"}, + {0xA30F, "\002\003\374\312"}, + {0xA310, "\002\003\374\225"}, + {0xA311, "\002\003\374\227"}, + {0xA312, "\002\003\355\004"}, + {0xA313, "\002\003\374\223"}, + {0xA314, "\002\003\375\036"}, + {0xA315, "\002\003\375\034"}, + {0xA316, "\002\003\375\035"}, + {0xA317, "\002\003\374\357"}, + {0xA318, "\002\003\374\364"}, + {0xA319, "\002\003\355\070"}, + {0xA31A, "\002\003\374\355"}, + {0xA31B, "\002\003\374\256"}, + {0xA31C, "\002\003\356\042"}, + {0xA31D, "\002\003\374\251"}, + {0xA31E, "\002\003\375\046"}, + {0xA31F, "\002\003\375\047"}, + {0xA320, "\002\003\356\253"}, + {0xA321, "\002\003\375\037"}, + {0xA322, "\002\003\375\044"}, + {0xA323, "\002\003\355\146"}, + {0xA324, "\002\003\375\061"}, + {0xA325, "\002\003\375\062"}, + {0xA326, "\002\003\375\052"}, + {0xA327, "\002\003\375\055"}, + {0xA328, "\002\003\375\057"}, + {0xA329, "\002\003\375\056"}, + {0xA32A, "\002\003\375\005"}, + {0xA32B, "\002\003\375\006"}, + {0xA32C, "\002\003\361\337"}, + {0xA32D, "\002\003\375\004"}, + {0xA32E, "\002\003\375\003"}, + {0xA32F, "\002\003\375\001"}, + {0xA330, "\002\003\375\002"}, + {0xA331, "\002\003\374\373"}, + {0xA332, "\002\003\374\374"}, + {0xA333, "\002\003\356\252"}, + {0xA334, "\002\003\374\372"}, + {0xA335, "\002\003\375\011"}, + {0xA336, "\002\003\375\012"}, + {0xA337, "\002\003\375\007"}, + {0xA338, "\002\003\375\010"}, + {0xA339, "\002\003\374\377"}, + {0xA33A, "\002\003\374\375"}, + {0xA33B, "\002\003\374\376"}, + {0xA33C, "\002\003\375\015"}, + {0xA33D, "\002\003\375\016"}, + {0xA33E, "\002\003\375\013"}, + {0xA33F, "\002\003\375\014"}, + {0xA340, "\002\003\375\023"}, + {0xA341, "\002\003\375\024"}, + {0xA342, "\002\003\375\017"}, + {0xA343, "\002\003\375\020"}, + {0xA344, "\002\003\375\022"}, + {0xA345, "\002\003\375\021"}, + {0xA346, "\002\003\376\244"}, + {0xA347, "\002\003\376\245"}, + {0xA348, "\002\003\355\365"}, + {0xA349, "\002\003\376\243"}, + {0xA34A, "\002\003\376\261"}, + {0xA34B, "\002\003\376\257"}, + {0xA34C, "\002\003\376\260"}, + {0xA34D, "\002\003\376\254"}, + {0xA34E, "\002\003\376\255"}, + {0xA34F, "\002\003\376\252"}, + {0xA350, "\002\003\376\253"}, + {0xA351, "\002\003\376\250"}, + {0xA352, "\002\003\376\251"}, + {0xA353, "\002\003\376\246"}, + {0xA354, "\002\003\376\247"}, + {0xA355, "\002\003\376\265"}, + {0xA356, "\002\003\376\266"}, + {0xA357, "\002\003\376\256"}, + {0xA358, "\002\003\376\262"}, + {0xA359, "\002\003\376\264"}, + {0xA35A, "\002\003\376\263"}, + {0xA35B, "\002\003\376\273"}, + {0xA35C, "\002\003\376\274"}, + {0xA35D, "\002\003\376\267"}, + {0xA35E, "\002\003\376\270"}, + {0xA35F, "\002\003\376\272"}, + {0xA360, "\002\003\376\271"}, + {0xA361, "\002\003\363\264"}, + {0xA362, "\002\003\363\270"}, + {0xA363, "\002\003\355\032"}, + {0xA364, "\002\003\363\261"}, + {0xA365, "\002\003\363\317"}, + {0xA366, "\002\003\363\320"}, + {0xA367, "\002\003\363\315"}, + {0xA368, "\002\003\363\316"}, + {0xA369, "\002\003\363\311"}, + {0xA36A, "\002\003\363\312"}, + {0xA36B, "\002\003\356\054"}, + {0xA36C, "\002\003\363\310"}, + {0xA36D, "\002\003\363\300"}, + {0xA36E, "\002\003\363\306"}, + {0xA36F, "\002\003\356\151"}, + {0xA370, "\002\003\363\277"}, + {0xA371, "\002\003\363\324"}, + {0xA372, "\002\003\363\314"}, + {0xA373, "\002\003\363\321"}, + {0xA374, "\002\003\363\323"}, + {0xA375, "\002\003\363\322"}, + {0xA376, "\002\003\363\332"}, + {0xA377, "\002\003\363\333"}, + {0xA378, "\002\003\363\326"}, + {0xA379, "\002\003\363\327"}, + {0xA37A, "\002\003\363\331"}, + {0xA37B, "\002\003\363\330"}, + {0xA37C, "\002\003\374\114"}, + {0xA37D, "\002\003\355\212"}, + {0xA37E, "\002\003\374\127"}, + {0xA37F, "\002\003\374\126"}, + {0xA380, "\002\003\374\123"}, + {0xA381, "\002\003\374\124"}, + {0xA382, "\002\003\374\121"}, + {0xA383, "\002\003\374\122"}, + {0xA384, "\002\003\374\117"}, + {0xA385, "\002\003\374\120"}, + {0xA386, "\002\003\374\115"}, + {0xA387, "\002\003\374\116"}, + {0xA388, "\002\003\374\133"}, + {0xA389, "\002\003\374\134"}, + {0xA38A, "\002\003\374\125"}, + {0xA38B, "\002\003\374\130"}, + {0xA38C, "\002\003\374\132"}, + {0xA38D, "\002\003\374\131"}, + {0xA38E, "\002\003\374\141"}, + {0xA38F, "\002\003\374\142"}, + {0xA390, "\002\003\374\135"}, + {0xA391, "\002\003\374\136"}, + {0xA392, "\002\003\374\140"}, + {0xA393, "\002\003\374\137"}, + {0xA394, "\002\003\371\335"}, + {0xA395, "\002\003\371\336"}, + {0xA396, "\002\003\371\333"}, + {0xA397, "\002\003\371\334"}, + {0xA398, "\002\003\371\345"}, + {0xA399, "\002\003\371\343"}, + {0xA39A, "\002\003\371\344"}, + {0xA39B, "\002\003\371\341"}, + {0xA39C, "\002\003\371\342"}, + {0xA39D, "\002\003\371\337"}, + {0xA39E, "\002\003\371\340"}, + {0xA39F, "\002\003\371\352"}, + {0xA3A0, "\002\003\371\353"}, + {0xA3A1, "\002\003\371\346"}, + {0xA3A2, "\002\003\371\347"}, + {0xA3A3, "\002\003\371\351"}, + {0xA3A4, "\002\003\371\350"}, + {0xA3A5, "\002\003\371\360"}, + {0xA3A6, "\002\003\371\361"}, + {0xA3A7, "\002\003\371\354"}, + {0xA3A8, "\002\003\371\355"}, + {0xA3A9, "\002\003\371\357"}, + {0xA3AA, "\002\003\371\356"}, + {0xA3AB, "\002\003\361\312"}, + {0xA3AC, "\002\003\374\263"}, + {0xA3AD, "\002\003\357\325"}, + {0xA3AE, "\002\003\374\262"}, + {0xA3AF, "\002\003\374\277"}, + {0xA3B0, "\002\003\374\275"}, + {0xA3B1, "\002\003\374\276"}, + {0xA3B2, "\002\003\374\272"}, + {0xA3B3, "\002\003\374\273"}, + {0xA3B4, "\002\003\374\270"}, + {0xA3B5, "\002\003\361\313"}, + {0xA3B6, "\002\003\374\266"}, + {0xA3B7, "\002\003\374\267"}, + {0xA3B8, "\002\003\374\264"}, + {0xA3B9, "\002\003\374\265"}, + {0xA3BA, "\002\003\374\302"}, + {0xA3BB, "\002\003\374\303"}, + {0xA3BC, "\002\003\374\274"}, + {0xA3BD, "\002\003\374\300"}, + {0xA3BE, "\002\003\374\301"}, + {0xA3BF, "\002\003\361\314"}, + {0xA3C0, "\002\003\374\307"}, + {0xA3C1, "\002\003\374\310"}, + {0xA3C2, "\002\003\361\315"}, + {0xA3C3, "\002\003\374\304"}, + {0xA3C4, "\002\003\374\306"}, + {0xA3C5, "\002\003\374\305"}, + {0xA3C6, "\002\003\361\246"}, + {0xA3C7, "\002\003\374\043"}, + {0xA3C8, "\002\003\322"}, + {0xA3C9, "\002\003\374\037"}, + {0xA3CA, "\002\003\374\147"}, + {0xA3CB, "\002\003\374\145"}, + {0xA3CC, "\002\003\374\146"}, + {0xA3CD, "\002\003\374\105"}, + {0xA3CE, "\002\003\374\113"}, + {0xA3CF, "\002\003\355\174"}, + {0xA3D0, "\002\003\374\104"}, + {0xA3D1, "\002\003\374\060"}, + {0xA3D2, "\002\003\356\035"}, + {0xA3D3, "\002\003\374\055"}, + {0xA3D4, "\002\003\374\154"}, + {0xA3D5, "\002\003\374\155"}, + {0xA3D6, "\002\003\356\037"}, + {0xA3D7, "\002\003\374\150"}, + {0xA3D8, "\002\003\374\153"}, + {0xA3D9, "\002\003\374\152"}, + {0xA3DA, "\002\003\374\163"}, + {0xA3DB, "\002\003\374\164"}, + {0xA3DC, "\002\003\374\157"}, + {0xA3DD, "\002\003\374\160"}, + {0xA3DE, "\002\003\374\162"}, + {0xA3DF, "\002\003\374\161"}, + {0xA3E0, "\002\003\367\267"}, + {0xA3E1, "\002\003\367\270"}, + {0xA3E2, "\002\003\360\360"}, + {0xA3E3, "\002\003\367\266"}, + {0xA3E4, "\002\003\367\264"}, + {0xA3E5, "\002\003\367\265"}, + {0xA3E6, "\002\003\367\262"}, + {0xA3E7, "\002\003\367\263"}, + {0xA3E8, "\002\003\367\332"}, + {0xA3E9, "\002\003\367\333"}, + {0xA3EA, "\002\003\367\330"}, + {0xA3EB, "\002\003\367\331"}, + {0xA3EC, "\002\003\367\321"}, + {0xA3ED, "\002\003\367\323"}, + {0xA3EE, "\002\003\357\211"}, + {0xA3EF, "\002\003\367\320"}, + {0xA3F0, "\002\003\367\341"}, + {0xA3F1, "\002\003\367\342"}, + {0xA3F2, "\002\003\367\324"}, + {0xA3F3, "\002\003\367\334"}, + {0xA3F4, "\002\003\367\337"}, + {0xA3F5, "\002\003\367\336"}, + {0xA3F6, "\002\003\367\350"}, + {0xA3F7, "\002\003\367\351"}, + {0xA3F8, "\002\003\367\344"}, + {0xA3F9, "\002\003\367\345"}, + {0xA3FA, "\002\003\367\347"}, + {0xA3FB, "\002\003\367\346"}, + {0xA3FC, "\002\003\373\356"}, + {0xA3FD, "\002\003\373\357"}, + {0xA3FE, "\002\003\357\301"}, + {0xA3FF, "\002\003\373\355"}, + {0xA400, "\002\003\373\353"}, + {0xA401, "\002\003\373\354"}, + {0xA402, "\002\003\373\351"}, + {0xA403, "\002\003\373\352"}, + {0xA404, "\002\003\374\001"}, + {0xA405, "\002\003\374\002"}, + {0xA406, "\002\003\373\376"}, + {0xA407, "\002\003\373\377"}, + {0xA408, "\002\003\361\241"}, + {0xA409, "\002\003\373\365"}, + {0xA40A, "\002\003\357\302"}, + {0xA40B, "\002\003\373\361"}, + {0xA40C, "\002\003\374\006"}, + {0xA40D, "\002\003\374\007"}, + {0xA40E, "\002\003\373\367"}, + {0xA40F, "\002\003\374\003"}, + {0xA410, "\002\003\374\005"}, + {0xA411, "\002\003\374\004"}, + {0xA412, "\002\003\374\021"}, + {0xA413, "\002\003\374\022"}, + {0xA414, "\002\003\374\015"}, + {0xA415, "\002\003\374\016"}, + {0xA416, "\002\003\374\020"}, + {0xA417, "\002\003\374\017"}, + {0xA418, "\002\003\367\277"}, + {0xA419, "\002\003\367\300"}, + {0xA41A, "\002\003\367\271"}, + {0xA41B, "\002\003\367\276"}, + {0xA41C, "\002\003\367\274"}, + {0xA41D, "\002\003\367\275"}, + {0xA41E, "\002\003\367\272"}, + {0xA41F, "\002\003\367\273"}, + {0xA420, "\002\003\367\310"}, + {0xA421, "\002\003\367\306"}, + {0xA422, "\002\003\367\307"}, + {0xA423, "\002\003\367\303"}, + {0xA424, "\002\003\367\304"}, + {0xA425, "\002\003\367\301"}, + {0xA426, "\002\003\367\302"}, + {0xA427, "\002\003\360\361"}, + {0xA428, "\002\003\367\314"}, + {0xA429, "\002\003\367\305"}, + {0xA42A, "\002\003\367\311"}, + {0xA42B, "\002\003\367\313"}, + {0xA42C, "\002\003\367\312"}, + {0xA42D, "\002\003\367\316"}, + {0xA42E, "\002\003\367\317"}, + {0xA42F, "\002\003\360\362"}, + {0xA430, "\002\003\367\315"}, + {0xA431, "\002\003\371\257"}, + {0xA432, "\002\003\371\260"}, + {0xA433, "\002\003\371\251"}, + {0xA434, "\002\003\371\256"}, + {0xA435, "\002\003\371\254"}, + {0xA436, "\002\003\371\255"}, + {0xA437, "\002\003\371\252"}, + {0xA438, "\002\003\371\253"}, + {0xA439, "\002\003\371\267"}, + {0xA43A, "\002\003\371\266"}, + {0xA43B, "\002\003\371\263"}, + {0xA43C, "\002\003\371\264"}, + {0xA43D, "\002\003\371\261"}, + {0xA43E, "\002\003\371\262"}, + {0xA43F, "\002\003\371\273"}, + {0xA440, "\002\003\371\265"}, + {0xA441, "\002\003\371\270"}, + {0xA442, "\002\003\371\272"}, + {0xA443, "\002\003\371\271"}, + {0xA444, "\002\003\371\300"}, + {0xA445, "\002\003\371\301"}, + {0xA446, "\002\003\371\274"}, + {0xA447, "\002\003\371\275"}, + {0xA448, "\002\003\371\277"}, + {0xA449, "\002\003\371\276"}, + {0xA44A, "\002\003\372\010"}, + {0xA44B, "\002\003\372\011"}, + {0xA44C, "\002\003\372\003"}, + {0xA44D, "\002\003\361\126"}, + {0xA44E, "\002\003\372\006"}, + {0xA44F, "\002\003\372\007"}, + {0xA450, "\002\003\372\004"}, + {0xA451, "\002\003\372\005"}, + {0xA452, "\002\003\372\020"}, + {0xA453, "\002\003\372\016"}, + {0xA454, "\002\003\372\017"}, + {0xA455, "\002\003\372\013"}, + {0xA456, "\002\003\372\014"}, + {0xA457, "\002\003\372\012"}, + {0xA458, "\002\003\361\127"}, + {0xA459, "\002\003\372\022"}, + {0xA45A, "\002\003\372\023"}, + {0xA45B, "\002\003\372\015"}, + {0xA45C, "\002\003\372\021"}, + {0xA45D, "\002\003\376\123"}, + {0xA45E, "\002\003\376\124"}, + {0xA45F, "\002\003\357\055"}, + {0xA460, "\002\003\376\122"}, + {0xA461, "\002\003\376\120"}, + {0xA462, "\002\003\376\121"}, + {0xA463, "\002\003\376\116"}, + {0xA464, "\002\003\376\117"}, + {0xA465, "\002\003\376\132"}, + {0xA466, "\002\003\376\131"}, + {0xA467, "\002\003\376\126"}, + {0xA468, "\002\003\376\130"}, + {0xA469, "\002\003\362\106"}, + {0xA46A, "\002\003\376\125"}, + {0xA46B, "\002\003\376\144"}, + {0xA46C, "\002\003\376\145"}, + {0xA46D, "\002\003\376\140"}, + {0xA46E, "\002\003\376\141"}, + {0xA46F, "\002\003\376\143"}, + {0xA470, "\002\003\376\142"}, + {0xA471, "\002\003\362\115"}, + {0xA472, "\002\003\376\166"}, + {0xA473, "\002\003\003"}, + {0xA474, "\002\003\376\165"}, + {0xA475, "\002\003\376\162"}, + {0xA476, "\002\003\376\163"}, + {0xA477, "\002\003\376\160"}, + {0xA478, "\002\003\376\161"}, + {0xA479, "\002\003\376\207"}, + {0xA47A, "\002\003\376\210"}, + {0xA47B, "\002\003\376\205"}, + {0xA47C, "\002\003\376\206"}, + {0xA47D, "\002\003\362\117"}, + {0xA47E, "\002\003\376\177"}, + {0xA47F, "\002\003\355\040"}, + {0xA480, "\002\003\376\172"}, + {0xA481, "\002\003\376\214"}, + {0xA482, "\002\003\376\215"}, + {0xA483, "\002\003\355\364"}, + {0xA484, "\002\003\376\211"}, + {0xA485, "\002\003\376\213"}, + {0xA486, "\002\003\376\212"}, + {0xA487, "\002\003\376\222"}, + {0xA488, "\002\003\376\223"}, + {0xA489, "\002\003\376\216"}, + {0xA48A, "\002\003\376\217"}, + {0xA48B, "\002\003\376\221"}, + {0xA48C, "\002\003\376\220"}, + {0xA490, "\017\003\361\241"}, + {0xA491, "\017\003\356\077"}, + {0xA492, "\017\003\360\377"}, + {0xA493, "\017\003\361\126"}, + {0xA494, "\017\003\360\147"}, + {0xA495, "\017\003\361\337"}, + {0xA496, "\017\003\360\271"}, + {0xA497, "\017\003\360\263"}, + {0xA498, "\017\003\355\230"}, + {0xA499, "\017\003\360\334"}, + {0xA49A, "\017\003\361\045"}, + {0xA49B, "\017\003\360\070"}, + {0xA49C, "\017\003\361\062"}, + {0xA49D, "\017\003\355\040"}, + {0xA49E, "\017\003\361\230"}, + {0xA49F, "\017\003\360\337"}, + {0xA4A0, "\017\003\360\336"}, + {0xA4A1, "\017\003\355\017"}, + {0xA4A2, "\017\003\362\147"}, + {0xA4A3, "\017\003\360\150"}, + {0xA4A4, "\017\003\360\166"}, + {0xA4A5, "\017\003\360\101"}, + {0xA4A6, "\017\003\360\272"}, + {0xA4A7, "\017\003\361\127"}, + {0xA4A8, "\017\003\355\300"}, + {0xA4A9, "\017\003\361\140"}, + {0xA4AA, "\017\003\360\361"}, + {0xA4AB, "\017\003\362\143"}, + {0xA4AC, "\017\003\361\231"}, + {0xA4AD, "\017\003\360\323"}, + {0xA4AE, "\017\003\362\115"}, + {0xA4AF, "\017\003\362\077"}, + {0xA4B0, "\017\003\361\315"}, + {0xA4B1, "\017\003\362\062"}, + {0xA4B2, "\017\003\355\101"}, + {0xA4B3, "\017\003\357\211"}, + {0xA4B4, "\017\003\361\130"}, + {0xA4B5, "\017\003\360\362"}, + {0xA4B6, "\017\003\360\277"}, + {0xA4B7, "\017\003\356\142"}, + {0xA4B8, "\017\003\355\150"}, + {0xA4B9, "\017\003\212"}, + {0xA4BA, "\017\003\361\314"}, + {0xA4BB, "\017\003\361\027"}, + {0xA4BC, "\017\003\360\146"}, + {0xA4BD, "\017\003\360\145"}, + {0xA4BE, "\017\003\360\131"}, + {0xA4BF, "\017\003\360\335"}, + {0xA4C0, "\017\003\361\312"}, + {0xA4C1, "\017\003\362\145"}, + {0xA4C2, "\017\003\361\313"}, + {0xA4C3, "\017\003\356\151"}, + {0xA4C4, "\017\003\362\146"}, + {0xA4C5, "\017\003\361\107"}, + {0xA4C6, "\017\003\355\331"}, + {0xF900, "\016\007\025\363\357"}, + {0xF901, "\016\007\025\363\360"}, + {0xF902, "\016\007\025\363\361"}, + {0xF903, "\016\007\025\363\362"}, + {0xF904, "\016\007\025\363\363"}, + {0xF905, "\016\007\025\363\364"}, + {0xF906, "\016\007\025\363\365"}, + {0xF907, "\016\007\025\363\366"}, + {0xF908, "\016\007\025\363\367"}, + {0xF909, "\016\007\025\363\370"}, + {0xF90A, "\016\007\025\363\371"}, + {0xF90B, "\016\007\025\363\372"}, + {0xF90C, "\016\007\025\363\373"}, + {0xF90D, "\016\007\025\363\374"}, + {0xF90E, "\016\007\025\363\375"}, + {0xF90F, "\016\007\025\363\376"}, + {0xF910, "\016\007\025\363\377"}, + {0xF911, "\016\007\025\364\001"}, + {0xF912, "\016\007\025\364\002"}, + {0xF913, "\016\007\025\364\003"}, + {0xF914, "\016\007\025\364\004"}, + {0xF915, "\016\007\025\364\005"}, + {0xF916, "\016\007\025\364\006"}, + {0xF917, "\016\007\025\364\007"}, + {0xF918, "\016\007\025\364\010"}, + {0xF919, "\016\007\025\364\011"}, + {0xF91A, "\016\007\025\364\012"}, + {0xF91B, "\016\007\025\364\013"}, + {0xF91C, "\016\007\025\364\014"}, + {0xF91D, "\016\007\025\364\015"}, + {0xF91E, "\016\007\025\364\016"}, + {0xF91F, "\016\007\025\364\017"}, + {0xF920, "\016\007\025\364\020"}, + {0xF921, "\016\007\025\364\021"}, + {0xF922, "\016\007\025\364\022"}, + {0xF923, "\016\007\025\364\023"}, + {0xF924, "\016\007\025\364\024"}, + {0xF925, "\016\007\025\364\025"}, + {0xF926, "\016\007\025\364\026"}, + {0xF927, "\016\007\025\364\027"}, + {0xF928, "\016\007\025\364\030"}, + {0xF929, "\016\007\025\364\031"}, + {0xF92A, "\016\007\025\364\032"}, + {0xF92B, "\016\007\025\364\033"}, + {0xF92C, "\016\007\025\364\034"}, + {0xF92D, "\016\007\025\364\035"}, + {0xF92E, "\016\007\025\364\036"}, + {0xF92F, "\016\007\025\364\037"}, + {0xF930, "\016\007\025\364\040"}, + {0xF931, "\016\007\025\364\041"}, + {0xF932, "\016\007\025\364\042"}, + {0xF933, "\016\007\025\364\043"}, + {0xF934, "\016\007\025\364\044"}, + {0xF935, "\016\007\025\364\045"}, + {0xF936, "\016\007\025\364\046"}, + {0xF937, "\016\007\025\364\047"}, + {0xF938, "\016\007\025\364\050"}, + {0xF939, "\016\007\025\364\051"}, + {0xF93A, "\016\007\025\364\052"}, + {0xF93B, "\016\007\025\364\053"}, + {0xF93C, "\016\007\025\364\054"}, + {0xF93D, "\016\007\025\364\055"}, + {0xF93E, "\016\007\025\364\056"}, + {0xF93F, "\016\007\025\364\057"}, + {0xF940, "\016\007\025\364\060"}, + {0xF941, "\016\007\025\364\061"}, + {0xF942, "\016\007\025\364\062"}, + {0xF943, "\016\007\025\364\063"}, + {0xF944, "\016\007\025\364\064"}, + {0xF945, "\016\007\025\364\065"}, + {0xF946, "\016\007\025\364\066"}, + {0xF947, "\016\007\025\364\067"}, + {0xF948, "\016\007\025\364\070"}, + {0xF949, "\016\007\025\364\071"}, + {0xF94A, "\016\007\025\364\072"}, + {0xF94B, "\016\007\025\364\073"}, + {0xF94C, "\016\007\025\364\074"}, + {0xF94D, "\016\007\025\364\075"}, + {0xF94E, "\016\007\025\364\076"}, + {0xF94F, "\016\007\025\364\077"}, + {0xF950, "\016\007\025\364\100"}, + {0xF951, "\016\007\025\364\101"}, + {0xF952, "\016\007\025\364\102"}, + {0xF953, "\016\007\025\364\103"}, + {0xF954, "\016\007\025\364\104"}, + {0xF955, "\016\007\025\364\105"}, + {0xF956, "\016\007\025\364\106"}, + {0xF957, "\016\007\025\364\107"}, + {0xF958, "\016\007\025\364\110"}, + {0xF959, "\016\007\025\364\111"}, + {0xF95A, "\016\007\025\364\112"}, + {0xF95B, "\016\007\025\364\113"}, + {0xF95C, "\016\007\025\364\114"}, + {0xF95D, "\016\007\025\364\115"}, + {0xF95E, "\016\007\025\364\116"}, + {0xF95F, "\016\007\025\364\117"}, + {0xF960, "\016\007\025\364\120"}, + {0xF961, "\016\007\025\364\121"}, + {0xF962, "\016\007\025\364\122"}, + {0xF963, "\016\007\025\364\123"}, + {0xF964, "\016\007\025\364\124"}, + {0xF965, "\016\007\025\364\125"}, + {0xF966, "\016\007\025\364\126"}, + {0xF967, "\016\007\025\364\127"}, + {0xF968, "\016\007\025\364\130"}, + {0xF969, "\016\007\025\364\131"}, + {0xF96A, "\016\007\025\364\132"}, + {0xF96B, "\016\007\025\364\133"}, + {0xF96C, "\016\007\025\364\134"}, + {0xF96D, "\016\007\025\364\135"}, + {0xF96E, "\016\007\025\364\136"}, + {0xF96F, "\016\007\025\364\137"}, + {0xF970, "\016\007\025\364\140"}, + {0xF971, "\016\007\025\364\141"}, + {0xF972, "\016\007\025\364\142"}, + {0xF973, "\016\007\025\364\143"}, + {0xF974, "\016\007\025\364\144"}, + {0xF975, "\016\007\025\364\145"}, + {0xF976, "\016\007\025\364\146"}, + {0xF977, "\016\007\025\364\147"}, + {0xF978, "\016\007\025\364\150"}, + {0xF979, "\016\007\025\364\151"}, + {0xF97A, "\016\007\025\364\152"}, + {0xF97B, "\016\007\025\364\153"}, + {0xF97C, "\016\007\025\364\154"}, + {0xF97D, "\016\007\025\364\155"}, + {0xF97E, "\016\007\025\364\156"}, + {0xF97F, "\016\007\025\364\157"}, + {0xF980, "\016\007\025\364\160"}, + {0xF981, "\016\007\025\364\161"}, + {0xF982, "\016\007\025\364\162"}, + {0xF983, "\016\007\025\364\163"}, + {0xF984, "\016\007\025\364\164"}, + {0xF985, "\016\007\025\364\165"}, + {0xF986, "\016\007\025\364\166"}, + {0xF987, "\016\007\025\364\167"}, + {0xF988, "\016\007\025\364\170"}, + {0xF989, "\016\007\025\364\171"}, + {0xF98A, "\016\007\025\364\172"}, + {0xF98B, "\016\007\025\364\173"}, + {0xF98C, "\016\007\025\364\174"}, + {0xF98D, "\016\007\025\364\175"}, + {0xF98E, "\016\007\025\364\176"}, + {0xF98F, "\016\007\025\364\177"}, + {0xF990, "\016\007\025\364\200"}, + {0xF991, "\016\007\025\364\201"}, + {0xF992, "\016\007\025\364\202"}, + {0xF993, "\016\007\025\364\203"}, + {0xF994, "\016\007\025\364\204"}, + {0xF995, "\016\007\025\364\205"}, + {0xF996, "\016\007\025\364\206"}, + {0xF997, "\016\007\025\364\207"}, + {0xF998, "\016\007\025\364\210"}, + {0xF999, "\016\007\025\364\211"}, + {0xF99A, "\016\007\025\364\212"}, + {0xF99B, "\016\007\025\364\213"}, + {0xF99C, "\016\007\025\364\214"}, + {0xF99D, "\016\007\025\364\215"}, + {0xF99E, "\016\007\025\364\216"}, + {0xF99F, "\016\007\025\364\217"}, + {0xF9A0, "\016\007\025\364\220"}, + {0xF9A1, "\016\007\025\364\221"}, + {0xF9A2, "\016\007\025\364\222"}, + {0xF9A3, "\016\007\025\364\223"}, + {0xF9A4, "\016\007\025\364\224"}, + {0xF9A5, "\016\007\025\364\225"}, + {0xF9A6, "\016\007\025\364\226"}, + {0xF9A7, "\016\007\025\364\227"}, + {0xF9A8, "\016\007\025\364\230"}, + {0xF9A9, "\016\007\025\364\231"}, + {0xF9AA, "\016\007\025\364\232"}, + {0xF9AB, "\016\007\025\364\233"}, + {0xF9AC, "\016\007\025\364\234"}, + {0xF9AD, "\016\007\025\364\235"}, + {0xF9AE, "\016\007\025\364\236"}, + {0xF9AF, "\016\007\025\364\237"}, + {0xF9B0, "\016\007\025\364\240"}, + {0xF9B1, "\016\007\025\364\241"}, + {0xF9B2, "\016\007\025\364\242"}, + {0xF9B3, "\016\007\025\364\243"}, + {0xF9B4, "\016\007\025\364\244"}, + {0xF9B5, "\016\007\025\364\245"}, + {0xF9B6, "\016\007\025\364\246"}, + {0xF9B7, "\016\007\025\364\247"}, + {0xF9B8, "\016\007\025\364\250"}, + {0xF9B9, "\016\007\025\364\251"}, + {0xF9BA, "\016\007\025\364\252"}, + {0xF9BB, "\016\007\025\364\253"}, + {0xF9BC, "\016\007\025\364\254"}, + {0xF9BD, "\016\007\025\364\255"}, + {0xF9BE, "\016\007\025\364\256"}, + {0xF9BF, "\016\007\025\364\257"}, + {0xF9C0, "\016\007\025\364\260"}, + {0xF9C1, "\016\007\025\364\261"}, + {0xF9C2, "\016\007\025\364\262"}, + {0xF9C3, "\016\007\025\364\263"}, + {0xF9C4, "\016\007\025\364\264"}, + {0xF9C5, "\016\007\025\364\265"}, + {0xF9C6, "\016\007\025\364\266"}, + {0xF9C7, "\016\007\025\364\267"}, + {0xF9C8, "\016\007\025\364\270"}, + {0xF9C9, "\016\007\025\364\271"}, + {0xF9CA, "\016\007\025\364\272"}, + {0xF9CB, "\016\007\025\364\273"}, + {0xF9CC, "\016\007\025\364\274"}, + {0xF9CD, "\016\007\025\364\275"}, + {0xF9CE, "\016\007\025\364\276"}, + {0xF9CF, "\016\007\025\364\277"}, + {0xF9D0, "\016\007\025\364\300"}, + {0xF9D1, "\016\007\025\364\301"}, + {0xF9D2, "\016\007\025\364\302"}, + {0xF9D3, "\016\007\025\364\303"}, + {0xF9D4, "\016\007\025\364\304"}, + {0xF9D5, "\016\007\025\364\305"}, + {0xF9D6, "\016\007\025\364\306"}, + {0xF9D7, "\016\007\025\364\307"}, + {0xF9D8, "\016\007\025\364\310"}, + {0xF9D9, "\016\007\025\364\311"}, + {0xF9DA, "\016\007\025\364\312"}, + {0xF9DB, "\016\007\025\364\313"}, + {0xF9DC, "\016\007\025\364\314"}, + {0xF9DD, "\016\007\025\364\315"}, + {0xF9DE, "\016\007\025\364\316"}, + {0xF9DF, "\016\007\025\364\317"}, + {0xF9E0, "\016\007\025\364\320"}, + {0xF9E1, "\016\007\025\364\321"}, + {0xF9E2, "\016\007\025\364\322"}, + {0xF9E3, "\016\007\025\364\323"}, + {0xF9E4, "\016\007\025\364\324"}, + {0xF9E5, "\016\007\025\364\325"}, + {0xF9E6, "\016\007\025\364\326"}, + {0xF9E7, "\016\007\025\364\327"}, + {0xF9E8, "\016\007\025\364\330"}, + {0xF9E9, "\016\007\025\364\331"}, + {0xF9EA, "\016\007\025\364\332"}, + {0xF9EB, "\016\007\025\364\333"}, + {0xF9EC, "\016\007\025\364\334"}, + {0xF9ED, "\016\007\025\364\335"}, + {0xF9EE, "\016\007\025\364\336"}, + {0xF9EF, "\016\007\025\364\337"}, + {0xF9F0, "\016\007\025\364\340"}, + {0xF9F1, "\016\007\025\364\341"}, + {0xF9F2, "\016\007\025\364\342"}, + {0xF9F3, "\016\007\025\364\343"}, + {0xF9F4, "\016\007\025\364\344"}, + {0xF9F5, "\016\007\025\364\345"}, + {0xF9F6, "\016\007\025\364\346"}, + {0xF9F7, "\016\007\025\364\347"}, + {0xF9F8, "\016\007\025\364\350"}, + {0xF9F9, "\016\007\025\364\351"}, + {0xF9FA, "\016\007\025\364\352"}, + {0xF9FB, "\016\007\025\364\353"}, + {0xF9FC, "\016\007\025\364\354"}, + {0xF9FD, "\016\007\025\364\355"}, + {0xF9FE, "\016\007\025\364\356"}, + {0xF9FF, "\016\007\025\364\357"}, + {0xFA00, "\016\007\025\364\360"}, + {0xFA01, "\016\007\025\364\361"}, + {0xFA02, "\016\007\025\364\362"}, + {0xFA03, "\016\007\025\364\363"}, + {0xFA04, "\016\007\025\364\364"}, + {0xFA05, "\016\007\025\364\365"}, + {0xFA06, "\016\007\025\364\366"}, + {0xFA07, "\016\007\025\364\367"}, + {0xFA08, "\016\007\025\364\370"}, + {0xFA09, "\016\007\025\364\371"}, + {0xFA0A, "\016\007\025\364\372"}, + {0xFA0B, "\016\007\025\364\373"}, + {0xFA0C, "\016\007\025\364\374"}, + {0xFA0D, "\016\007\025\364\375"}, + {0xFA0E, "\016\007\025\364\376"}, + {0xFA0F, "\016\007\025\364\377"}, + {0xFA10, "\016\007\025\365\001"}, + {0xFA11, "\016\007\025\365\002"}, + {0xFA12, "\016\007\025\365\003"}, + {0xFA13, "\016\007\025\365\004"}, + {0xFA14, "\016\007\025\365\005"}, + {0xFA15, "\016\007\025\365\006"}, + {0xFA16, "\016\007\025\365\007"}, + {0xFA17, "\016\007\025\365\010"}, + {0xFA18, "\016\007\025\365\011"}, + {0xFA19, "\016\007\025\365\012"}, + {0xFA1A, "\016\007\025\365\013"}, + {0xFA1B, "\016\007\025\365\014"}, + {0xFA1C, "\016\007\025\365\015"}, + {0xFA1D, "\016\007\025\365\016"}, + {0xFA1E, "\016\007\025\365\017"}, + {0xFA1F, "\016\007\025\365\020"}, + {0xFA20, "\016\007\025\365\021"}, + {0xFA21, "\016\007\025\365\022"}, + {0xFA22, "\016\007\025\365\023"}, + {0xFA23, "\016\007\025\365\024"}, + {0xFA24, "\016\007\025\365\025"}, + {0xFA25, "\016\007\025\365\026"}, + {0xFA26, "\016\007\025\365\027"}, + {0xFA27, "\016\007\025\365\030"}, + {0xFA28, "\016\007\025\365\031"}, + {0xFA29, "\016\007\025\365\032"}, + {0xFA2A, "\016\007\025\365\033"}, + {0xFA2B, "\016\007\025\365\034"}, + {0xFA2C, "\016\007\025\365\035"}, + {0xFA2D, "\016\007\025\365\036"}, + {0xFB00, "\012\005\006\366\061"}, + {0xFB01, "\012\005\006\356\200"}, + {0xFB02, "\012\005\006\366\072"}, + {0xFB03, "\012\005\006\366\062"}, + {0xFB04, "\012\005\006\366\063"}, + {0xFB05, "\012\005\006\223\355\264\261"}, + {0xFB06, "\012\005\006\375\026"}, + {0xFB13, "\012\005\125\356\102\355\340"}, + {0xFB14, "\012\005\125\356\102\357\057"}, + {0xFB15, "\012\005\125\356\102\357\177"}, + {0xFB16, "\012\005\125\360\005\355\340"}, + {0xFB17, "\012\005\125\356\102\356\342"}, + {0xFB1D, "\001\137\356\272\360\322"}, + {0xFB1E, "\037\222\367\325\376\011"}, + {0xFB1F, "\012\137\357\056\356\272\356\272\356\374"}, + {0xFB20, "\001\137\360\047\360\062"}, + {0xFB21, "\001\137\355\262\355\372"}, + {0xFB22, "\001\137\355\262\356\317"}, + {0xFB23, "\001\137\355\262\357\170"}, + {0xFB24, "\001\137\355\262\254"}, + {0xFB25, "\001\137\355\262\356\347"}, + {0xFB26, "\001\137\355\262\356\357\032"}, + {0xFB27, "\001\137\355\262\357\321"}, + {0xFB28, "\001\137\355\262\357\347"}, + {0xFB29, "\001\137\057\214\376\010"}, + {0xFB2A, "\001\137\355\310\037\355\310"}, + {0xFB2B, "\001\137\355\310\037\361\317"}, + {0xFB2C, "\001\137\355\310\365\170\020\037\355\310"}, + {0xFB2D, "\001\137\355\310\355\011\020\037\361\317"}, + {0xFB2E, "\001\137\355\372\356\374"}, + {0xFB2F, "\001\137\355\372\357\300"}, + {0xFB30, "\001\137\355\372\357\232"}, + {0xFB31, "\001\137\363\114\355\011"}, + {0xFB32, "\001\137\360\303\355\011"}, + {0xFB33, "\001\137\356\317\355\011"}, + {0xFB34, "\001\137\357\170\357\232"}, + {0xFB35, "\001\137\355\051\355\011"}, + {0xFB36, "\001\137\360\020\355\011"}, + {0xFB38, "\001\137\362\056\355\011"}, + {0xFB39, "\001\137\356\272\355\011"}, + {0xFB3A, "\001\137\254\355\011\032"}, + {0xFB3B, "\001\137\254\355\011"}, + {0xFB3C, "\001\137\356\347\355\011"}, + {0xFB3E, "\001\137\356\357\355\011"}, + {0xFB40, "\001\137\357\251\355\011"}, + {0xFB41, "\001\137\361\301\355\011"}, + {0xFB43, "\001\137\355\172\355\011\032"}, + {0xFB44, "\001\137\355\172\355\011"}, + {0xFB46, "\001\137\357\366\355\011"}, + {0xFB47, "\001\137\373\360\355\011"}, + {0xFB48, "\001\137\357\321\355\011"}, + {0xFB49, "\001\137\355\310\355\011"}, + {0xFB4A, "\001\137\357\347\355\011"}, + {0xFB4B, "\001\137\355\051\360\325"}, + {0xFB4C, "\001\137\357\072\357\021"}, + {0xFB4D, "\001\137\254\357\021"}, + {0xFB4E, "\001\137\355\172\357\021"}, + {0xFB4F, "\012\137\355\372\356\347"}, + {0xFB50, "\001\004\100\360\006\036"}, + {0xFB51, "\001\004\100\360\006\032"}, + {0xFB52, "\001\004\356\143\036"}, + {0xFB53, "\001\004\356\143\032"}, + {0xFB54, "\001\004\356\143\055"}, + {0xFB55, "\001\004\356\143\131"}, + {0xFB56, "\001\004\356\237\036"}, + {0xFB57, "\001\004\356\237\032"}, + {0xFB58, "\001\004\356\237\055"}, + {0xFB59, "\001\004\356\237\131"}, + {0xFB5A, "\001\004\356\144\036"}, + {0xFB5B, "\001\004\356\144\032"}, + {0xFB5C, "\001\004\356\144\055"}, + {0xFB5D, "\001\004\356\144\131"}, + {0xFB5E, "\001\004\356\262\036"}, + {0xFB5F, "\001\004\356\262\032"}, + {0xFB60, "\001\004\356\262\055"}, + {0xFB61, "\001\004\356\262\131"}, + {0xFB62, "\001\004\356\256\036"}, + {0xFB63, "\001\004\356\256\032"}, + {0xFB64, "\001\004\356\256\055"}, + {0xFB65, "\001\004\356\256\131"}, + {0xFB66, "\001\004\356\261\036"}, + {0xFB67, "\001\004\356\261\032"}, + {0xFB68, "\001\004\356\261\055"}, + {0xFB69, "\001\004\356\261\131"}, + {0xFB6A, "\001\004\356\264\036"}, + {0xFB6B, "\001\004\356\264\032"}, + {0xFB6C, "\001\004\356\264\055"}, + {0xFB6D, "\001\004\356\264\131"}, + {0xFB6E, "\001\004\356\240\036"}, + {0xFB6F, "\001\004\356\240\032"}, + {0xFB70, "\001\004\356\240\055"}, + {0xFB71, "\001\004\356\240\131"}, + {0xFB72, "\001\004\356\164\036"}, + {0xFB73, "\001\004\356\164\032"}, + {0xFB74, "\001\004\356\164\055"}, + {0xFB75, "\001\004\356\164\131"}, + {0xFB76, "\001\004\356\230\036"}, + {0xFB77, "\001\004\356\230\032"}, + {0xFB78, "\001\004\356\230\055"}, + {0xFB79, "\001\004\356\230\131"}, + {0xFB7A, "\001\004\356\124\036"}, + {0xFB7B, "\001\004\356\124\032"}, + {0xFB7C, "\001\004\356\124\055"}, + {0xFB7D, "\001\004\356\124\131"}, + {0xFB7E, "\001\004\356\255\036"}, + {0xFB7F, "\001\004\356\255\032"}, + {0xFB80, "\001\004\356\255\055"}, + {0xFB81, "\001\004\356\255\131"}, + {0xFB82, "\001\004\357\125\036"}, + {0xFB83, "\001\004\357\125\032"}, + {0xFB84, "\001\004\357\121\036"}, + {0xFB85, "\001\004\357\121\032"}, + {0xFB86, "\001\004\357\144\036"}, + {0xFB87, "\001\004\357\144\032"}, + {0xFB88, "\001\004\357\126\036"}, + {0xFB89, "\001\004\357\126\032"}, + {0xFB8A, "\001\004\357\207\036"}, + {0xFB8B, "\001\004\357\207\032"}, + {0xFB8C, "\001\004\357\317\036"}, + {0xFB8D, "\001\004\357\317\032"}, + {0xFB8E, "\001\004\356\216\036"}, + {0xFB8F, "\001\004\356\216\032"}, + {0xFB90, "\001\004\356\216\055"}, + {0xFB91, "\001\004\356\216\131"}, + {0xFB92, "\001\004\355\322\036"}, + {0xFB93, "\001\004\355\322\032"}, + {0xFB94, "\001\004\355\322\055"}, + {0xFB95, "\001\004\355\322\131"}, + {0xFB96, "\001\004\356\331\036"}, + {0xFB97, "\001\004\356\331\032"}, + {0xFB98, "\001\004\356\331\055"}, + {0xFB99, "\001\004\356\331\131"}, + {0xFB9A, "\001\004\356\226\036"}, + {0xFB9B, "\001\004\356\226\032"}, + {0xFB9C, "\001\004\356\226\055"}, + {0xFB9D, "\001\004\356\226\131"}, + {0xFB9E, "\001\004\215\360\276\036"}, + {0xFB9F, "\001\004\215\360\276\032"}, + {0xFBA0, "\001\004\357\024\036"}, + {0xFBA1, "\001\004\357\024\032"}, + {0xFBA2, "\001\004\357\024\055"}, + {0xFBA3, "\001\004\357\024\131"}, + {0xFBA4, "\001\004\231\056\013\040\036"}, + {0xFBA5, "\001\004\231\056\013\040\032"}, + {0xFBA6, "\001\004\231\356\015\036"}, + {0xFBA7, "\001\004\231\356\015\032"}, + {0xFBA8, "\001\004\231\356\015\055"}, + {0xFBA9, "\001\004\231\356\015\131"}, + {0xFBAA, "\001\004\231\356\163\036"}, + {0xFBAB, "\001\004\231\356\163\032"}, + {0xFBAC, "\001\004\231\356\163\055"}, + {0xFBAD, "\001\004\231\356\163\131"}, + {0xFBAE, "\001\004\056\356\303\036"}, + {0xFBAF, "\001\004\056\356\303\032"}, + {0xFBB0, "\001\004\056\356\303\156\013\040\036"}, + {0xFBB1, "\001\004\056\356\303\156\013\040\032"}, + {0xFBD3, "\001\004\355\336\036"}, + {0xFBD4, "\001\004\355\336\032"}, + {0xFBD5, "\001\004\355\336\055"}, + {0xFBD6, "\001\004\355\336\131"}, + {0xFBD7, "\001\004\113\036"}, + {0xFBD8, "\001\004\113\032"}, + {0xFBD9, "\001\004\355\210\036"}, + {0xFBDA, "\001\004\355\210\032"}, + {0xFBDB, "\001\004\355\151\036"}, + {0xFBDC, "\001\004\355\151\032"}, + {0xFBDD, "\001\004\113\156\013\040\036"}, + {0xFBDE, "\001\004\357\053\036"}, + {0xFBDF, "\001\004\357\053\032"}, + {0xFBE0, "\001\004\355\205\355\210\036"}, + {0xFBE1, "\001\004\355\205\355\210\032"}, + {0xFBE2, "\001\004\355\205\355\151\036"}, + {0xFBE3, "\001\004\355\205\355\151\032"}, + {0xFBE4, "\001\004\130\036"}, + {0xFBE5, "\001\004\130\032"}, + {0xFBE6, "\001\004\130\055"}, + {0xFBE7, "\001\004\130\131"}, + {0xFBE8, "\001\004\356\236\360\367\355\205\100\160\055"}, + {0xFBE9, "\001\004\356\236\360\367\355\205\100\160\131"}, + {0xFBEA, "\012\004\056\156\013\040\100\036"}, + {0xFBEB, "\012\004\056\156\013\040\100\032"}, + {0xFBEC, "\012\004\056\156\013\040\355\305\036"}, + {0xFBED, "\012\004\056\156\013\040\355\305\032"}, + {0xFBEE, "\012\004\056\156\013\040\355\051\036"}, + {0xFBEF, "\012\004\056\156\013\040\355\051\032"}, + {0xFBF0, "\012\004\056\156\013\040\132\036"}, + {0xFBF1, "\012\004\056\156\013\040\132\032"}, + {0xFBF2, "\012\004\056\156\013\040\355\210\036"}, + {0xFBF3, "\012\004\056\156\013\040\355\210\032"}, + {0xFBF4, "\012\004\056\156\013\040\355\151\036"}, + {0xFBF5, "\012\004\056\156\013\040\355\151\032"}, + {0xFBF6, "\012\004\056\156\013\040\130\036"}, + {0xFBF7, "\012\004\056\156\013\040\130\032"}, + {0xFBF8, "\012\004\056\156\013\040\130\055"}, + {0xFBF9, "\012\004\356\236\355\205\056\156\013\040\100\160\036"}, + {0xFBFA, "\012\004\356\236\355\205\056\156\013\040\100\160\032"}, + {0xFBFB, "\012\004\356\236\355\205\056\156\013\040\100\160\055"}, + {0xFBFC, "\001\004\356\067\056\036"}, + {0xFBFD, "\001\004\356\067\056\032"}, + {0xFBFE, "\001\004\356\067\056\055"}, + {0xFBFF, "\001\004\356\067\056\131"}, + {0xFC00, "\012\004\056\156\013\040\115\036"}, + {0xFC01, "\012\004\056\156\013\040\111\036"}, + {0xFC02, "\012\004\056\156\013\040\047\036"}, + {0xFC03, "\012\004\056\156\013\040\100\160\036"}, + {0xFC04, "\012\004\056\156\013\040\056\036"}, + {0xFC05, "\012\004\324\115\036"}, + {0xFC06, "\012\004\324\111\036"}, + {0xFC07, "\012\004\324\170\036"}, + {0xFC08, "\012\004\324\047\036"}, + {0xFC09, "\012\004\324\100\160\036"}, + {0xFC0A, "\012\004\324\056\036"}, + {0xFC0B, "\012\004\233\115\036"}, + {0xFC0C, "\012\004\233\111\036"}, + {0xFC0D, "\012\004\233\170\036"}, + {0xFC0E, "\012\004\233\047\036"}, + {0xFC0F, "\012\004\233\100\160\036"}, + {0xFC10, "\012\004\233\056\036"}, + {0xFC11, "\012\004\355\060\115\036"}, + {0xFC12, "\012\004\355\060\047\036"}, + {0xFC13, "\012\004\355\060\100\160\036"}, + {0xFC14, "\012\004\355\060\056\036"}, + {0xFC15, "\012\004\115\111\036"}, + {0xFC16, "\012\004\115\047\036"}, + {0xFC17, "\012\004\111\115\036"}, + {0xFC18, "\012\004\111\047\036"}, + {0xFC19, "\012\004\170\115\036"}, + {0xFC1A, "\012\004\170\111\036"}, + {0xFC1B, "\012\004\170\047\036"}, + {0xFC1C, "\012\004\245\115\036"}, + {0xFC1D, "\012\004\245\111\036"}, + {0xFC1E, "\012\004\245\170\036"}, + {0xFC1F, "\012\004\245\047\036"}, + {0xFC20, "\012\004\355\005\111\036"}, + {0xFC21, "\012\004\355\005\047\036"}, + {0xFC22, "\012\004\350\115\036"}, + {0xFC23, "\012\004\350\111\036"}, + {0xFC24, "\012\004\350\170\036"}, + {0xFC25, "\012\004\350\047\036"}, + {0xFC26, "\012\004\355\046\111\036"}, + {0xFC27, "\012\004\355\046\047\036"}, + {0xFC28, "\012\004\355\366\047\036"}, + {0xFC29, "\012\004\355\027\115\036"}, + {0xFC2A, "\012\004\355\027\047\036"}, + {0xFC2B, "\012\004\355\063\115\036"}, + {0xFC2C, "\012\004\355\063\047\036"}, + {0xFC2D, "\012\004\351\115\036"}, + {0xFC2E, "\012\004\351\111\036"}, + {0xFC2F, "\012\004\351\170\036"}, + {0xFC30, "\012\004\351\047\036"}, + {0xFC31, "\012\004\351\100\160\036"}, + {0xFC32, "\012\004\351\056\036"}, + {0xFC33, "\012\004\355\037\111\036"}, + {0xFC34, "\012\004\355\037\047\036"}, + {0xFC35, "\012\004\355\037\100\160\036"}, + {0xFC36, "\012\004\355\037\056\036"}, + {0xFC37, "\012\004\254\100\036"}, + {0xFC38, "\012\004\254\115\036"}, + {0xFC39, "\012\004\254\111\036"}, + {0xFC3A, "\012\004\254\170\036"}, + {0xFC3B, "\012\004\254\206\036"}, + {0xFC3C, "\012\004\254\047\036"}, + {0xFC3D, "\012\004\254\100\160\036"}, + {0xFC3E, "\012\004\254\056\036"}, + {0xFC3F, "\012\004\206\115\036"}, + {0xFC40, "\012\004\206\111\036"}, + {0xFC41, "\012\004\206\170\036"}, + {0xFC42, "\012\004\206\047\036"}, + {0xFC43, "\012\004\206\100\160\036"}, + {0xFC44, "\012\004\206\056\036"}, + {0xFC45, "\012\004\047\115\036"}, + {0xFC46, "\012\004\047\111\036"}, + {0xFC47, "\012\004\047\170\036"}, + {0xFC48, "\012\004\047\047\036"}, + {0xFC49, "\012\004\047\100\160\036"}, + {0xFC4A, "\012\004\047\056\036"}, + {0xFC4B, "\012\004\215\115\036"}, + {0xFC4C, "\012\004\215\111\036"}, + {0xFC4D, "\012\004\215\170\036"}, + {0xFC4E, "\012\004\215\047\036"}, + {0xFC4F, "\012\004\215\100\160\036"}, + {0xFC50, "\012\004\215\056\036"}, + {0xFC51, "\012\004\231\115\036"}, + {0xFC52, "\012\004\231\047\036"}, + {0xFC53, "\012\004\231\100\160\036"}, + {0xFC54, "\012\004\231\056\036"}, + {0xFC55, "\012\004\056\115\036"}, + {0xFC56, "\012\004\056\111\036"}, + {0xFC57, "\012\004\056\170\036"}, + {0xFC58, "\012\004\056\047\036"}, + {0xFC59, "\012\004\056\100\160\036"}, + {0xFC5A, "\012\004\056\056\036"}, + {0xFC5B, "\012\004\356\321\013\040\100\036"}, + {0xFC5C, "\012\004\343\013\040\100\036"}, + {0xFC5D, "\012\004\100\160\013\040\100\036"}, + {0xFC5E, "\012\004\355\154\357\122\036"}, + {0xFC5F, "\012\004\355\154\357\216\036"}, + {0xFC60, "\012\004\355\154\356\175\036"}, + {0xFC61, "\012\004\355\154\356\157\036"}, + {0xFC62, "\012\004\355\154\356\215\036"}, + {0xFC63, "\012\004\355\154\013\040\100\036"}, + {0xFC64, "\012\004\056\156\013\040\343\032"}, + {0xFC65, "\012\004\056\156\013\040\356\134\032"}, + {0xFC66, "\012\004\056\156\013\040\047\032"}, + {0xFC67, "\012\004\056\156\013\040\215\032"}, + {0xFC68, "\012\004\056\156\013\040\100\160\032"}, + {0xFC69, "\012\004\056\156\013\040\056\032"}, + {0xFC6A, "\012\004\324\343\032"}, + {0xFC6B, "\012\004\324\356\134\032"}, + {0xFC6C, "\012\004\324\047\032"}, + {0xFC6D, "\012\004\324\215\032"}, + {0xFC6E, "\012\004\324\100\160\032"}, + {0xFC6F, "\012\004\324\056\032"}, + {0xFC70, "\012\004\233\343\032"}, + {0xFC71, "\012\004\233\356\134\032"}, + {0xFC72, "\012\004\233\047\032"}, + {0xFC73, "\012\004\233\215\032"}, + {0xFC74, "\012\004\233\100\160\032"}, + {0xFC75, "\012\004\233\056\032"}, + {0xFC76, "\012\004\355\060\343\032"}, + {0xFC77, "\012\004\355\060\356\134\032"}, + {0xFC78, "\012\004\355\060\047\032"}, + {0xFC79, "\012\004\355\060\215\032"}, + {0xFC7A, "\012\004\355\060\100\160\032"}, + {0xFC7B, "\012\004\355\060\056\032"}, + {0xFC7C, "\012\004\351\100\160\032"}, + {0xFC7D, "\012\004\351\056\032"}, + {0xFC7E, "\012\004\355\037\100\160\032"}, + {0xFC7F, "\012\004\355\037\056\032"}, + {0xFC80, "\012\004\254\100\032"}, + {0xFC81, "\012\004\254\206\032"}, + {0xFC82, "\012\004\254\047\032"}, + {0xFC83, "\012\004\254\100\160\032"}, + {0xFC84, "\012\004\254\056\032"}, + {0xFC85, "\012\004\206\047\032"}, + {0xFC86, "\012\004\206\100\160\032"}, + {0xFC87, "\012\004\206\056\032"}, + {0xFC88, "\012\004\047\100\032"}, + {0xFC89, "\012\004\047\047\032"}, + {0xFC8A, "\012\004\215\343\032"}, + {0xFC8B, "\012\004\215\356\134\032"}, + {0xFC8C, "\012\004\215\047\032"}, + {0xFC8D, "\012\004\215\215\032"}, + {0xFC8E, "\012\004\215\100\160\032"}, + {0xFC8F, "\012\004\215\056\032"}, + {0xFC90, "\012\004\100\160\013\040\100\032"}, + {0xFC91, "\012\004\056\343\032"}, + {0xFC92, "\012\004\056\356\134\032"}, + {0xFC93, "\012\004\056\047\032"}, + {0xFC94, "\012\004\056\215\032"}, + {0xFC95, "\012\004\056\100\160\032"}, + {0xFC96, "\012\004\056\056\032"}, + {0xFC97, "\012\004\056\156\013\040\115\055"}, + {0xFC98, "\012\004\056\156\013\040\111\055"}, + {0xFC99, "\012\004\056\156\013\040\170\055"}, + {0xFC9A, "\012\004\056\156\013\040\047\055"}, + {0xFC9B, "\012\004\056\156\013\040\231\055"}, + {0xFC9C, "\012\004\324\115\055"}, + {0xFC9D, "\012\004\324\111\055"}, + {0xFC9E, "\012\004\324\170\055"}, + {0xFC9F, "\012\004\324\047\055"}, + {0xFCA0, "\012\004\324\231\055"}, + {0xFCA1, "\012\004\233\115\055"}, + {0xFCA2, "\012\004\233\111\055"}, + {0xFCA3, "\012\004\233\170\055"}, + {0xFCA4, "\012\004\233\047\055"}, + {0xFCA5, "\012\004\233\231\055"}, + {0xFCA6, "\012\004\355\060\047\055"}, + {0xFCA7, "\012\004\115\111\055"}, + {0xFCA8, "\012\004\115\047\055"}, + {0xFCA9, "\012\004\111\115\055"}, + {0xFCAA, "\012\004\111\047\055"}, + {0xFCAB, "\012\004\170\115\055"}, + {0xFCAC, "\012\004\170\047\055"}, + {0xFCAD, "\012\004\245\115\055"}, + {0xFCAE, "\012\004\245\111\055"}, + {0xFCAF, "\012\004\245\170\055"}, + {0xFCB0, "\012\004\245\047\055"}, + {0xFCB1, "\012\004\355\005\111\055"}, + {0xFCB2, "\012\004\355\005\170\055"}, + {0xFCB3, "\012\004\355\005\047\055"}, + {0xFCB4, "\012\004\350\115\055"}, + {0xFCB5, "\012\004\350\111\055"}, + {0xFCB6, "\012\004\350\170\055"}, + {0xFCB7, "\012\004\350\047\055"}, + {0xFCB8, "\012\004\355\046\111\055"}, + {0xFCB9, "\012\004\355\366\047\055"}, + {0xFCBA, "\012\004\355\027\115\055"}, + {0xFCBB, "\012\004\355\027\047\055"}, + {0xFCBC, "\012\004\355\063\115\055"}, + {0xFCBD, "\012\004\355\063\047\055"}, + {0xFCBE, "\012\004\351\115\055"}, + {0xFCBF, "\012\004\351\111\055"}, + {0xFCC0, "\012\004\351\170\055"}, + {0xFCC1, "\012\004\351\047\055"}, + {0xFCC2, "\012\004\355\037\111\055"}, + {0xFCC3, "\012\004\355\037\047\055"}, + {0xFCC4, "\012\004\254\115\055"}, + {0xFCC5, "\012\004\254\111\055"}, + {0xFCC6, "\012\004\254\170\055"}, + {0xFCC7, "\012\004\254\206\055"}, + {0xFCC8, "\012\004\254\047\055"}, + {0xFCC9, "\012\004\206\115\055"}, + {0xFCCA, "\012\004\206\111\055"}, + {0xFCCB, "\012\004\206\170\055"}, + {0xFCCC, "\012\004\206\047\055"}, + {0xFCCD, "\012\004\206\231\055"}, + {0xFCCE, "\012\004\047\115\055"}, + {0xFCCF, "\012\004\047\111\055"}, + {0xFCD0, "\012\004\047\170\055"}, + {0xFCD1, "\012\004\047\047\055"}, + {0xFCD2, "\012\004\215\115\055"}, + {0xFCD3, "\012\004\215\111\055"}, + {0xFCD4, "\012\004\215\170\055"}, + {0xFCD5, "\012\004\215\047\055"}, + {0xFCD6, "\012\004\215\231\055"}, + {0xFCD7, "\012\004\231\115\055"}, + {0xFCD8, "\012\004\231\047\055"}, + {0xFCD9, "\012\004\231\013\040\100\055"}, + {0xFCDA, "\012\004\056\115\055"}, + {0xFCDB, "\012\004\056\111\055"}, + {0xFCDC, "\012\004\056\170\055"}, + {0xFCDD, "\012\004\056\047\055"}, + {0xFCDE, "\012\004\056\231\055"}, + {0xFCDF, "\012\004\056\156\013\040\047\131"}, + {0xFCE0, "\012\004\056\156\013\040\231\131"}, + {0xFCE1, "\012\004\324\047\131"}, + {0xFCE2, "\012\004\324\231\131"}, + {0xFCE3, "\012\004\233\047\131"}, + {0xFCE4, "\012\004\233\231\131"}, + {0xFCE5, "\012\004\355\060\047\131"}, + {0xFCE6, "\012\004\355\060\231\131"}, + {0xFCE7, "\012\004\245\047\131"}, + {0xFCE8, "\012\004\245\231\131"}, + {0xFCE9, "\012\004\247\047\131"}, + {0xFCEA, "\012\004\247\231\131"}, + {0xFCEB, "\012\004\254\206\131"}, + {0xFCEC, "\012\004\254\047\131"}, + {0xFCED, "\012\004\206\047\131"}, + {0xFCEE, "\012\004\215\047\131"}, + {0xFCEF, "\012\004\215\231\131"}, + {0xFCF0, "\012\004\056\047\131"}, + {0xFCF1, "\012\004\056\231\131"}, + {0xFCF2, "\012\004\355\154\356\175\131"}, + {0xFCF3, "\012\004\355\154\356\157\131"}, + {0xFCF4, "\012\004\355\154\356\215\131"}, + {0xFCF5, "\012\004\355\046\100\160\036"}, + {0xFCF6, "\012\004\355\046\056\036"}, + {0xFCF7, "\012\004\355\027\100\160\036"}, + {0xFCF8, "\012\004\355\027\056\036"}, + {0xFCF9, "\012\004\355\063\100\160\036"}, + {0xFCFA, "\012\004\355\063\056\036"}, + {0xFCFB, "\012\004\245\100\160\036"}, + {0xFCFC, "\012\004\245\056\036"}, + {0xFCFD, "\012\004\247\100\160\036"}, + {0xFCFE, "\012\004\247\056\036"}, + {0xFCFF, "\012\004\111\100\160\036"}, + {0xFD00, "\012\004\111\056\036"}, + {0xFD01, "\012\004\115\100\160\036"}, + {0xFD02, "\012\004\115\056\036"}, + {0xFD03, "\012\004\170\100\160\036"}, + {0xFD04, "\012\004\170\056\036"}, + {0xFD05, "\012\004\355\005\100\160\036"}, + {0xFD06, "\012\004\355\005\056\036"}, + {0xFD07, "\012\004\350\100\160\036"}, + {0xFD08, "\012\004\350\056\036"}, + {0xFD09, "\012\004\247\115\036"}, + {0xFD0A, "\012\004\247\111\036"}, + {0xFD0B, "\012\004\247\170\036"}, + {0xFD0C, "\012\004\247\047\036"}, + {0xFD0D, "\012\004\247\343\036"}, + {0xFD0E, "\012\004\245\343\036"}, + {0xFD0F, "\012\004\355\005\343\036"}, + {0xFD10, "\012\004\350\343\036"}, + {0xFD11, "\012\004\355\046\100\160\032"}, + {0xFD12, "\012\004\355\046\056\032"}, + {0xFD13, "\012\004\355\027\100\160\032"}, + {0xFD14, "\012\004\355\027\056\032"}, + {0xFD15, "\012\004\355\063\100\160\032"}, + {0xFD16, "\012\004\355\063\056\032"}, + {0xFD17, "\012\004\245\100\160\032"}, + {0xFD18, "\012\004\245\056\032"}, + {0xFD19, "\012\004\247\100\160\032"}, + {0xFD1A, "\012\004\247\056\032"}, + {0xFD1B, "\012\004\111\100\160\032"}, + {0xFD1C, "\012\004\111\056\032"}, + {0xFD1D, "\012\004\115\100\160\032"}, + {0xFD1E, "\012\004\115\056\032"}, + {0xFD1F, "\012\004\170\100\160\032"}, + {0xFD20, "\012\004\170\056\032"}, + {0xFD21, "\012\004\355\005\100\160\032"}, + {0xFD22, "\012\004\355\005\056\032"}, + {0xFD23, "\012\004\350\100\160\032"}, + {0xFD24, "\012\004\350\056\032"}, + {0xFD25, "\012\004\247\115\032"}, + {0xFD26, "\012\004\247\111\032"}, + {0xFD27, "\012\004\247\170\032"}, + {0xFD28, "\012\004\247\047\032"}, + {0xFD29, "\012\004\247\343\032"}, + {0xFD2A, "\012\004\245\343\032"}, + {0xFD2B, "\012\004\355\005\343\032"}, + {0xFD2C, "\012\004\350\343\032"}, + {0xFD2D, "\012\004\247\115\055"}, + {0xFD2E, "\012\004\247\111\055"}, + {0xFD2F, "\012\004\247\170\055"}, + {0xFD30, "\012\004\247\047\055"}, + {0xFD31, "\012\004\245\231\055"}, + {0xFD32, "\012\004\247\231\055"}, + {0xFD33, "\012\004\355\046\047\055"}, + {0xFD34, "\012\004\245\115\131"}, + {0xFD35, "\012\004\245\111\131"}, + {0xFD36, "\012\004\245\170\131"}, + {0xFD37, "\012\004\247\115\131"}, + {0xFD38, "\012\004\247\111\131"}, + {0xFD39, "\012\004\247\170\131"}, + {0xFD3A, "\012\004\355\046\047\131"}, + {0xFD3B, "\012\004\355\366\047\131"}, + {0xFD3C, "\012\004\100\356\176\032"}, + {0xFD3D, "\012\004\100\356\176\036"}, + {0xFD3E, "\355\123\052\361\143"}, + {0xFD3F, "\355\123\053\361\143"}, + {0xFD50, "\012\004\233\115\047\055"}, + {0xFD51, "\012\004\233\111\115\032"}, + {0xFD52, "\012\004\233\111\115\055"}, + {0xFD53, "\012\004\233\111\047\055"}, + {0xFD54, "\012\004\233\170\047\055"}, + {0xFD55, "\012\004\233\047\115\055"}, + {0xFD56, "\012\004\233\047\111\055"}, + {0xFD57, "\012\004\233\047\170\055"}, + {0xFD58, "\012\004\115\047\111\032"}, + {0xFD59, "\012\004\115\047\111\055"}, + {0xFD5A, "\012\004\111\047\056\032"}, + {0xFD5B, "\012\004\111\047\100\160\032"}, + {0xFD5C, "\012\004\245\111\115\055"}, + {0xFD5D, "\012\004\245\115\111\055"}, + {0xFD5E, "\012\004\245\115\100\160\032"}, + {0xFD5F, "\012\004\245\047\111\032"}, + {0xFD60, "\012\004\245\047\111\055"}, + {0xFD61, "\012\004\245\047\115\055"}, + {0xFD62, "\012\004\245\047\047\032"}, + {0xFD63, "\012\004\245\047\047\055"}, + {0xFD64, "\012\004\355\005\111\111\032"}, + {0xFD65, "\012\004\355\005\111\111\055"}, + {0xFD66, "\012\004\355\005\047\047\032"}, + {0xFD67, "\012\004\247\111\047\032"}, + {0xFD68, "\012\004\247\111\047\055"}, + {0xFD69, "\012\004\247\115\056\032"}, + {0xFD6A, "\012\004\247\047\170\032"}, + {0xFD6B, "\012\004\247\047\170\055"}, + {0xFD6C, "\012\004\247\047\047\032"}, + {0xFD6D, "\012\004\247\047\047\055"}, + {0xFD6E, "\012\004\350\111\100\160\032"}, + {0xFD6F, "\012\004\350\170\047\032"}, + {0xFD70, "\012\004\350\170\047\055"}, + {0xFD71, "\012\004\355\046\047\111\032"}, + {0xFD72, "\012\004\355\046\047\111\055"}, + {0xFD73, "\012\004\355\046\047\047\055"}, + {0xFD74, "\012\004\355\046\047\056\032"}, + {0xFD75, "\012\004\355\027\115\047\032"}, + {0xFD76, "\012\004\355\027\047\047\032"}, + {0xFD77, "\012\004\355\027\047\047\055"}, + {0xFD78, "\012\004\355\027\047\100\160\032"}, + {0xFD79, "\012\004\355\063\047\047\032"}, + {0xFD7A, "\012\004\355\063\047\056\032"}, + {0xFD7B, "\012\004\355\063\047\100\160\032"}, + {0xFD7C, "\012\004\351\170\047\032"}, + {0xFD7D, "\012\004\351\170\047\055"}, + {0xFD7E, "\012\004\355\037\047\111\032"}, + {0xFD7F, "\012\004\355\037\047\047\032"}, + {0xFD80, "\012\004\206\111\047\032"}, + {0xFD81, "\012\004\206\111\056\032"}, + {0xFD82, "\012\004\206\111\100\160\032"}, + {0xFD83, "\012\004\206\115\115\055"}, + {0xFD84, "\012\004\206\115\115\032"}, + {0xFD85, "\012\004\206\170\047\032"}, + {0xFD86, "\012\004\206\170\047\055"}, + {0xFD87, "\012\004\206\047\111\032"}, + {0xFD88, "\012\004\206\047\111\055"}, + {0xFD89, "\012\004\047\111\115\055"}, + {0xFD8A, "\012\004\047\111\047\055"}, + {0xFD8B, "\012\004\047\111\056\032"}, + {0xFD8C, "\012\004\047\115\111\055"}, + {0xFD8D, "\012\004\047\115\047\055"}, + {0xFD8E, "\012\004\047\170\115\055"}, + {0xFD8F, "\012\004\047\170\047\055"}, + {0xFD92, "\012\004\047\115\170\055"}, + {0xFD93, "\012\004\231\047\115\055"}, + {0xFD94, "\012\004\231\047\047\055"}, + {0xFD95, "\012\004\215\111\047\055"}, + {0xFD96, "\012\004\215\111\100\160\032"}, + {0xFD97, "\012\004\215\115\047\032"}, + {0xFD98, "\012\004\215\115\047\055"}, + {0xFD99, "\012\004\215\115\100\160\032"}, + {0xFD9A, "\012\004\215\047\056\032"}, + {0xFD9B, "\012\004\215\047\100\160\032"}, + {0xFD9C, "\012\004\056\047\047\032"}, + {0xFD9D, "\012\004\056\047\047\055"}, + {0xFD9E, "\012\004\324\170\056\032"}, + {0xFD9F, "\012\004\233\115\056\032"}, + {0xFDA0, "\012\004\233\115\100\160\032"}, + {0xFDA1, "\012\004\233\170\056\032"}, + {0xFDA2, "\012\004\233\170\100\160\032"}, + {0xFDA3, "\012\004\233\047\056\032"}, + {0xFDA4, "\012\004\233\047\100\160\032"}, + {0xFDA5, "\012\004\115\047\056\032"}, + {0xFDA6, "\012\004\115\111\100\160\032"}, + {0xFDA7, "\012\004\115\047\100\160\032"}, + {0xFDA8, "\012\004\245\170\100\160\032"}, + {0xFDA9, "\012\004\355\005\111\056\032"}, + {0xFDAA, "\012\004\247\111\056\032"}, + {0xFDAB, "\012\004\350\111\056\032"}, + {0xFDAC, "\012\004\206\115\056\032"}, + {0xFDAD, "\012\004\206\047\056\032"}, + {0xFDAE, "\012\004\056\111\056\032"}, + {0xFDAF, "\012\004\056\115\056\032"}, + {0xFDB0, "\012\004\056\047\056\032"}, + {0xFDB1, "\012\004\047\047\056\032"}, + {0xFDB2, "\012\004\355\037\047\056\032"}, + {0xFDB3, "\012\004\215\111\056\032"}, + {0xFDB4, "\012\004\355\037\047\111\055"}, + {0xFDB5, "\012\004\206\111\047\055"}, + {0xFDB6, "\012\004\355\027\047\056\032"}, + {0xFDB7, "\012\004\254\047\056\032"}, + {0xFDB8, "\012\004\215\115\111\055"}, + {0xFDB9, "\012\004\047\170\056\032"}, + {0xFDBA, "\012\004\206\115\047\055"}, + {0xFDBB, "\012\004\254\047\047\032"}, + {0xFDBC, "\012\004\206\115\047\032"}, + {0xFDBD, "\012\004\215\115\111\032"}, + {0xFDBE, "\012\004\115\111\056\032"}, + {0xFDBF, "\012\004\111\115\056\032"}, + {0xFDC0, "\012\004\047\115\056\032"}, + {0xFDC1, "\012\004\351\047\056\032"}, + {0xFDC2, "\012\004\324\111\056\032"}, + {0xFDC3, "\012\004\254\047\047\055"}, + {0xFDC4, "\012\004\355\027\115\047\055"}, + {0xFDC5, "\012\004\355\005\047\047\055"}, + {0xFDC6, "\012\004\245\170\056\032"}, + {0xFDC7, "\012\004\215\115\056\032"}, + {0xFDF0, "\012\004\361\277\036\362\060\355\246\057\360\154\360\141"}, + {0xFDF1, "\012\004\373\331\036\362\060\355\246\057\360\154\360\141"}, + {0xFDF2, "\012\004\362\314\036"}, + {0xFDF3, "\012\004\362\307\036"}, + {0xFDF4, "\012\004\371\007\036"}, + {0xFDF5, "\012\004\374\214\036"}, + {0xFDF6, "\012\004\374\041\036"}, + {0xFDF7, "\012\004\360\045\036"}, + {0xFDF8, "\012\004\362\102\036"}, + {0xFDF9, "\012\004\361\277\036"}, + {0xFDFA, "\012\004\374\215\360\045\362\102"}, + {0xFDFB, "\012\004\365\300"}, + {0xFE20, "\026\353\052\007\012"}, + {0xFE21, "\026\353\053\007\012"}, + {0xFE22, "\026\353\052\007\172\070"}, + {0xFE23, "\026\353\053\007\172\070"}, + {0xFE30, "\263\007\355\022\007\037\357\116\070\202"}, + {0xFE31, "\263\007\355\022\007\355\007\356\004\202"}, + {0xFE32, "\263\007\355\022\007\355\007\357\131\202"}, + {0xFE33, "\263\007\355\022\007\355\007\101\202"}, + {0xFE34, "\263\007\355\022\007\355\007\101\356\232\202"}, + {0xFE35, "\263\007\355\022\007\355\123\052\256"}, + {0xFE36, "\263\007\355\022\007\355\123\053\256"}, + {0xFE37, "\263\007\355\022\360\151\052\256"}, + {0xFE38, "\263\007\355\022\360\151\053\256"}, + {0xFE39, "\263\007\355\022\007\122\052\202\013\355\370"}, + {0xFE3A, "\263\007\355\022\007\122\221\202\013\355\370"}, + {0xFE3B, "\263\007\355\022\007\122\052\356\076\207\202"}, + {0xFE3C, "\263\007\355\022\007\122\221\356\076\207\202"}, + {0xFE3D, "\263\007\355\022\007\122\070\052\202"}, + {0xFE3E, "\263\007\355\022\007\122\070\221\202"}, + {0xFE3F, "\263\007\355\022\007\122\052\202"}, + {0xFE40, "\263\007\355\022\007\122\221\202"}, + {0xFE41, "\263\007\355\022\007\122\202\052\013\273"}, + {0xFE42, "\263\007\355\022\007\122\202\221\013\273"}, + {0xFE43, "\263\007\355\022\007\122\147\202\052\013\273"}, + {0xFE44, "\263\007\355\022\007\122\147\202\221\013\273"}, + {0xFE49, "\355\007\102\013\357\007"}, + {0xFE4A, "\355\007\102\044\037\360\110"}, + {0xFE4B, "\355\007\102\356\232"}, + {0xFE4C, "\355\007\102\070\356\232"}, + {0xFE4D, "\355\007\101\164\357\007"}, + {0xFE4E, "\355\007\101\044\037\360\110"}, + {0xFE4F, "\355\007\101\356\232"}, + {0xFE50, "\330\005"}, + {0xFE51, "\330\076\005"}, + {0xFE52, "\037\005"}, + {0xFE54, "\356\104\005"}, + {0xFE55, "\355\103\005"}, + {0xFE56, "\037\355\313\005"}, + {0xFE57, "\037\355\312\005"}, + {0xFE58, "\355\126\355\315\356\004\005"}, + {0xFE59, "\355\123\052\005"}, + {0xFE5A, "\355\123\053\005"}, + {0xFE5B, "\356\051\052\005"}, + {0xFE5C, "\356\051\053\005"}, + {0xFE5D, "\122\052\013\355\370\005"}, + {0xFE5E, "\122\221\013\355\370\005"}, + {0xFE5F, "\357\112\005"}, + {0xFE60, "\356\377\005"}, + {0xFE61, "\355\115\005"}, + {0xFE62, "\057\214\005"}, + {0xFE63, "\355\007\005"}, + {0xFE64, "\057\320\044\005"}, + {0xFE65, "\057\344\044\005"}, + {0xFE66, "\057\173\044\005"}, + {0xFE68, "\246\355\044\356\073\005"}, + {0xFE69, "\022\357\141\005"}, + {0xFE6A, "\022\355\057\355\245\005"}, + {0xFE6B, "\357\065\005"}, + {0xFE70, "\356\176\004\036"}, + {0xFE71, "\361\355\356\176\013\040\004"}, + {0xFE72, "\357\122\004\036"}, + {0xFE74, "\357\216\036\004"}, + {0xFE76, "\356\175\036\004"}, + {0xFE77, "\356\175\131\004"}, + {0xFE78, "\356\157\036\004"}, + {0xFE79, "\356\157\131\004"}, + {0xFE7A, "\356\215\036\004"}, + {0xFE7B, "\356\215\131\004"}, + {0xFE7C, "\355\154\036\004"}, + {0xFE7D, "\355\154\131\004"}, + {0xFE7E, "\357\036\036\004"}, + {0xFE7F, "\357\036\131\004"}, + {0xFE80, "\001\004\156\036"}, + {0xFE81, "\001\004\100\356\022\013\040\036"}, + {0xFE82, "\001\004\100\356\022\013\040\032"}, + {0xFE83, "\001\004\100\156\013\040\036"}, + {0xFE84, "\001\004\032"}, + {0xFE85, "\001\004\355\051\156\013\040\036"}, + {0xFE86, "\001\004\355\051\156\013\040\032"}, + {0xFE87, "\001\004\100\156\043\036"}, + {0xFE88, "\001\004\100\156\043\032"}, + {0xFE89, "\001\004\056\156\013\040\036"}, + {0xFE8A, "\001\004\056\156\013\040\032"}, + {0xFE8B, "\001\004\056\156\013\040\055"}, + {0xFE8C, "\001\004\056\156\013\040\131"}, + {0xFE8D, "\001\004\100\036"}, + {0xFE8E, "\001\004\100\032"}, + {0xFE8F, "\001\004\324\036"}, + {0xFE90, "\001\004\324\032"}, + {0xFE91, "\001\004\324\055"}, + {0xFE92, "\001\004\324\131"}, + {0xFE93, "\001\004\233\356\354\036"}, + {0xFE94, "\001\004\233\356\354\032"}, + {0xFE95, "\001\004\233\036"}, + {0xFE96, "\001\004\233\032"}, + {0xFE97, "\001\004\233\055"}, + {0xFE98, "\001\004\233\131"}, + {0xFE99, "\001\004\355\060\036"}, + {0xFE9A, "\001\004\355\060\032"}, + {0xFE9B, "\001\004\355\060\055"}, + {0xFE9C, "\001\004\355\060\131"}, + {0xFE9D, "\001\004\115\036"}, + {0xFE9E, "\001\004\115\032"}, + {0xFE9F, "\001\004\115\055"}, + {0xFEA0, "\001\004\115\131"}, + {0xFEA1, "\001\004\111\036"}, + {0xFEA2, "\001\004\111\032"}, + {0xFEA3, "\001\004\111\055"}, + {0xFEA4, "\001\004\111\131"}, + {0xFEA5, "\001\004\170\036"}, + {0xFEA6, "\001\004\170\032"}, + {0xFEA7, "\001\004\170\055"}, + {0xFEA8, "\001\004\170\131"}, + {0xFEA9, "\001\004\355\316\036"}, + {0xFEAA, "\001\004\355\316\032"}, + {0xFEAB, "\001\004\356\321\036"}, + {0xFEAC, "\001\004\356\321\032"}, + {0xFEAD, "\001\004\343\036"}, + {0xFEAE, "\001\004\343\032"}, + {0xFEAF, "\001\004\360\017\036"}, + {0xFEB0, "\001\004\360\017\032"}, + {0xFEB1, "\001\004\245\036"}, + {0xFEB2, "\001\004\245\032"}, + {0xFEB3, "\001\004\245\055"}, + {0xFEB4, "\001\004\245\131"}, + {0xFEB5, "\001\004\247\036"}, + {0xFEB6, "\001\004\247\032"}, + {0xFEB7, "\001\004\247\055"}, + {0xFEB8, "\001\004\247\131"}, + {0xFEB9, "\001\004\355\005\036"}, + {0xFEBA, "\001\004\355\005\032"}, + {0xFEBB, "\001\004\355\005\055"}, + {0xFEBC, "\001\004\355\005\131"}, + {0xFEBD, "\001\004\350\036"}, + {0xFEBE, "\001\004\350\032"}, + {0xFEBF, "\001\004\350\055"}, + {0xFEC0, "\001\004\350\131"}, + {0xFEC1, "\001\004\355\046\036"}, + {0xFEC2, "\001\004\355\046\032"}, + {0xFEC3, "\001\004\355\046\055"}, + {0xFEC4, "\001\004\355\046\131"}, + {0xFEC5, "\001\004\355\366\036"}, + {0xFEC6, "\001\004\355\366\032"}, + {0xFEC7, "\001\004\355\366\055"}, + {0xFEC8, "\001\004\355\366\131"}, + {0xFEC9, "\001\004\355\027\036"}, + {0xFECA, "\001\004\355\027\032"}, + {0xFECB, "\001\004\355\027\055"}, + {0xFECC, "\001\004\355\027\131"}, + {0xFECD, "\001\004\355\063\036"}, + {0xFECE, "\001\004\355\063\032"}, + {0xFECF, "\001\004\355\063\055"}, + {0xFED0, "\001\004\355\063\131"}, + {0xFED1, "\001\004\351\036"}, + {0xFED2, "\001\004\351\032"}, + {0xFED3, "\001\004\351\055"}, + {0xFED4, "\001\004\351\131"}, + {0xFED5, "\001\004\355\037\036"}, + {0xFED6, "\001\004\355\037\032"}, + {0xFED7, "\001\004\355\037\055"}, + {0xFED8, "\001\004\355\037\131"}, + {0xFED9, "\001\004\254\036"}, + {0xFEDA, "\001\004\254\032"}, + {0xFEDB, "\001\004\254\055"}, + {0xFEDC, "\001\004\254\131"}, + {0xFEDD, "\001\004\206\036"}, + {0xFEDE, "\001\004\206\032"}, + {0xFEDF, "\001\004\206\055"}, + {0xFEE0, "\001\004\206\131"}, + {0xFEE1, "\001\004\047\036"}, + {0xFEE2, "\001\004\047\032"}, + {0xFEE3, "\001\004\047\055"}, + {0xFEE4, "\001\004\047\131"}, + {0xFEE5, "\001\004\215\036"}, + {0xFEE6, "\001\004\215\032"}, + {0xFEE7, "\001\004\215\055"}, + {0xFEE8, "\001\004\215\131"}, + {0xFEE9, "\001\004\231\036"}, + {0xFEEA, "\001\004\231\032"}, + {0xFEEB, "\001\004\231\055"}, + {0xFEEC, "\001\004\231\131"}, + {0xFEED, "\001\004\355\051\036"}, + {0xFEEE, "\001\004\355\051\032"}, + {0xFEEF, "\001\004\100\160\036"}, + {0xFEF0, "\001\004\100\160\032"}, + {0xFEF1, "\001\004\056\036"}, + {0xFEF2, "\001\004\056\032"}, + {0xFEF3, "\001\004\056\055"}, + {0xFEF4, "\001\004\056\131"}, + {0xFEF5, "\012\004\206\100\356\022\013\040\036"}, + {0xFEF6, "\012\004\206\100\356\022\013\040\032"}, + {0xFEF7, "\012\004\206\100\156\013\040\036"}, + {0xFEF8, "\012\004\206\100\156\013\040\032"}, + {0xFEF9, "\012\004\206\100\156\043\036"}, + {0xFEFA, "\012\004\206\100\156\043\032"}, + {0xFEFB, "\012\004\206\100\036"}, + {0xFEFC, "\012\004\206\100\032"}, + {0xFEFF, "\355\073\357\201\270\105"}, + {0xFF01, "\037\355\312\073\105"}, + {0xFF02, "\355\135\073\105"}, + {0xFF03, "\357\112\073\105"}, + {0xFF04, "\022\357\141\073\105"}, + {0xFF05, "\022\355\057\355\245\073\105"}, + {0xFF06, "\356\377\073\105"}, + {0xFF07, "\355\306\073\105"}, + {0xFF08, "\355\123\052\073\105"}, + {0xFF09, "\355\123\053\073\105"}, + {0xFF0A, "\355\115\073\105"}, + {0xFF0B, "\057\214\073\105"}, + {0xFF0C, "\330\073\105"}, + {0xFF0D, "\355\007\073\105"}, + {0xFF0E, "\037\073\105"}, + {0xFF0F, "\246\355\044\073\105"}, + {0xFF10, "\024\331\073\105"}, + {0xFF11, "\024\110\073\105"}, + {0xFF12, "\024\127\073\105"}, + {0xFF13, "\024\136\073\105"}, + {0xFF14, "\024\220\073\105"}, + {0xFF15, "\024\230\073\105"}, + {0xFF16, "\024\255\073\105"}, + {0xFF17, "\024\252\073\105"}, + {0xFF18, "\024\226\073\105"}, + {0xFF19, "\024\257\073\105"}, + {0xFF1A, "\355\103\360\134\073\105"}, + {0xFF1B, "\356\104\073\105"}, + {0xFF1C, "\057\320\044\073\105"}, + {0xFF1D, "\057\173\044\073\105"}, + {0xFF1E, "\057\344\044\073\105"}, + {0xFF1F, "\037\355\313\073\105"}, + {0xFF20, "\357\065\073\105"}, + {0xFF21, "\001\010\006\063\073\105"}, + {0xFF22, "\001\010\006\334\073\105"}, + {0xFF23, "\001\010\006\313\073\105"}, + {0xFF24, "\001\010\006\275\073\105"}, + {0xFF25, "\001\010\006\130\073\105"}, + {0xFF26, "\001\010\006\355\062\073\105"}, + {0xFF27, "\001\010\006\266\073\105"}, + {0xFF28, "\001\010\006\237\073\105"}, + {0xFF29, "\001\010\006\103\073\105"}, + {0xFF2A, "\001\010\006\355\053\073\105"}, + {0xFF2B, "\001\010\006\352\073\105"}, + {0xFF2C, "\001\010\006\211\073\105"}, + {0xFF2D, "\001\010\006\276\073\105"}, + {0xFF2E, "\001\010\006\241\073\105"}, + {0xFF2F, "\001\010\006\064\073\105"}, + {0xFF30, "\001\010\006\355\021\073\105"}, + {0xFF31, "\001\010\006\355\173\073\105"}, + {0xFF32, "\001\010\006\167\073\105"}, + {0xFF33, "\001\010\006\223\073\105"}, + {0xFF34, "\001\010\006\261\073\105"}, + {0xFF35, "\001\010\006\132\073\105"}, + {0xFF36, "\001\010\006\355\025\073\105"}, + {0xFF37, "\001\010\006\347\073\105"}, + {0xFF38, "\001\010\006\355\026\073\105"}, + {0xFF39, "\001\010\006\265\073\105"}, + {0xFF3A, "\001\010\006\271\073\105"}, + {0xFF3B, "\122\052\073\105"}, + {0xFF3C, "\246\355\044\356\073\073\105"}, + {0xFF3D, "\122\221\073\105"}, + {0xFF3E, "\021\072\073\105"}, + {0xFF3F, "\355\007\101\073\105"}, + {0xFF40, "\021\067\073\105"}, + {0xFF41, "\001\005\006\063\073\105"}, + {0xFF42, "\001\005\006\334\073\105"}, + {0xFF43, "\001\005\006\313\073\105"}, + {0xFF44, "\001\005\006\275\073\105"}, + {0xFF45, "\001\005\006\130\073\105"}, + {0xFF46, "\001\005\006\355\062\073\105"}, + {0xFF47, "\001\005\006\266\073\105"}, + {0xFF48, "\001\005\006\237\073\105"}, + {0xFF49, "\001\005\006\103\073\105"}, + {0xFF4A, "\001\005\006\355\053\073\105"}, + {0xFF4B, "\001\005\006\352\073\105"}, + {0xFF4C, "\001\005\006\211\073\105"}, + {0xFF4D, "\001\005\006\276\073\105"}, + {0xFF4E, "\001\005\006\241\073\105"}, + {0xFF4F, "\001\005\006\064\073\105"}, + {0xFF50, "\001\005\006\355\021\073\105"}, + {0xFF51, "\001\005\006\355\173\073\105"}, + {0xFF52, "\001\005\006\167\073\105"}, + {0xFF53, "\001\005\006\223\073\105"}, + {0xFF54, "\001\005\006\261\073\105"}, + {0xFF55, "\001\005\006\132\073\105"}, + {0xFF56, "\001\005\006\355\025\073\105"}, + {0xFF57, "\001\005\006\347\073\105"}, + {0xFF58, "\001\005\006\355\026\073\105"}, + {0xFF59, "\001\005\006\265\073\105"}, + {0xFF5A, "\001\005\006\271\073\105"}, + {0xFF5B, "\356\051\052\073\105"}, + {0xFF5C, "\243\256\073\105"}, + {0xFF5D, "\356\051\053\073\105"}, + {0xFF5E, "\172\073\105"}, + {0xFF61, "\037\076\071"}, + {0xFF62, "\122\052\013\273\071"}, + {0xFF63, "\122\221\013\273\071"}, + {0xFF64, "\330\076\071"}, + {0xFF65, "\037\355\137\045\071"}, + {0xFF66, "\002\045\355\150\071"}, + {0xFF67, "\002\045\175\063\071"}, + {0xFF68, "\002\045\175\103\071"}, + {0xFF69, "\002\045\175\132\071"}, + {0xFF6A, "\002\045\175\130\071"}, + {0xFF6B, "\002\045\175\064\071"}, + {0xFF6C, "\002\045\175\305\071"}, + {0xFF6D, "\002\045\175\355\364\071"}, + {0xFF6E, "\002\045\175\355\040\071"}, + {0xFF6F, "\002\045\175\355\300\071"}, + {0xFF70, "\204\356\075\007\355\175\357\013\071"}, + {0xFF71, "\002\045\063\071"}, + {0xFF72, "\002\045\103\071"}, + {0xFF73, "\002\045\132\071"}, + {0xFF74, "\002\045\130\071"}, + {0xFF75, "\002\045\064\071"}, + {0xFF76, "\002\045\240\071"}, + {0xFF77, "\002\045\355\332\071"}, + {0xFF78, "\002\045\356\021\071"}, + {0xFF79, "\002\045\355\331\071"}, + {0xFF7A, "\002\045\355\167\071"}, + {0xFF7B, "\002\045\355\004\071"}, + {0xFF7C, "\002\045\355\275\071"}, + {0xFF7D, "\002\045\356\253\071"}, + {0xFF7E, "\002\045\356\042\071"}, + {0xFF7F, "\002\045\355\070\071"}, + {0xFF80, "\002\045\311\071"}, + {0xFF81, "\002\045\355\217\071"}, + {0xFF82, "\002\045\355\300\071"}, + {0xFF83, "\002\045\356\125\071"}, + {0xFF84, "\002\045\355\176\071"}, + {0xFF85, "\002\045\354\071"}, + {0xFF86, "\002\045\244\071"}, + {0xFF87, "\002\045\356\025\071"}, + {0xFF88, "\002\045\355\140\071"}, + {0xFF89, "\002\045\355\113\071"}, + {0xFF8A, "\002\045\314\071"}, + {0xFF8B, "\002\045\355\255\071"}, + {0xFF8C, "\002\045\356\336\071"}, + {0xFF8D, "\002\045\356\072\071"}, + {0xFF8E, "\002\045\355\107\071"}, + {0xFF8F, "\002\045\277\071"}, + {0xFF90, "\002\045\355\230\071"}, + {0xFF91, "\002\045\355\111\071"}, + {0xFF92, "\002\045\355\334\071"}, + {0xFF93, "\002\045\355\136\071"}, + {0xFF94, "\002\045\305\071"}, + {0xFF95, "\002\045\355\364\071"}, + {0xFF96, "\002\045\355\040\071"}, + {0xFF97, "\002\045\322\071"}, + {0xFF98, "\002\045\355\347\071"}, + {0xFF99, "\002\045\356\037\071"}, + {0xFF9A, "\002\045\356\035\071"}, + {0xFF9B, "\002\045\355\174\071"}, + {0xFF9C, "\002\045\355\050\071"}, + {0xFF9D, "\002\045\241\071"}, + {0xFF9E, "\204\045\007\355\175\356\266\071"}, + {0xFF9F, "\204\045\007\355\175\357\324\071"}, + {0xFFA0, "\356\145\014\071"}, + {0xFFA1, "\001\014\355\333\071"}, + {0xFFA2, "\001\014\357\040\071"}, + {0xFFA3, "\001\014\357\221\071"}, + {0xFFA4, "\001\014\355\337\071"}, + {0xFFA5, "\001\014\357\246\071"}, + {0xFFA6, "\001\014\357\245\071"}, + {0xFFA7, "\001\014\355\360\071"}, + {0xFFA8, "\001\014\357\340\071"}, + {0xFFA9, "\001\014\355\350\071"}, + {0xFFAA, "\001\014\357\307\071"}, + {0xFFAB, "\001\014\357\310\071"}, + {0xFFAC, "\001\014\357\312\071"}, + {0xFFAD, "\001\014\357\313\071"}, + {0xFFAE, "\001\014\357\314\071"}, + {0xFFAF, "\001\014\357\311\071"}, + {0xFFB0, "\001\014\357\023\071"}, + {0xFFB1, "\001\014\355\335\071"}, + {0xFFB2, "\001\014\355\345\071"}, + {0xFFB3, "\001\014\357\336\071"}, + {0xFFB4, "\001\014\357\002\071"}, + {0xFFB5, "\001\014\355\351\071"}, + {0xFFB6, "\001\014\357\041\071"}, + {0xFFB7, "\001\014\355\327\071"}, + {0xFFB8, "\001\014\355\276\071"}, + {0xFFB9, "\001\014\357\337\071"}, + {0xFFBA, "\001\014\355\356\071"}, + {0xFFBB, "\001\014\355\330\071"}, + {0xFFBC, "\001\014\355\355\071"}, + {0xFFBD, "\001\014\355\344\071"}, + {0xFFBE, "\001\014\355\325\071"}, + {0xFFC2, "\001\014\063\071"}, + {0xFFC3, "\001\014\356\136\071"}, + {0xFFC4, "\001\014\305\071"}, + {0xFFC5, "\001\014\360\016\071"}, + {0xFFC6, "\001\014\064\071"}, + {0xFFC7, "\001\014\217\071"}, + {0xFFCA, "\001\014\355\040\071"}, + {0xFFCB, "\001\014\355\303\071"}, + {0xFFCC, "\001\014\306\071"}, + {0xFFCD, "\001\014\355\050\071"}, + {0xFFCE, "\001\014\360\010\071"}, + {0xFFCF, "\001\014\356\011\071"}, + {0xFFD2, "\001\014\356\273\071"}, + {0xFFD3, "\001\014\113\071"}, + {0xFFD4, "\001\014\355\150\071"}, + {0xFFD5, "\001\014\356\271\071"}, + {0xFFD6, "\001\014\355\362\071"}, + {0xFFD7, "\001\014\355\151\071"}, + {0xFFDA, "\001\014\360\033\071"}, + {0xFFDB, "\001\014\360\034\071"}, + {0xFFDC, "\001\014\103\071"}, + {0xFFE0, "\022\357\074\073\105"}, + {0xFFE1, "\022\361\032\073\105"}, + {0xFFE2, "\057\356\364\073\105"}, + {0xFFE3, "\174\073\105"}, + {0xFFE4, "\243\360\100\073\105"}, + {0xFFE5, "\022\362\111\073\105"}, + {0xFFE6, "\022\362\103\073\105"}, + {0xFFE8, "\243\256\357\234\071"}, + {0xFFE9, "\061\015\033\052\071"}, + {0xFFEA, "\061\015\050\102\071"}, + {0xFFEB, "\061\015\033\053\071"}, + {0xFFEC, "\061\015\050\101\071"}, + {0xFFED, "\035\207\071"}, + {0xFFEE, "\272\147\071"}, + {0xFFF9, "\362\324\355\041\357\203"}, + {0xFFFA, "\355\045\355\041\357\203"}, + {0xFFFB, "\375\162\355\041\357\203"}, + {0xFFFC, "\335\007\357\022\365\162"}, + {0xFFFD, "\335\007\357\022"}, }; diff --git a/src/freeze.c b/src/freeze.c index e20f942..93f0379 100644 --- a/src/freeze.c +++ b/src/freeze.c @@ -1,5 +1,5 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1998, 99 Free Software Foundation, Inc. + Copyright © 1998, 99, 00 Free Software Foundation, Inc. François Pinard , 1998. This program is free software; you can redistribute it and/or modify it @@ -42,17 +42,17 @@ recode_freeze_tables (RECODE_OUTER outer) Copyright © 1998 Free Software Foundation, Inc.\n\ Contributed by François Pinard , 1998.\n\ \n\ - The `recode' Library is free software; you can redistribute it and/or\n\ - modify it under the terms of the GNU Library General Public License\n\ + This library is free software; you can redistribute it and/or\n\ + modify it under the terms of the GNU Lesser General Public License\n\ as published by the Free Software Foundation; either version 2 of the\n\ License, or (at your option) any later version.\n\ \n\ - The `recode' Library is distributed in the hope that it will be\n\ + This library is distributed in the hope that it will be\n\ useful, but WITHOUT ANY WARRANTY; without even the implied warranty\n\ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n\ - Library General Public License for more details.\n\ + Lesser General Public License for more details.\n\ \n\ - You should have received a copy of the GNU Library General Public\n\ + You should have received a copy of the GNU Lesser General Public\n\ License along with the `recode' Library; see the file `COPYING.LIB'.\n\ If not, write to the Free Software Foundation, Inc., 59 Temple Place -\n\ Suite 330, Boston, MA 02111-1307, USA. */\n\ @@ -92,181 +92,3 @@ recode_freeze_tables (RECODE_OUTER outer) } #endif } - -#if 0 - -/* Hashable structure for relating charset or alias names to charsets. */ - -struct recode_hash - { - /* Charset or alias name, or NULL. */ - const char *name; - /* Associated charset. */ - RECODE_CHARSET charset; - /* Next index in table, or NULL. */ - struct recode_hash *next; - }; - -struct recode_outer -{ - struct recode_hash *hash_table; - unsigned number_of_charsets; - - /* Arrays of strings ready for argmatch. */ - const char **argmatch_charset_array; - const char **argmatch_surface_array; - - /* recode.c */ - /* -------- */ - - /* Known single steps. */ - RECODE_STEP step_list; - unsigned number_of_steps; - - /* Identity recoding table. */ - const unsigned char *one_to_same; - - /* Universal charset used for surface transformations. */ - RECODE_CHARSET data_charset; - - /* Specially known UCS-2 charset. */ - RECODE_CHARSET ucs2_charset; - - /* Preset qualities, to make step initialisation simpler. */ - struct recode_quality quality_byte_reversible; - struct recode_quality quality_byte_to_byte; -#if 0 - struct recode_quality quality_one_to_maybe; /* FIXME: unused? */ -#endif - struct recode_quality quality_byte_to_variable; - struct recode_quality quality_variable_to_byte; - struct recode_quality quality_variable_to_variable; -}; - -/*---------------------------. -| Description of a charset. | -`---------------------------*/ - -/* Double tables are generated as arrays of indices into a pool of strips, - each strip holds STRIP_SIZE UCS-2 characters. Some memory is saved by - not allowing duplicate strips in the pool. A smaller strip size yields - more duplicates and so, a smaller pool, but then, tables get longer - because more strip indices are needed for each table. It is difficult to - predict the optimal strip size. Tests made on 1997-09-22 showed that a - strip size of 4 needs 27808 bytes total, 8 needs 22656, 16 needs 23584 - and 32 needs 25568, so we decided to stick to a strip size of 8. Change - $STRIP_SIZE in `doc/tables.pl' if you change the value here. */ - -/* "Are we speaking slips, strips or bars?" (of gold press'latinum :-) */ -#define STRIP_SIZE 8 - -struct recode_charset -{ - /* Chaining of all known charsets and surfaces. */ - RECODE_CHARSET next; - - /* Unique ordinal for this charset, counted from zero. */ - unsigned ordinal; - - /* Main name. */ - const char *name; - - /* Associated UCS-2 data, if any, or NULL. */ - const struct strip_data *strip_data; - - /* Step for data..CHARSET transformation, if any, or NULL. */ - RECODE_STEP resurfacer; - - /* Step for CHARSET..data transformation, if any, or NULL. */ - RECODE_STEP unsurfacer; - - /* Non zero if this is an acceptable charset (not only a surface). */ - bool charset_flag : 1; - - /* Non zero if this one should be ignored. */ - bool ignore : 1; -}; - -struct recode_surface_list -{ - RECODE_CHARSET surface; - struct recode_surface_list *next; -}; - -/* A strip table holds a pointer to a pool of strips, then an array of - 256/STRIP_SIZE offsets for the start of strips into that pool, each strip - describes STRIP_SIZE UCS-2 characters. A missing character in a strip is - indicated by all 16 bits set. */ -struct strip_data -{ - const recode_ucs2 *pool; - const short offset[256 / STRIP_SIZE]; -}; -typedef struct strip_data struct strip_data; - -/*-------------------------------------------. -| Description of a single step of recoding. | -`-------------------------------------------*/ - -struct recode_step -{ - /* Chaining of all known single steps. */ - RECODE_STEP next; - - /* Charset before conversion. */ - RECODE_CHARSET before; - - /* Charset after conversion. */ - RECODE_CHARSET after; - - /* Cost for this single step only. */ - short conversion_cost; - - /* Recoding quality. */ - struct recode_quality quality; - - /* Step specific variables. */ - void *local; - - /* Recoding array of 256 chars, or NULL. */ - const unsigned char *byte_to_byte; - - /* Recoding array of 256 strings, or NULL. */ - const char *const *byte_to_variable; - - /* Initialisation handler, to be called before step optimisation. */ - bool (*init_routine) - PARAMS ((RECODE_STEP, RECODE_CONST_REQUEST, - RECODE_CONST_OPTION_LIST, - RECODE_CONST_OPTION_LIST)); - - /* Transformation handler, for doing the actual recoding work. */ - bool (*transform_routine) - PARAMS ((RECODE_CONST_STEP, RECODE_TASK)); -}; - -struct recode_option_list -{ - const char *option; - RECODE_OPTION_LIST next; -}; - -struct recode_quality -{ - enum recode_size in_size : 3; /* rough byte size of input characters */ - enum recode_size out_size : 3; /* rough byte size of output characters */ - bool reversible : 1; /* transformation is known to be reversible */ - bool slower : 1; /* transformation is slower than average */ - bool faster : 1; /* transformation is faster than average */ -}; - -/* The sole purpose of qualities is for later attributing step costs. */ - -enum recode_size -{ - RECODE_1, /* roughly one byte per character */ - RECODE_2, /* roughly two bytes per character */ - RECODE_4, /* roughly four bytes per character */ - RECODE_N /* variable number of bytes per character */ -}; -#endif diff --git a/src/hash.c b/src/hash.c index 70ec009..79c2515 100644 --- a/src/hash.c +++ b/src/hash.c @@ -402,7 +402,7 @@ hash_string (const char *string, unsigned n_buckets) /* Return true if CANDIDATE is a prime number. CANDIDATE should be an odd number at least equal to 11. */ -static int +static bool is_prime (unsigned long candidate) { unsigned long divisor = 3; @@ -468,15 +468,14 @@ check_tuning (Hash_table *table) return false; } -/* Allocate and return a new hash table, or NULL upon failure. The - initial number of buckets is automatically selected so as to _guarantee_ that - you may insert at least CANDIDATE different user entries before any growth - of the hash table size occurs. So, if have a reasonably tight a-priori - upper bound on the - number of entries you intend to insert in the hash table, you may save some - table memory and insertion time, by specifying it here. If the - IS_N_BUCKETS field of the TUNING structure is true, the CANDIDATE argument - has its meaning changed to the wanted number of buckets. +/* Allocate and return a new hash table, or NULL upon failure. The initial + number of buckets is automatically selected so as to _guarantee_ that you + may insert at least CANDIDATE different user entries before any growth of + the hash table size occurs. So, if have a reasonably tight a-priori upper + bound on the number of entries you intend to insert in the hash table, you + may save some table memory and insertion time, by specifying it here. If + the IS_N_BUCKETS field of the TUNING structure is true, the CANDIDATE + argument has its meaning changed to the wanted number of buckets. TUNING points to a structure of user-supplied values, in case some fine tuning is wanted over the default behavior of the hasher. If TUNING is @@ -769,8 +768,8 @@ hash_find_entry (Hash_table *table, const void *entry, /* For an already existing hash table, change the number of buckets through specifying CANDIDATE. The contents of the hash table are preserved. The - new number of buckets is automatically selected so as to _guarantee_ that the - table may receive at least CANDIDATE different user entries, including + new number of buckets is automatically selected so as to _guarantee_ that + the table may receive at least CANDIDATE different user entries, including those already in the table, before any other growth of the hash table size occurs. If TUNING->IS_N_BUCKETS is true, then CANDIDATE specifies the exact number of buckets desired. */ diff --git a/src/html.c b/src/html.c index b0044d1..c202ef9 100644 --- a/src/html.c +++ b/src/html.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -418,9 +418,7 @@ init_ucs2_html (RECODE_STEP step, unsigned mask) { Hash_table *table; - RECODE_OUTER outer = request->outer; struct ucs2_to_string const *cursor; - bool done; if (before_options || after_options) return false; @@ -446,7 +444,8 @@ init_ucs2_html_v11 (RECODE_STEP step, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { - init_ucs2_html (step, request, before_options, after_options, V11); + return + init_ucs2_html (step, request, before_options, after_options, V11); } static bool @@ -455,7 +454,8 @@ init_ucs2_html_v20 (RECODE_STEP step, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { - init_ucs2_html (step, request, before_options, after_options, V20); + return + init_ucs2_html (step, request, before_options, after_options, V20); } static bool @@ -464,7 +464,8 @@ init_ucs2_html_v27 (RECODE_STEP step, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { - init_ucs2_html (step, request, before_options, after_options, V27); + return + init_ucs2_html (step, request, before_options, after_options, V27); } static bool @@ -473,7 +474,8 @@ init_ucs2_html_v32 (RECODE_STEP step, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { - init_ucs2_html (step, request, before_options, after_options, V32); + return + init_ucs2_html (step, request, before_options, after_options, V32); } static bool @@ -482,7 +484,8 @@ init_ucs2_html_v40 (RECODE_STEP step, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { - init_ucs2_html (step, request, before_options, after_options, V40); + return + init_ucs2_html (step, request, before_options, after_options, V40); } /*-----------------. @@ -514,7 +517,7 @@ transform_ucs2_html (RECODE_SUBTASK subtask) } put_byte (';', subtask); } - else if (value < 32 && value != '\n' && value != '\t' || value >= 127) + else if ((value < 32 && value != '\n' && value != '\t') || value >= 127) { unsigned divider = 10000; @@ -584,9 +587,7 @@ init_html_ucs2 (RECODE_STEP step, unsigned mask) { Hash_table *table; - RECODE_OUTER outer = request->outer; struct ucs2_to_string const *cursor; - bool done; if (before_options || after_options) return false; @@ -612,7 +613,8 @@ init_html_v11_ucs2 (RECODE_STEP step, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { - init_html_ucs2 (step, request, before_options, after_options, V11); + return + init_html_ucs2 (step, request, before_options, after_options, V11); } static bool @@ -621,7 +623,8 @@ init_html_v20_ucs2 (RECODE_STEP step, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { - init_html_ucs2 (step, request, before_options, after_options, V20); + return + init_html_ucs2 (step, request, before_options, after_options, V20); } static bool @@ -630,7 +633,8 @@ init_html_v27_ucs2 (RECODE_STEP step, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { - init_html_ucs2 (step, request, before_options, after_options, V27); + return + init_html_ucs2 (step, request, before_options, after_options, V27); } static bool @@ -639,7 +643,8 @@ init_html_v32_ucs2 (RECODE_STEP step, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { - init_html_ucs2 (step, request, before_options, after_options, V32); + return + init_html_ucs2 (step, request, before_options, after_options, V32); } static bool @@ -648,7 +653,8 @@ init_html_v40_ucs2 (RECODE_STEP step, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { - init_html_ucs2 (step, request, before_options, after_options, V40); + return + init_html_ucs2 (step, request, before_options, after_options, V40); } /*-----------------. diff --git a/src/ibmpc.c b/src/ibmpc.c index 44ac61e..0c01a78 100644 --- a/src/ibmpc.c +++ b/src/ibmpc.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -345,7 +345,7 @@ init_ibmpc_latin1 (RECODE_STEP step, bool module_ibmpc (RECODE_OUTER outer) { - RECODE_SYMBOL symbol; + RECODE_ALIAS alias; if (!declare_single (outer, "Latin-1", "IBM-PC", outer->quality_byte_to_variable, @@ -356,28 +356,29 @@ module_ibmpc (RECODE_OUTER outer) init_ibmpc_latin1, transform_ibmpc_latin1)) return false; - if (symbol = declare_alias (outer, "IBM-PC", "IBM-PC"), !symbol) + if (alias = declare_alias (outer, "IBM-PC", "IBM-PC"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "dos", "IBM-PC"), !symbol) + if (alias = declare_alias (outer, "dos", "IBM-PC"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "MSDOS", "IBM-PC"), !symbol) + if (alias = declare_alias (outer, "MSDOS", "IBM-PC"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "pc", "IBM-PC"), !symbol) + if (alias = declare_alias (outer, "pc", "IBM-PC"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - #if 0 /* FIXME! */ - declare_alias (outer, "IBM-PC", "ibm437"); + if (!declare_alias (outer, "IBM-PC", "ibm437")) + return false; #endif + return true; } diff --git a/src/iconqnx.c b/src/iconqnx.c index f18a455..9f36f90 100644 --- a/src/iconqnx.c +++ b/src/iconqnx.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/iconv.c b/src/iconv.c index 604c339..838468e 100644 --- a/src/iconv.c +++ b/src/iconv.c @@ -1,202 +1,46 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999-2000 Free Software Foundation, Inc. This file is part of the GNU ICONV Library. The GNU ICONV Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as + 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. The GNU ICONV Library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the GNU ICONV Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" -#include "libiconv.h" +#include "iconv.h" -/* Define our own notion of wchar_t, as UCS-4, according to ISO-10646-1. */ -#undef wchar_t -#define wchar_t unsigned int - -/* State used by a conversion. 0 denotes the initial state. */ -typedef unsigned int state_t; - -/* iconv_t is an opaque type. This is the real iconv_t type. */ -typedef struct conv_struct * conv_t; - -/* - * Data type for conversion multibyte -> unicode - */ -struct mbtowc_funcs { - int (*xxx_mbtowc) (conv_t conv, wchar_t *pwc, unsigned char const *s, int n); - /* - * int xxx_mbtowc (conv_t conv, wchar_t *pwc, unsigned char const *s, int n) - * converts the byte sequence starting at s to a wide character. Up to n bytes - * are available at s. n is >= 1. - * Result is number of bytes consumed (if a wide character was read), - * or 0 if invalid, or -1 if n too small, or -1-(number of bytes consumed) - * if only a shift sequence was read. - */ -}; +#if 0 /* - * Data type for conversion unicode -> multibyte + * Consider those system dependent encodings that are needed for the + * current system. */ -struct wctomb_funcs { - int (*xxx_wctomb) (conv_t conv, unsigned char *r, wchar_t wc, int n); - /* - * int xxx_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n) - * converts the wide character wc to the character set xxx, and stores the - * result beginning at r. Up to n bytes may be written at r. n is >= 1. - * Result is number of bytes written, or 0 if invalid, or -1 if n too small. - */ - int (*xxx_reset) (conv_t conv, unsigned char *r, int n); - /* - * int xxx_reset (conv_t conv, unsigned char *r, int n) - * stores a shift sequences returning to the initial state beginning at r. - * Up to n bytes may be written at r. n is >= 0. - * Result is number of bytes written, or -1 if n too small. - */ -}; +#ifdef _AIX +#define USE_AIX +#endif -/* Return code if invalid. (xxx_mbtowc, xxx_wctomb) */ -#define RET_ILSEQ 0 -/* Return code if only a shift sequence of n bytes was read. (xxx_mbtowc) */ -#define RET_TOOFEW(n) (-1-(n)) -/* Return code if output buffer is too small. (xxx_wctomb, xxx_reset) */ -#define RET_TOOSMALL -1 +#endif /* - * Contents of a conversion descriptor. + * Converters. */ -struct conv_struct { - /* Input (conversion multibyte -> unicode) */ - struct mbtowc_funcs ifuncs; - state_t istate; - /* Output (conversion unicode -> multibyte) */ - struct wctomb_funcs ofuncs; - state_t ostate; - /* Operation flags */ - int transliterate; -}; +#include "converters.h" /* - * Include all the converters. + * Transliteration tables. */ - -#include "ascii.h" - -/* General multi-byte encodings */ -#include "utf8.h" -#include "ucs2.h" -#include "ucs4.h" -#include "utf16.h" -#include "utf7.h" -#include "ucs2internal.h" -#include "ucs2swapped.h" -#include "ucs4internal.h" -#include "ucs4swapped.h" -#include "java.h" - -/* 8-bit encodings */ -#include "iso8859_1.h" -#include "iso8859_2.h" -#include "iso8859_3.h" -#include "iso8859_4.h" -#include "iso8859_5.h" -#include "iso8859_6.h" -#include "iso8859_7.h" -#include "iso8859_8.h" -#include "iso8859_9.h" -#include "iso8859_10.h" -#include "iso8859_13.h" -#include "iso8859_14.h" -#include "iso8859_15.h" -#include "koi8_r.h" -#include "koi8_u.h" -#include "koi8_ru.h" -#include "cp1250.h" -#include "cp1251.h" -#include "cp1252.h" -#include "cp1253.h" -#include "cp1254.h" -#include "cp1255.h" -#include "cp1256.h" -#include "cp1257.h" -#include "cp1258.h" -#include "cp850.h" -#include "cp866.h" -#include "mac_roman.h" -#include "mac_centraleurope.h" -#include "mac_iceland.h" -#include "mac_croatian.h" -#include "mac_romania.h" -#include "mac_cyrillic.h" -#include "mac_ukraine.h" -#include "mac_greek.h" -#include "mac_turkish.h" -#include "mac_hebrew.h" -#include "mac_arabic.h" -#include "mac_thai.h" -#include "hp_roman8.h" -#include "nextstep.h" -#include "armscii_8.h" -#include "georgian_academy.h" -#include "georgian_ps.h" -#include "mulelao.h" -#include "cp1133.h" -#include "tis620.h" -#include "cp874.h" -#include "viscii.h" -#include "tcvn.h" - -/* CJK character sets [CCS = coded character set] [CJKV.INF chapter 3] */ - -typedef struct { - unsigned short indx; /* index into big table */ - unsigned short used; /* bitmask of used entries */ -} Summary16; - -#include "jisx0201.h" -#include "jisx0208.h" -#include "jisx0212.h" - -#include "gb2312.h" -/*#include "gb12345.h"*/ -#include "gbk.h" -#include "cns11643.h" -#include "big5.h" - -#include "ksc5601.h" -#include "johab_hangul.h" -#include "johab_decomp.h" - -/* CJK encodings [CES = character encoding scheme] [CJKV.INF chapter 4] */ - -#include "euc_jp.h" -#include "sjis.h" -#include "cp932.h" -#include "iso2022_jp.h" -#include "iso2022_jp1.h" -#include "iso2022_jp2.h" - -#include "euc_cn.h" -#include "ces_gbk.h" -#include "iso2022_cn.h" -#include "iso2022_cnext.h" -#include "hz.h" -#include "euc_tw.h" -#include "ces_big5.h" -#include "cp950.h" - -#include "euc_kr.h" -#include "johab.h" -#include "iso2022_kr.h" +#include "cjk_variants.h" +#include "translit.h" /* * Table of all supported encodings. @@ -204,18 +48,26 @@ typedef struct { struct encoding { struct mbtowc_funcs ifuncs; /* conversion multibyte -> unicode */ struct wctomb_funcs ofuncs; /* conversion unicode -> multibyte */ + int oflags; /* flags for unicode -> multibyte conversion */ }; enum { #define DEFENCODING(xxx_names,xxx,xxx_ifuncs,xxx_ofuncs1,xxx_ofuncs2) \ ei_##xxx , #include "encodings.def" +#ifdef USE_AIX +#include "encodings_aix.def" +#endif #undef DEFENCODING ei_for_broken_compilers_that_dont_like_trailing_commas }; +#include "flags.h" static struct encoding const all_encodings[] = { #define DEFENCODING(xxx_names,xxx,xxx_ifuncs,xxx_ofuncs1,xxx_ofuncs2) \ - { xxx_ifuncs, xxx_ofuncs1,xxx_ofuncs2 }, + { xxx_ifuncs, xxx_ofuncs1,xxx_ofuncs2, ei_##xxx##_oflags }, #include "encodings.def" +#ifdef USE_AIX +#include "encodings_aix.def" +#endif #undef DEFENCODING }; @@ -228,6 +80,34 @@ static struct encoding const all_encodings[] = { */ #include "aliases.h" +/* + * System dependent alias lookup function. + * Defines + * const struct alias * aliases2_lookup (const char *str); + */ +#if defined(USE_AIX) /* || ... */ +static struct alias sysdep_aliases[] = { +#ifdef USE_AIX +#include "aliases_aix.h" +#endif +}; +#ifdef __GNUC__ +__inline +#endif +const struct alias * +aliases2_lookup (register const char *str) +{ + struct alias * ptr; + unsigned int count; + for (ptr = sysdep_aliases, count = sizeof(sysdep_aliases)/sizeof(sysdep_aliases[0]); count > 0; ptr++, count--) + if (!strcmp(str,ptr->name)) + return ptr; + return NULL; +} +#else +#define aliases2_lookup(str) NULL +#endif + #if 0 /* Like !strcasecmp, except that the both strings can be assumed to be ASCII and the first string can be assumed to be in uppercase. */ @@ -281,9 +161,14 @@ iconv_t iconv_open (const char* tocode, const char* fromcode) goto invalid; } ap = aliases_lookup(buf,bp-buf); - if (ap == NULL) - goto invalid; + if (ap == NULL) { + ap = aliases2_lookup(buf); + if (ap == NULL) + goto invalid; + } + cd->oindex = ap->encoding_index; cd->ofuncs = all_encodings[ap->encoding_index].ofuncs; + cd->oflags = all_encodings[ap->encoding_index].oflags; /* Search fromcode in the table. */ for (cp = fromcode, bp = buf, count = MAX_WORD_LENGTH+1; ; cp++, bp++) { unsigned char c = * (unsigned char *) cp; @@ -298,8 +183,12 @@ iconv_t iconv_open (const char* tocode, const char* fromcode) goto invalid; } ap = aliases_lookup(buf,bp-buf); - if (ap == NULL) - goto invalid; + if (ap == NULL) { + ap = aliases2_lookup(buf); + if (ap == NULL) + goto invalid; + } + cd->iindex = ap->encoding_index; cd->ifuncs = all_encodings[ap->encoding_index].ifuncs; /* Initialize the states. */ memset(&cd->istate,'\0',sizeof(state_t)); @@ -326,7 +215,8 @@ size_t iconv (iconv_t icd, return 0; } else { if (cd->ofuncs.xxx_reset) { - int outcount = cd->ofuncs.xxx_reset(cd,*outbuf,*outbytesleft); + int outcount = + cd->ofuncs.xxx_reset(cd, (unsigned char *) *outbuf, *outbytesleft); if (outcount < 0) { errno = E2BIG; return -1; @@ -365,16 +255,158 @@ size_t iconv (iconv_t icd, incount = -1-incount; } else { /* Case 4: k bytes read, making up a wide character */ + if (outleft == 0) { + errno = E2BIG; + result = -1; + break; + } outcount = cd->ofuncs.xxx_wctomb(cd,outptr,wc,outleft); - if (outcount == 0) { - /* This is not optimal. Transliteration would be better. */ - outcount = cd->ofuncs.xxx_wctomb(cd,outptr,0xFFFD,outleft); - if (outcount == 0) { - errno = EILSEQ; - result = -1; - break; + if (outcount != 0) + goto outcount_ok; + /* Try transliteration. */ + result++; + if (cd->transliterate) { + if (cd->oflags & HAVE_HANGUL_JAMO) { + /* Decompose Hangul into Jamo. Use double-width Jamo (contained + in all Korean encodings and ISO-2022-JP-2), not half-width Jamo + (contained in Unicode only). */ + wchar_t buf[3]; + int ret = johab_hangul_decompose(cd,buf,wc); + if (ret != RET_ILSEQ) { + /* we know 1 <= ret <= 3 */ + state_t backup_state = cd->ostate; + unsigned char* backup_outptr = outptr; + size_t backup_outleft = outleft; + int i, sub_outcount; + for (i = 0; i < ret; i++) { + if (outleft == 0) { + sub_outcount = RET_TOOSMALL; + goto johab_hangul_failed; + } + sub_outcount = cd->ofuncs.xxx_wctomb(cd,outptr,buf[i],outleft); + if (sub_outcount <= 0) + goto johab_hangul_failed; + if (!(sub_outcount <= outleft)) abort(); + outptr += sub_outcount; outleft -= sub_outcount; + } + goto char_done; + johab_hangul_failed: + cd->ostate = backup_state; + outptr = backup_outptr; + outleft = backup_outleft; + if (sub_outcount < 0) { + errno = E2BIG; + result = -1; + break; + } + } + } + { + /* Try to use a variant, but postfix it with + U+303E IDEOGRAPHIC VARIATION INDICATOR + (cf. Ken Lunde's "CJKV information processing", p. 188). */ + int indx = -1; + if (wc == 0x3006) + indx = 0; + else if (wc == 0x30f6) + indx = 1; + else if (wc >= 0x4e00 && wc < 0xa000) + indx = cjk_variants_indx[wc-0x4e00]; + if (indx >= 0) { + for (;; indx++) { + wchar_t buf[2]; + unsigned short variant = cjk_variants[indx]; + unsigned short last = variant & 0x8000; + variant &= 0x7fff; + variant += 0x3000; + buf[0] = variant; buf[1] = 0x303e; + { + state_t backup_state = cd->ostate; + unsigned char* backup_outptr = outptr; + size_t backup_outleft = outleft; + int i, sub_outcount; + for (i = 0; i < 2; i++) { + if (outleft == 0) { + sub_outcount = RET_TOOSMALL; + goto variant_failed; + } + sub_outcount = cd->ofuncs.xxx_wctomb(cd,outptr,buf[i],outleft); + if (sub_outcount <= 0) + goto variant_failed; + if (!(sub_outcount <= outleft)) abort(); + outptr += sub_outcount; outleft -= sub_outcount; + } + goto char_done; + variant_failed: + cd->ostate = backup_state; + outptr = backup_outptr; + outleft = backup_outleft; + if (sub_outcount < 0) { + errno = E2BIG; + result = -1; + break; + } + } + if (last) + break; + } + } + } + if (wc >= 0x2018 && wc <= 0x201a) { + /* Special case for quotation marks 0x2018, 0x2019, 0x201a */ + wchar_t substitute = + (cd->oflags & HAVE_QUOTATION_MARKS + ? (wc == 0x201a ? 0x2018 : wc) + : (cd->oflags & HAVE_ACCENTS + ? (wc==0x2019 ? 0x00b4 : 0x0060) /* use accents */ + : 0x0027 /* use apostrophe */ + ) ); + outcount = cd->ofuncs.xxx_wctomb(cd,outptr,substitute,outleft); + if (outcount != 0) + goto outcount_ok; + } + { + /* Use the transliteration table. */ + int indx = translit_index(wc); + if (indx >= 0) { + const unsigned char * cp = &translit_data[indx]; + unsigned int num = *cp++; + state_t backup_state = cd->ostate; + unsigned char* backup_outptr = outptr; + size_t backup_outleft = outleft; + unsigned int i; + int sub_outcount; + for (i = 0; i < num; i++) { + if (outleft == 0) { + sub_outcount = RET_TOOSMALL; + goto translit_failed; + } + sub_outcount = cd->ofuncs.xxx_wctomb(cd,outptr,cp[i],outleft); + if (sub_outcount <= 0) + goto translit_failed; + if (!(sub_outcount <= outleft)) abort(); + outptr += sub_outcount; outleft -= sub_outcount; + } + goto char_done; + translit_failed: + cd->ostate = backup_state; + outptr = backup_outptr; + outleft = backup_outleft; + if (sub_outcount < 0) { + errno = E2BIG; + result = -1; + break; + } + } } } + outcount = cd->ofuncs.xxx_wctomb(cd,outptr,0xFFFD,outleft); + if (outcount != 0) + goto outcount_ok; + errno = EILSEQ; + result = -1; + break; + outcount_ok: if (outcount < 0) { errno = E2BIG; result = -1; @@ -382,6 +414,8 @@ size_t iconv (iconv_t icd, } if (!(outcount <= outleft)) abort(); outptr += outcount; outleft -= outcount; + char_done: + ; } if (!(incount <= inleft)) abort(); inptr += incount; inleft -= incount; @@ -400,3 +434,26 @@ int iconv_close (iconv_t icd) free(cd); return 0; } + +#ifndef LIBICONV_PLUG + +int iconvctl (iconv_t icd, int request, void* argument) +{ + conv_t cd = (conv_t) icd; + switch (request) { + case ICONV_TRIVIALP: + *(int *)argument = (cd->iindex == cd->oindex ? 1 : 0); + return 0; + case ICONV_GET_TRANSLITERATE: + *(int *)argument = cd->transliterate; + return 0; + case ICONV_SET_TRANSLITERATE: + cd->transliterate = (*(const int *)argument ? 1 : 0); + return 0; + default: + errno = EINVAL; + return -1; + } +} + +#endif diff --git a/src/inisteps.h b/src/inisteps.h index 2ba4d75..a365a01 100644 --- a/src/inisteps.h +++ b/src/inisteps.h @@ -4,13 +4,13 @@ if (!module_atarist (outer)) return false; if (!module_bangbang (outer)) return false; if (!module_cdcnos (outer)) return false; - if (!module_debug (outer)) return false; if (!module_ebcdic (outer)) return false; if (!module_ibmpc (outer)) return false; if (!module_iconqnx (outer)) return false; if (!module_latin1_ascii (outer)) return false; if (!module_mule (outer)) return false; if (!module_strips (outer)) return false; + if (!module_testdump (outer)) return false; if (!module_ucs (outer)) return false; if (!module_utf16 (outer)) return false; if (!module_utf7 (outer)) return false; @@ -20,9 +20,9 @@ if (!module_flat (outer)) return false; if (!module_html (outer)) return false; if (!module_latin1_latex (outer)) return false; - if (!module_latin1_texinfo (outer)) return false; if (!module_latin1_texte (outer)) return false; if (!module_rfc1345 (outer)) return false; + if (!module_texinfo (outer)) return false; if (!module_base64 (outer)) return false; if (!module_dump (outer)) return false; if (!module_endline (outer)) return false; diff --git a/src/lat1asci.c b/src/lat1asci.c index 1c663ec..cd3b9e8 100644 --- a/src/lat1asci.c +++ b/src/lat1asci.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/lat1ltex.c b/src/lat1ltex.c index dfbf644..056b669 100644 --- a/src/lat1ltex.c +++ b/src/lat1ltex.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/lat1texi.c b/src/lat1texi.c deleted file mode 100644 index 4902cc9..0000000 --- a/src/lat1texi.c +++ /dev/null @@ -1,224 +0,0 @@ -/* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 97, 98, 99 Free Software Foundation, Inc. - Contributed by François Pinard , 1988. - - The `recode' Library 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 of the - License, or (at your option) any later version. - - The `recode' Library is distributed in the hope that 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 the `recode' Library; see the file `COPYING.LIB'. - If not, write to the Free Software Foundation, Inc., 59 Temple Place - - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "common.h" - -static const char *const translation_table[128] = - { - NULL, /* 128 */ - NULL, /* 129 */ - NULL, /* 130 */ - NULL, /* 131 */ - NULL, /* 132 */ - NULL, /* 133 */ - NULL, /* 134 */ - NULL, /* 135 */ - NULL, /* 136 */ - NULL, /* 137 */ - NULL, /* 138 */ - NULL, /* 139 */ - NULL, /* 140 */ - NULL, /* 141 */ - NULL, /* 142 */ - NULL, /* 143 */ - NULL, /* 144 */ - NULL, /* 145 */ - NULL, /* 146 */ - NULL, /* 147 */ - NULL, /* 148 */ - NULL, /* 149 */ - NULL, /* 150 */ - NULL, /* 151 */ - NULL, /* 152 */ - NULL, /* 153 */ - NULL, /* 154 */ - NULL, /* 155 */ - NULL, /* 156 */ - NULL, /* 157 */ - NULL, /* 158 */ - NULL, /* 159 */ - - " ", /* 160 no-break space */ - NULL, /* 161 inverted exclamation mark */ - NULL, /* 162 cent sign */ - NULL, /* 163 pound sign */ - NULL, /* 164 currency sign */ - NULL, /* 165 yen sign */ - NULL, /* 166 broken bar */ - NULL, /* 167 paragraph sign, section sign */ - NULL, /* 168 diaeresis */ - NULL, /* 169 copyright sign */ - NULL, /* 170 feminine ordinal indicator */ - "``", /* 171 left angle quotation mark */ - NULL, /* 172 not sign */ - NULL, /* 173 soft hyphen */ - NULL, /* 174 registered trade mark sign */ - NULL, /* 175 macron */ - NULL, /* 176 degree sign */ - NULL, /* 177 plus-minus sign */ - NULL, /* 178 superscript two */ - NULL, /* 179 superscript three */ - NULL, /* 180 acute accent */ - NULL, /* 181 small greek mu, micro sign */ - NULL, /* 182 pilcrow sign */ - NULL, /* 183 middle dot */ - NULL, /* 184 cedilla */ - NULL, /* 185 superscript one */ - NULL, /* 186 masculine ordinal indicator */ - "''", /* 187 right angle quotation mark */ - NULL, /* 188 vulgar fraction one quarter */ - NULL, /* 189 vulgar fraction one half */ - NULL, /* 190 vulgar fraction three quarters */ - NULL, /* 191 inverted question mark */ - "@`A", /* 192 capital A with grave accent */ - NULL, /* 193 capital A with acute accent */ - "@^A", /* 194 capital A with circumflex accent */ - NULL, /* 195 capital A with tilde */ - "@\"A", /* 196 capital A diaeresis */ - NULL, /* 197 capital A with ring above */ - NULL, /* 198 capital diphthong A with E */ - "@ptexc{C}", /* 199 capital C with cedilla */ - "@`E", /* 200 capital E with grave accent */ - "@\'E", /* 201 capital E with acute accent */ - "@^E", /* 202 capital E with circumflex accent */ - "@\"E", /* 203 capital E with diaeresis */ - NULL, /* 204 capital I with grave accent */ - NULL, /* 205 capital I with acute accent */ - "@^I", /* 206 capital I with circumflex accent */ - "@\"I", /* 207 capital I with diaeresis */ - NULL, /* 208 capital icelandic ETH */ - NULL, /* 209 capital N with tilde */ - "@`O", /* 210 capital O with grave accent */ - NULL, /* 211 capital O with acute accent */ - "@^O", /* 212 capital O with circumflex accent */ - NULL, /* 213 capital O with tilde */ - "@\"O", /* 214 capital O with diaeresis */ - NULL, /* 215 multiplication sign */ - NULL, /* 216 capital O with oblique stroke */ - "@`U", /* 217 capital U with grave accent */ - NULL, /* 218 capital U with acute accent */ - "@^U", /* 219 capital U with circumflex accent */ - "@\"U", /* 220 capital U with diaeresis */ - NULL, /* 221 capital Y with acute accent */ - NULL, /* 222 capital icelandic THORN */ - NULL, /* 223 small german sharp s */ - "@`a", /* 224 small a with grave accent */ - NULL, /* 225 small a with acute accent */ - "@^a", /* 226 small a with circumflex accent */ - NULL, /* 227 small a with tilde */ - "@\"a", /* 228 small a with diaeresis */ - NULL, /* 229 small a with ring above */ - NULL, /* 230 small diphthong a with e */ - "@ptexc{c}", /* 231 small c with cedilla */ - "@`e", /* 232 small e with grave accent */ - "@\'e", /* 233 small e with acute accent */ - "@^e", /* 234 small e with circumflex accent */ - "@\"e", /* 235 small e with diaeresis */ - NULL, /* 236 small i with grave accent */ - NULL, /* 237 small i with acute accent */ - "@^@ptexi{}", /* 238 small i with circumflex accent */ - "@\"@ptexi{}", /* 239 small i with diaeresis */ - NULL, /* 240 small icelandic eth */ - NULL, /* 241 small n with tilde */ - "@`o", /* 242 small o with grave accent */ - NULL, /* 243 small o with acute accent */ - "@^o", /* 244 small o with circumflex accent */ - NULL, /* 245 small o with tilde */ - "@\"o", /* 246 small o with diaeresis */ - NULL, /* 247 division sign */ - NULL, /* 248 small o with oblique stroke */ - "@`u", /* 249 small u with grave accent */ - NULL, /* 250 small u with acute accent */ - "@^u", /* 251 small u with circumflex accent */ - "@\"u", /* 252 small u with diaeresis */ - NULL, /* 253 small y with acute accent */ - NULL, /* 254 small icelandic thorn */ - NULL, /* 255 small y with diaeresis */ - }; - -static bool -init_latin1_texinfo (RECODE_STEP step, - RECODE_CONST_REQUEST request, - RECODE_CONST_OPTION_LIST before_options, - RECODE_CONST_OPTION_LIST after_options) -{ - RECODE_OUTER outer = request->outer; - - unsigned rewritten; /* number of rewritten translations */ - const char **table; /* allocated structure, including pool */ - char *pool; /* cursor in character pool */ - unsigned counter; /* general purpose counter */ - - if (before_options || after_options) - return false; - - /* The algorithm for proper processing of -c option depends on the fact - that quotes to be changed in colons are exactly those, in strings - from translation_table, which are in second position while the - string is two characters in length. This is sufficient for now. */ - - rewritten = 0; - if (request->diaeresis_char != '"') - for (counter = 128; counter < 256; counter++) - if (translation_table[counter - 128] - && translation_table[counter - 128][1] == '"' - && translation_table[counter - 128][2] == NUL) - rewritten++; - - if (!ALLOC_SIZE (table, sizeof (char *) * 256 + 2 * 128 + 3 * rewritten, - const char *)) - return false; - pool = (char *) (table + 256); - - for (counter = 0; counter < 128; counter++) - { - table[counter] = pool; - *pool++ = counter; - *pool++ = NUL; - } - - for (; counter < 256; counter++) - if (request->diaeresis_char != '"' - && translation_table[counter - 128] - && translation_table[counter - 128][1] == '"' - && translation_table[counter - 128][2] == NUL) - { - table[counter] = pool; - *pool++ = translation_table[counter - 128][0]; - *pool++ = request->diaeresis_char; - *pool++ = NUL; - } - else - table[counter] = translation_table[counter - 128]; - - step->step_type = RECODE_BYTE_TO_STRING; - step->step_table = table; - return true; -} - -bool -module_latin1_texinfo (RECODE_OUTER outer) -{ - return - declare_single (outer, "Latin-1", "Texinfo", - outer->quality_byte_to_variable, - init_latin1_texinfo, transform_byte_to_variable) - && declare_alias (outer, "texi", "Texinfo") - && declare_alias (outer, "ti", "Texinfo"); -} diff --git a/src/lat1txte.c b/src/lat1txte.c index 2044fae..f39a1bc 100644 --- a/src/lat1txte.c +++ b/src/lat1txte.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/libiconv.c b/src/libiconv.c index 45d0a62..943ac1d 100644 --- a/src/libiconv.c +++ b/src/libiconv.c @@ -1,23 +1,24 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1999 Free Software Foundation, Inc. + Copyright © 1999, 2000 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" +#include "iconv.h" #include "libiconv.h" /*-----------------------------------------. @@ -27,8 +28,7 @@ #define LIBICONV_BUFFER_SIZE 2048 static bool -wrapped_transform (iconv_t conversion, - RECODE_SUBTASK subtask) +wrapped_transform (iconv_t conversion, RECODE_SUBTASK subtask) { int input_char = get_byte (subtask); char input_buffer[LIBICONV_BUFFER_SIZE]; @@ -132,12 +132,12 @@ module_libiconv (RECODE_OUTER outer) while (*cursor) { - RECODE_SYMBOL symbol - = find_symbol (outer, *cursor, SYMBOL_FIND_AS_CHARSET); + RECODE_ALIAS alias + = find_alias (outer, *cursor, ALIAS_FIND_AS_CHARSET); - if (symbol) + if (alias) { - charset_name = symbol->charset->name; + charset_name = alias->symbol->name; break; } cursor++; @@ -152,12 +152,12 @@ module_libiconv (RECODE_OUTER outer) for (cursor = aliases; *cursor; cursor++) { - RECODE_SYMBOL symbol - = find_symbol (outer, *cursor, SYMBOL_FIND_AS_CHARSET); + RECODE_ALIAS alias + = find_alias (outer, *cursor, ALIAS_FIND_AS_CHARSET); /* If there is a charset contradiction, call declare_alias nevertheless, as the error processing will occur there. */ - if (!symbol || symbol->charset->name != charset_name) + if (!alias || alias->symbol->name != charset_name) if (!declare_alias (outer, *cursor, charset_name)) return false; } diff --git a/src/libiconv.h b/src/libiconv.h index ad9737c..2f24c2e 100644 --- a/src/libiconv.h +++ b/src/libiconv.h @@ -1,26 +1,26 @@ /* DO NOT MODIFY THIS FILE! It was generated by `recode/doc/tables.py'. */ /* Conversion of files between different charsets and surfaces. - Copyright © 1999 Free Software Foundation, Inc. + Copyright © 1999, 2000 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This is derived from Bruno Haible's `libiconv' package. */ -static const char *iconv_name_list[350] = +static const char *iconv_name_list[426] = { "US-ASCII", "ASCII", @@ -31,31 +31,37 @@ static const char *iconv_name_list[350] = "CP367", "IBM367", "US", - "CSASCII", NULL, + "csASCII", + "ISO646.1991-IRV", NULL, /* General multi-byte encodings. */ - "UTF-8", NULL, + "UTF-8", + "UTF8", NULL, "UCS-2", "ISO-10646-UCS-2", - "CSUNICODE", NULL, + "csUnicode", NULL, + "UCS-2BE", + "UNICODEBIG", + "UNICODE-1-1", + "csUnicode11", NULL, + "UCS-2LE", + "UNICODELITTLE", NULL, "UCS-4", "ISO-10646-UCS-4", - "CSUCS4", NULL, + "csUCS4", NULL, + "UCS-4BE", NULL, + "UCS-4LE", NULL, "UTF-16", NULL, + "UTF-16BE", NULL, + "UTF-16LE", NULL, "UTF-7", "UNICODE-1-1-UTF-7", - "CSUNICODE11UTF7", NULL, + "csUnicode11UTF7", NULL, "UCS-2-INTERNAL", NULL, "UCS-2-SWAPPED", NULL, - "UCS-2-BE", - "UNICODEBIG", NULL, - "UCS-2-LE", - "UNICODELITTLE", NULL, "UCS-4-INTERNAL", NULL, "UCS-4-SWAPPED", NULL, - "UCS-4-BE", NULL, - "UCS-4-LE", NULL, "JAVA", NULL, /* Standard 8-bit encodings. */ @@ -68,34 +74,44 @@ static const char *iconv_name_list[350] = "IBM819", "LATIN1", "L1", - "CSISOLATIN1", NULL, + "csISOLatin1", + "ISO8859-1", + "ISO8859_1", NULL, "ISO-8859-2", "ISO_8859-2", "ISO_8859-2:1987", "ISO-IR-101", "LATIN2", "L2", - "CSISOLATIN2", NULL, + "csISOLatin2", + "ISO8859-2", + "ISO8859_2", NULL, "ISO-8859-3", "ISO_8859-3", "ISO_8859-3:1988", "ISO-IR-109", "LATIN3", "L3", - "CSISOLATIN3", NULL, + "csISOLatin3", + "ISO8859-3", + "ISO8859_3", NULL, "ISO-8859-4", "ISO_8859-4", "ISO_8859-4:1988", "ISO-IR-110", "LATIN4", "L4", - "CSISOLATIN4", NULL, + "csISOLatin4", + "ISO8859-4", + "ISO8859_4", NULL, "ISO-8859-5", "ISO_8859-5", "ISO_8859-5:1988", "ISO-IR-144", "CYRILLIC", - "CSISOLATINCYRILLIC", NULL, + "csISOLatinCyrillic", + "ISO8859-5", + "ISO8859_5", NULL, "ISO-8859-6", "ISO_8859-6", "ISO_8859-6:1987", @@ -103,7 +119,9 @@ static const char *iconv_name_list[350] = "ECMA-114", "ASMO-708", "ARABIC", - "CSISOLATINARABIC", NULL, + "csISOLatinArabic", + "ISO8859-6", + "ISO8859_6", NULL, "ISO-8859-7", "ISO_8859-7", "ISO_8859-7:1987", @@ -112,27 +130,34 @@ static const char *iconv_name_list[350] = "ELOT_928", "GREEK8", "GREEK", - "CSISOLATINGREEK", NULL, + "csISOLatinGreek", + "ISO8859-7", + "ISO8859_7", NULL, "ISO-8859-8", "ISO_8859-8", "ISO_8859-8:1988", "ISO-IR-138", "HEBREW", - "CSISOLATINHEBREW", NULL, + "csISOLatinHebrew", + "ISO8859-8", + "ISO8859_8", NULL, "ISO-8859-9", "ISO_8859-9", "ISO_8859-9:1989", "ISO-IR-148", "LATIN5", "L5", - "CSISOLATIN5", NULL, + "csISOLatin5", + "ISO8859-9", + "ISO8859_9", NULL, "ISO-8859-10", "ISO_8859-10", "ISO_8859-10:1992", "ISO-IR-157", "LATIN6", "L6", - "CSISOLATIN6", NULL, + "csISOLatin6", + "ISO8859-10", NULL, "ISO-8859-13", "ISO_8859-13", "ISO-IR-179", @@ -141,13 +166,19 @@ static const char *iconv_name_list[350] = "ISO-8859-14", "ISO_8859-14", "ISO_8859-14:1998", + "ISO-IR-199", "LATIN8", "L8", NULL, "ISO-8859-15", "ISO_8859-15", - "ISO_8859-15:1998", NULL, + "ISO_8859-15:1998", + "ISO-IR-203", NULL, + "ISO-8859-16", + "ISO_8859-16", + "ISO_8859-16:2000", + "ISO-IR-226", NULL, "KOI8-R", - "CSKOI8R", NULL, + "csKOI8R", NULL, "KOI8-U", NULL, "KOI8-RU", NULL, @@ -185,16 +216,18 @@ static const char *iconv_name_list[350] = "CP850", "IBM850", "850", - "CSPC850MULTILINGUAL", NULL, + "csPC850Multilingual", NULL, "CP866", "IBM866", "866", - "CSIBM866", NULL, + "csIBM866", NULL, /* Macintosh 8-bit encodings. */ "MacRoman", - "Macintosh", NULL, + "Macintosh", + "MAC", + "csMacintosh", NULL, "MacCentralEurope", NULL, "MacIceland", NULL, "MacCroatian", NULL, @@ -212,7 +245,7 @@ static const char *iconv_name_list[350] = "HP-ROMAN8", "ROMAN8", "R8", - "CSHPROMAN8", NULL, + "csHPRoman8", NULL, "NEXTSTEP", NULL, /* Regional 8-bit encodings used for a single language. */ @@ -234,100 +267,118 @@ static const char *iconv_name_list[350] = "WINDOWS-874", NULL, "VISCII", "VISCII1.1-1", - "CSVISCII", NULL, + "csVISCII", NULL, "TCVN", "TCVN-5712", "TCVN5712-1", "TCVN5712-1:1993", NULL, - /* CJK character sets. */ + /* CJK character sets (not documented). */ + "JIS_C6220-1969-RO", + "ISO646-JP", + "ISO-IR-14", + "JP", + "csISO14JISC6220ro", NULL, "JIS_X0201", "JISX0201-1976", - "JISX0201.1976-0", "X0201", - "CSHALFWIDTHKATAKANA", NULL, + "csHalfWidthKatakana", + "JISX0201.1976-0", + "JIS0201", NULL, "JIS_X0208", - "JIS_X0208.1983-0", - "JIS_X0208.1983-1", "JIS_X0208-1983", "JIS_X0208-1990", + "JIS0208", + "X0208", + "ISO-IR-87", + "csISO87JISX0208", + "JISX0208.1983-0", + "JISX0208.1990-0", "JIS0208", NULL, "JIS_X0212", "JIS_X0212.1990-0", "JIS_X0212-1990", "X0212", "ISO-IR-159", - "CSISO159JISX02121990", NULL, + "csISO159JISX02121990", + "JISX0212.1990-0", + "JIS0212", NULL, + "GB_1988-80", + "ISO646-CN", + "ISO-IR-57", + "CN", + "csISO57GB1988", NULL, + "GB_2312-80", + "ISO-IR-58", + "csISO58GB231280", + "CHINESE", + "GB2312.1980-0", NULL, + "ISO-IR-165", + "CN-GB-ISOIR165", NULL, "KSC_5601", - "KSC5601.1987-0", "KS_C_5601-1987", "KS_C_5601-1989", "ISO-IR-149", - "CSKSC56011987", + "csKSC56011987", "KOREAN", - "CP949", NULL, + "KSC5601.1987-0", + "KSX1001:1992", NULL, /* CJK encodings. */ "EUC-JP", "EUCJP", - "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", - "CSEUCPKDFMTJAPANESE", NULL, + "Extended_UNIX_Code_Packed_Format_for_Japanese", + "csEUCPkdFmtJapanese", + "EUC_JP", NULL, "SJIS", "SHIFT_JIS", "SHIFT-JIS", "MS_KANJI", - "CSSHIFTJIS", NULL, + "csShiftJIS", NULL, "CP932", NULL, "ISO-2022-JP", - "CSISO2022JP", NULL, + "csISO2022JP", + "ISO2022JP", NULL, "ISO-2022-JP-1", NULL, "ISO-2022-JP-2", - "CSISO2022JP2", NULL, + "csISO2022JP2", NULL, "EUC-CN", "EUCCN", "GB2312", - "CSGB2312", NULL, + "CN-GB", + "csGB2312", + "EUC_CN", NULL, "GBK", "CP936", NULL, "ISO-2022-CN", - "CSISO2022CN", NULL, + "csISO2022CN", + "ISO2022CN", NULL, "ISO-2022-CN-EXT", NULL, "HZ", "HZ-GB-2312", NULL, "EUC-TW", "EUCTW", - "CSEUCTW", NULL, + "csEUCTW", + "EUC_TW", NULL, "BIG5", "BIG-5", "BIG-FIVE", "BIGFIVE", - "CSBIG5", NULL, + "CN-BIG5", + "csBig5", NULL, "CP950", NULL, "EUC-KR", "EUCKR", - "CSEUCKR", NULL, + "csEUCKR", + "EUC_KR", NULL, + "CP949", + "UHC", NULL, "JOHAB", "CP1361", NULL, "ISO-2022-KR", - "CSISO2022KR", NULL, + "csISO2022KR", + "ISO2022KR", NULL, NULL }; - -typedef void *iconv_t; -#ifndef EILSEQ -# define EILSEQ EINVAL -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -iconv_t iconv_open (const char *, const char *); -size_t iconv (iconv_t, const char **, size_t *, char **, size_t *); -extern int iconv_close (iconv_t cd); - -#ifdef __cplusplus -} -#endif diff --git a/src/ltexlat1.l b/src/ltexlat1.l index ec6d89e..88c3390 100644 --- a/src/ltexlat1.l +++ b/src/ltexlat1.l @@ -1,13 +1,13 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or + This library 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 of the License, or (at your option) any later version. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. diff --git a/src/main.c b/src/main.c index a8def10..a1d06ed 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,5 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 92, 93, 94, 96, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990,92,93,94,96,97,98,99,00 Free Software Foundation, Inc. François Pinard , 1990. This program is free software; you can redistribute it and/or modify it @@ -29,8 +29,10 @@ # include #endif -#if HAVE_UTIME_H -# include +#if HAVE_STRUCT_UTIMBUF +# if HAVE_UTIME_H +# include +# endif #else struct utimbuf @@ -60,7 +62,7 @@ static int show_help = 0; static int show_version = 0; /* If true, show a list of one or all known charsets, then exit. */ -static bool show_charsets = false; +static bool show_symbols = false; /* If true, dump all tables as a big C module. */ static bool freeze_tables = false; @@ -116,10 +118,10 @@ static const char *after_full_name; #endif /* Ordinals of list, BEFORE and AFTER charset. */ -static RECODE_CHARSET list_charset; +static RECODE_SYMBOL list_charset; #if 0 -static RECODE_CHARSET before_charset; -static RECODE_CHARSET after_charset; +static RECODE_SYMBOL before_charset; +static RECODE_SYMBOL after_charset; #endif /* Flag telling usage that we are decoding charsets. */ @@ -248,7 +250,7 @@ for the equivalent short option also. Similarly for optional arguments.\n\ fputs (_("\ \n\ Listings:\n\ - -l, --list[=FORMAT] list one or all known charsets\n\ + -l, --list[=FORMAT] list one or all known charsets and aliases\n\ -k, --known=PAIRS restrict charsets according to known PAIRS list\n\ -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n\ -F, --freeze-tables write out a C module holding all tables\n\ @@ -425,14 +427,14 @@ main (int argc, char *const *argv) break; case '\n': - switch (argmatch (optarg, sequence_strings)) + switch (argmatch (optarg, sequence_strings, NULL, 0)) { case -2: - error (0, 0, _("Ambiguous sequence `%s'"), optarg); + error (0, 0, _("Sequence `%s' is ambiguous"), optarg); usage (EXIT_FAILURE, 0); case -1: - error (0, 0, _("Unknown sequence `%s'"), optarg); + error (0, 0, _("Sequence `%s' is unknown"), optarg); usage (EXIT_FAILURE, 0); case 0: @@ -459,14 +461,14 @@ main (int argc, char *const *argv) case 'S': if (optarg) - switch (argmatch (optarg, language_strings)) + switch (argmatch (optarg, language_strings, NULL, 0)) { case -2: - error (0, 0, _("Ambiguous language `%s'"), optarg); + error (0, 0, _("Language `%s' is ambiguous"), optarg); usage (EXIT_FAILURE, 0); default: /* -1 */ - error (0, 0, _("Unknown language `%s'"), optarg); + error (0, 0, _("Language `%s' is unknown"), optarg); usage (EXIT_FAILURE, 0); case 0: @@ -517,14 +519,14 @@ main (int argc, char *const *argv) for (counter = 0; optarg[counter] != '/'; counter++) buffer[counter] = tolower (optarg[counter]); buffer[counter] = NUL; - switch (argmatch (buffer, language_strings)) + switch (argmatch (buffer, language_strings, NULL, 0)) { case -2: - error (0, 0, _("Ambiguous language `%s'"), buffer); + error (0, 0, _("Language `%s' is ambiguous"), buffer); usage (EXIT_FAILURE, 0); default: /* -1 */ - error (0, 0, _("Unknown language `%s'"), buffer); + error (0, 0, _("Language `%s' is unknown"), buffer); usage (EXIT_FAILURE, 0); case 0: @@ -553,16 +555,16 @@ main (int argc, char *const *argv) break; case 'l': - show_charsets = true; + show_symbols = true; if (optarg) - switch (argmatch (optarg, format_strings)) + switch (argmatch (optarg, format_strings, NULL, 0)) { case -2: - error (0, 0, _("Ambiguous format `%s'"), optarg); + error (0, 0, _("Format `%s' is ambiguous"), optarg); usage (EXIT_FAILURE, 0); case -1: - error (0, 0, _("Unknown format `%s'"), optarg); + error (0, 0, _("Format `%s' is unknown"), optarg); usage (EXIT_FAILURE, 0); case 0: @@ -620,6 +622,9 @@ main (int argc, char *const *argv) { printf ("Free %s %s\n", PACKAGE, VERSION); fputs (_("\ +Written by Franc,ois Pinard .\n"), + stdout); + fputs (_("\ \n\ Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"), stdout); @@ -627,11 +632,6 @@ Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"), This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), stdout); - fputs (_("\ -\n\ -Written by Franc,ois Pinard .\n"), - stdout); - exit (EXIT_SUCCESS); } @@ -664,52 +664,71 @@ Written by Franc,ois Pinard .\n"), if (ignored_name) { - RECODE_SYMBOL symbol - = find_symbol (outer, ignored_name, SYMBOL_FIND_AS_CHARSET); + RECODE_ALIAS alias + = find_alias (outer, ignored_name, ALIAS_FIND_AS_CHARSET); - if (!symbol) - usage (EXIT_FAILURE, 1); + if (!alias) + { + error (0, 0, _("Symbol `%s' is unknown"), ignored_name); + usage (EXIT_FAILURE, 1); + } - symbol->charset->ignore = true; + alias->symbol->ignore = true; } /* Process charset listing options. */ if (find_subsets) - if (find_and_report_subsets (outer)) - exit (EXIT_SUCCESS); - else - exit (EXIT_FAILURE); + { + if (find_and_report_subsets (outer)) + exit (EXIT_SUCCESS); + else + exit (EXIT_FAILURE); + } - if (show_charsets || charset_restrictions) + if (show_symbols || charset_restrictions) { if (charset_restrictions) if (!decode_known_pairs (outer, charset_restrictions)) - usage (EXIT_FAILURE, 0); + { + error (0, 0, "Could not understand `%s'", charset_restrictions); + usage (EXIT_FAILURE, 0); + } if (optind + 1 < argc) - usage (EXIT_FAILURE, 0); + { + error (0, 0, "Argument `%s' is extraneous", argv[optind]); + usage (EXIT_FAILURE, 0); + } /* Select a possible charset and a default format. */ if (optind < argc) { - RECODE_SYMBOL symbol - = find_symbol (outer, argv[optind], SYMBOL_FIND_AS_CHARSET); + RECODE_ALIAS alias + = find_alias (outer, argv[optind], ALIAS_FIND_AS_CHARSET); - if (!symbol) - usage (EXIT_FAILURE, 1); + if (!alias) + { + error (0, 0, _("Charset `%s' is unknown or ambiguous"), + argv[optind]); + usage (EXIT_FAILURE, 1); + } - list_charset = symbol->charset; + list_charset = alias->symbol; } else if (list_format != RECODE_NO_FORMAT || charset_restrictions) { - RECODE_SYMBOL symbol - = find_symbol (outer, NULL, SYMBOL_FIND_AS_CHARSET); + RECODE_ALIAS alias + = find_alias (outer, NULL, ALIAS_FIND_AS_CHARSET); - if (!symbol) - usage (EXIT_FAILURE, 1); + if (!alias) + { + error (0, 0, _("Charset `%s' is unknown or ambiguous"), + argv[optind]); + usage (EXIT_FAILURE, 1); + } - list_charset = symbol->charset; + list_charset = alias->symbol; } else list_charset = NULL; @@ -717,14 +736,14 @@ Written by Franc,ois Pinard .\n"), /* List the charset(s) appropriately. */ if (charset_restrictions) - list_all_charsets (outer, list_charset); + list_all_symbols (outer, list_charset); else if (list_charset) if (list_format == RECODE_FULL_FORMAT) list_full_charset (outer, list_charset); else list_concise_charset (outer, list_charset, list_format); else - list_all_charsets (outer, NULL); + list_all_symbols (outer, NULL); /* Then get out. */ @@ -734,7 +753,10 @@ Written by Franc,ois Pinard .\n"), /* Decode the REQUEST argument. */ if (optind + 1 > argc) - usage (EXIT_FAILURE, 0); + { + error (0, 0, _("Required argument is missing")); + usage (EXIT_FAILURE, 0); + } request = recode_new_request (outer); request->ascii_graphics = request_option.ascii_graphics; @@ -774,13 +796,13 @@ Written by Franc,ois Pinard .\n"), user_request = rewritten_request; if (!quiet_flag) - error (0, 0, _("Deprecated syntax, please prefer `%s'"), + error (0, 0, _("Syntax is deprecated, please prefer `%s'"), user_request); } } if (!recode_scan_request (request, user_request)) - error (EXIT_FAILURE, 0, _("Erroneous request `%s'"), user_request); + error (EXIT_FAILURE, 0, _("Request `%s' is erroneous"), user_request); } /* If we merely want source code, do it and get out. */ diff --git a/src/merged.c b/src/merged.c index ae5daf7..1670bd1 100644 --- a/src/merged.c +++ b/src/merged.c @@ -785,6 +785,7 @@ static char *yy_last_accepting_cpos; char *yytext; #define INITIAL 0 /* This file is generated automatically by `mergelex.py'. */ +#define YY_NO_UNPUT #include "common.h" static RECODE_CONST_REQUEST request; static RECODE_SUBTASK subtask; @@ -2837,16 +2838,16 @@ int main() #endif /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or + This library 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 of the License, or (at your option) any later version. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. @@ -2880,15 +2881,15 @@ module_ascii_latin1 (RECODE_OUTER outer) return true; } /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or + This library 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 of the License, or (at your option) any later version. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. @@ -2922,15 +2923,15 @@ NULL, transform_latex_latin1) && declare_alias (outer, "ltex", "LaTeX"); } /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1989. - The `recode' Library is free software; you can redistribute it and/or + This library 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 of the License, or (at your option) any later version. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. diff --git a/src/mergelex.py b/src/mergelex.py index afb4819..16ba1c7 100644 --- a/src/mergelex.py +++ b/src/mergelex.py @@ -1,5 +1,5 @@ # Conversion of files between different charsets and surfaces. -# Copyright © 1990, 1993, 1994, 1995, 1997, 1999 Free Software Foundation, Inc. +# Copyright © 1990, 93, 94, 95, 97, 99, 00 Free Software Foundation, Inc. # François Pinard , 1990. # # This program is free software; you can redistribute it and/or modify @@ -27,6 +27,7 @@ section0 = ["/* This file is generated automatically by `mergelex.py'. */\n"] section1 = ["\n" "%option noyywrap\n" "%{\n" + '#define YY_NO_UNPUT\n' '#include "common.h"\n' "static RECODE_CONST_REQUEST request;\n" "static RECODE_SUBTASK subtask;\n" diff --git a/src/mixed.c b/src/mixed.c index 703a86d..164f54f 100644 --- a/src/mixed.c +++ b/src/mixed.c @@ -1,5 +1,5 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 92, 93, 94, 96, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 92, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. François Pinard , 1990. This program is free software; you can redistribute it and/or modify it @@ -89,14 +89,14 @@ close_mixed (struct mixed *mixed) fclose (mixed->subtask.task->output.file); } -static inline void +static /*inline*/ void start_accumulation (struct mixed *mixed) { mixed->buffer.cursor = mixed->buffer.buffer; mixed->subtask.output = mixed->buffer; } -static inline bool +static /*inline*/ bool recode_accumulated (struct mixed *mixed) { RECODE_TASK task = mixed->subtask.task; diff --git a/src/mule.c b/src/mule.c index 7db9d9f..9ebed57 100644 --- a/src/mule.c +++ b/src/mule.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1997, 98, 99 Free Software Foundation, Inc. + Copyright © 1997, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1997. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/names.c b/src/names.c index cb844de..21bc7da 100644 --- a/src/names.c +++ b/src/names.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1993, 94, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1993, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1993. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -27,14 +27,14 @@ `-------------------------------------------------------------------------*/ int -code_to_ucs2 (RECODE_CONST_CHARSET charset, unsigned code) +code_to_ucs2 (RECODE_CONST_SYMBOL charset, unsigned code) { - const struct strip_data *data = charset->charset_data; + const struct strip_data *data = charset->data; const recode_ucs2 *pool = data->pool; unsigned offset = data->offset[code / STRIP_SIZE]; unsigned value = pool[offset + code % STRIP_SIZE]; - return value == MASK (16) ? -1 : value; + return value == MASK (16) ? -1 : (int) value; } /*---------------------------------------------------------. @@ -43,8 +43,8 @@ code_to_ucs2 (RECODE_CONST_CHARSET charset, unsigned code) static bool check_restricted (RECODE_CONST_OUTER outer, - RECODE_CONST_CHARSET before, - RECODE_CONST_CHARSET after) + RECODE_CONST_SYMBOL before, + RECODE_CONST_SYMBOL after) { struct recode_known_pair *pair; int left; @@ -52,8 +52,8 @@ check_restricted (RECODE_CONST_OUTER outer, /* Reject the charset if no UCS-2 translation known for it. */ - if (before->charset_type != RECODE_STRIP_DATA - || after->charset_type != RECODE_STRIP_DATA) + if (before->data_type != RECODE_STRIP_DATA + || after->data_type != RECODE_STRIP_DATA) return true; for (pair = outer->pair_restriction; @@ -80,46 +80,46 @@ check_restricted (RECODE_CONST_OUTER outer, /* Charset names. */ -/*--------------------------------------. -| Prepare charsets for initialisation. | -`--------------------------------------*/ +/*-------------------------------------. +| Prepare aliases for initialisation. | +`-------------------------------------*/ static unsigned -symbol_hasher (const void *void_symbol, unsigned limit) +alias_hasher (const void *void_alias, unsigned limit) { - RECODE_CONST_SYMBOL symbol = void_symbol; + RECODE_CONST_ALIAS alias = void_alias; - return hash_string (symbol->name, limit); + return hash_string (alias->name, limit); } static bool -symbol_comparator (const void *void_first, const void *void_second) +alias_comparator (const void *void_first, const void *void_second) { - RECODE_CONST_SYMBOL first = void_first; - RECODE_CONST_SYMBOL second = void_second; + RECODE_CONST_ALIAS first = void_first; + RECODE_CONST_ALIAS second = void_second; return strcmp (first->name, second->name) == 0; } bool -prepare_for_names (RECODE_OUTER outer) +prepare_for_aliases (RECODE_OUTER outer) { - outer->charset_list = NULL; - outer->number_of_charsets = 0; + outer->symbol_list = NULL; + outer->number_of_symbols = 0; - outer->symbol_table - = hash_initialize (800, NULL, symbol_hasher, symbol_comparator, NULL); - if (!outer->symbol_table) + outer->alias_table + = hash_initialize (800, NULL, alias_hasher, alias_comparator, NULL); + if (!outer->alias_table) return false; return true; } -/*-----------------------------------------------------------------------. -| Return a newly allocated copy of charset NAME, with upper case letters | -| turned into lower case, and all non alphanumeric discarded, or NULL if | -| any problem. | -`-----------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------. +| Return a newly allocated copy of symbol NAME, with upper case letters | +| turned into lower case, and all non alphanumeric discarded, or NULL if any | +| problem. | +`---------------------------------------------------------------------------*/ static char * name_for_argmatch (RECODE_OUTER outer, const char *name) @@ -146,16 +146,16 @@ name_for_argmatch (RECODE_OUTER outer, const char *name) return result; } -/*-------------------------------------------------------------------------. -| Given an abbreviated NAME of a charset or surface, return its full name, | -| properly capitalized and punctuated, or NULL if this cannot be done | -| successfully. TYPE may restrict the interpretation. A NULL or empty | -| string means the default charset, if this default charset is defined. | -`-------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------. +| Given an abbreviated NAME of a charset or surface, return its full name, | +| properly capitalized and punctuated, or NULL if this cannot be done | +| successfully. FIND_TYPE may restrict the interpretation. A NULL or empty | +| string means the default charset, if this default charset is defined. | +`---------------------------------------------------------------------------*/ static const char * disambiguate_name (RECODE_OUTER outer, - const char *name, enum symbol_find_type type) + const char *name, enum alias_find_type find_type) { char *hashname; int ordinal; @@ -166,8 +166,10 @@ disambiguate_name (RECODE_OUTER outer, /* Look for a match. */ if (!name || !*name) - if (type == SYMBOL_FIND_AS_CHARSET || type == SYMBOL_FIND_AS_EITHER) + switch (find_type) { + case ALIAS_FIND_AS_CHARSET: + case ALIAS_FIND_AS_EITHER: name = getenv ("DEFAULT_CHARSET"); if (!name) { @@ -177,42 +179,50 @@ disambiguate_name (RECODE_OUTER outer, #endif return NULL; } + break; + + default: + return NULL; } - else - return NULL; hashname = name_for_argmatch (outer, name); if (!hashname) return NULL; - switch (type) + switch (find_type) { case SYMBOL_CREATE_CHARSET: + case SYMBOL_CREATE_DATA_SURFACE: + case SYMBOL_CREATE_TREE_SURFACE: abort (); - case SYMBOL_FIND_AS_CHARSET: + case ALIAS_FIND_AS_CHARSET: /* FIXME: How to avoid those ugly casts? */ ordinal = argmatch (hashname, - (const char *const *) outer->argmatch_charset_array); + (const char *const *) outer->argmatch_charset_array, + NULL, 0); result = ordinal < 0 ? NULL : outer->realname_charset_array[ordinal]; break; - case SYMBOL_FIND_AS_SURFACE: + case ALIAS_FIND_AS_SURFACE: ordinal = argmatch (hashname, - (const char *const *) outer->argmatch_surface_array); + (const char *const *) outer->argmatch_surface_array, + NULL, 0); result = ordinal < 0 ? NULL : outer->realname_surface_array[ordinal]; break; - case SYMBOL_FIND_AS_EITHER: + case ALIAS_FIND_AS_EITHER: ordinal = argmatch (hashname, - (const char *const *) outer->argmatch_charset_array); + (const char *const *) outer->argmatch_charset_array, + NULL, 0); if (ordinal >= 0) result = outer->realname_charset_array[ordinal]; else { ordinal = argmatch (hashname, (const char *const *) - outer->argmatch_surface_array); + outer->argmatch_surface_array, + NULL, 0); result = ordinal < 0 ? NULL : outer->realname_surface_array[ordinal]; } break; @@ -222,26 +232,41 @@ disambiguate_name (RECODE_OUTER outer, return result; } -/*-------------------------------------------------------------------------. -| Return the charset from its given NAME or alias name. If TYPE is | -| SYMBOL_CREATE_CHARSET, create a new charset if it does not exist, or | -| return NULL if any problem happens at creation time. For other TYPE | -| values, never create a new charset, merely return NULL if NAME cannot be | -| correctly disambiguated. | -`-------------------------------------------------------------------------*/ +/*----------------------------------------------------------------------------. +| Return the alias from its given NAME, possibly abbreviated. If FIND_TYPE | +| is any of SYMBOL_CREATE_*, NAME is not abbreviated, create a new symbol if | +| it does not exist, or return NULL if any problem happens at creation time. | +| For other TYPE values, never create a new charset, merely return NULL if | +| NAME cannot be correctly disambiguated. | +`----------------------------------------------------------------------------*/ -RECODE_SYMBOL -find_symbol (RECODE_OUTER outer, const char *name, enum symbol_find_type type) +RECODE_ALIAS +find_alias (RECODE_OUTER outer, const char *name, + enum alias_find_type find_type) { - struct recode_symbol lookup; + struct recode_alias lookup; + RECODE_ALIAS alias; RECODE_SYMBOL symbol; - RECODE_CHARSET charset; + enum recode_symbol_type type = RECODE_NO_SYMBOL_TYPE; - if (type != SYMBOL_CREATE_CHARSET) + switch (find_type) { + case SYMBOL_CREATE_CHARSET: + type = RECODE_CHARSET; + break; + + case SYMBOL_CREATE_DATA_SURFACE: + type = RECODE_DATA_SURFACE; + break; + + case SYMBOL_CREATE_TREE_SURFACE: + type = RECODE_TREE_SURFACE; + break; + + default: /* Clean and disambiguate first as requested. */ - name = disambiguate_name (outer, name, type); + name = disambiguate_name (outer, name, find_type); if (!name) return NULL; } @@ -251,68 +276,68 @@ find_symbol (RECODE_OUTER outer, const char *name, enum symbol_find_type type) lookup.name = name; if (!lookup.name) return NULL; - if (symbol = hash_lookup (outer->symbol_table, &lookup), symbol) - return symbol; + if (alias = hash_lookup (outer->alias_table, &lookup), alias) + return alias; - /* If we reach this point, type is necessarily SYMBOL_CREATE_CHARSET. For - any other value of type, the symbol would have already been found and - returned. So, here, a new charset does have to be created. */ - - if (!ALLOC (charset, 1, struct recode_charset)) - return NULL; - charset->ordinal = outer->number_of_charsets++; - charset->name = name; - charset->charset_flag = false; - charset->ignore = false; - charset->charset_type = RECODE_NO_CHARSET_DATA; - charset->charset_data = NULL; - charset->resurfacer = NULL; - charset->unsurfacer = NULL; + /* If we reach this point, find_type is necessarily one of SYMBOL_CREATE_*. + For any other value of find_type, the alias would have already been found + and returned. So, here, a new symbol does have to be created. */ if (!ALLOC (symbol, 1, struct recode_symbol)) + return NULL; + symbol->ordinal = outer->number_of_symbols++; + symbol->name = name; + symbol->type = type; + symbol->ignore = false; + symbol->data_type = RECODE_NO_CHARSET_DATA; + symbol->data = NULL; + symbol->resurfacer = NULL; + symbol->unsurfacer = NULL; + + if (!ALLOC (alias, 1, struct recode_alias)) { - free (charset); + free (symbol); return NULL; } - symbol->name = name; - symbol->charset = charset; - symbol->implied_surfaces = NULL; - if (!hash_insert (outer->symbol_table, symbol)) + alias->name = name; + alias->symbol = symbol; + alias->implied_surfaces = NULL; + if (!hash_insert (outer->alias_table, alias)) { - free (charset); free (symbol); + free (alias); return NULL; } - charset->next = outer->charset_list; - outer->charset_list = charset; + symbol->next = outer->symbol_list; + outer->symbol_list = symbol; - return symbol; + return alias; } -/*-------------------------------------------------------------------------. -| Have NAME as an alternate charset name for OLD_NAME. Create OLD_NAME if | -| it does not exist already. | -`-------------------------------------------------------------------------*/ +/*-----------------------------------------------------------------------. +| Have NAME to be an alternate name for OLD_NAME. Create OLD_NAME if it | +| does not exist already. | +`-----------------------------------------------------------------------*/ -RECODE_SYMBOL +RECODE_ALIAS declare_alias (RECODE_OUTER outer, const char *name, const char *old_name) { - struct recode_symbol lookup; + struct recode_alias lookup; + RECODE_ALIAS alias; RECODE_SYMBOL symbol; - RECODE_CHARSET charset; - /* Find the charset. */ + /* Find the symbol. */ - if (symbol = find_symbol (outer, old_name, SYMBOL_CREATE_CHARSET), !symbol) + if (alias = find_alias (outer, old_name, SYMBOL_CREATE_CHARSET), !alias) return NULL; - charset = symbol->charset; + symbol = alias->symbol; lookup.name = name; - if (symbol = hash_lookup (outer->symbol_table, &lookup), symbol) + if (alias = hash_lookup (outer->alias_table, &lookup), alias) { - if (symbol->charset == charset) - return symbol; + if (alias->symbol == symbol) + return alias; recode_error (outer, _("Charset %s already exists and is not %s"), name, old_name); return NULL; @@ -320,18 +345,18 @@ declare_alias (RECODE_OUTER outer, const char *name, const char *old_name) /* Make the alias. */ - if (!ALLOC (symbol, 1, struct recode_symbol)) + if (!ALLOC (alias, 1, struct recode_alias)) return NULL; - symbol->name = name; - symbol->charset = charset; - symbol->implied_surfaces = NULL; - if (!hash_insert (outer->symbol_table, symbol)) + alias->name = name; + alias->symbol = symbol; + alias->implied_surfaces = NULL; + if (!hash_insert (outer->alias_table, alias)) { - free (symbol); + free (alias); return NULL; } - return symbol; + return alias; } /*-------------------------------------------------------------------------. @@ -340,8 +365,8 @@ declare_alias (RECODE_OUTER outer, const char *name, const char *old_name) `-------------------------------------------------------------------------*/ bool -declare_implied_surface (RECODE_OUTER outer, RECODE_SYMBOL symbol, - RECODE_CONST_CHARSET surface) +declare_implied_surface (RECODE_OUTER outer, RECODE_ALIAS alias, + RECODE_CONST_SYMBOL surface) { struct recode_surface_list *list; struct recode_surface_list *hook; @@ -352,15 +377,15 @@ declare_implied_surface (RECODE_OUTER outer, RECODE_SYMBOL symbol, hook->surface = surface; hook->next = NULL; - if (symbol->implied_surfaces) + if (alias->implied_surfaces) { - list = symbol->implied_surfaces; + list = alias->implied_surfaces; while (list->next) list = list->next; list->next = hook; } else - symbol->implied_surfaces = hook; + alias->implied_surfaces = hook; return true; } @@ -377,45 +402,44 @@ struct make_argmatch_walk }; static bool -make_argmatch_walker_1 (void *void_symbol, void *void_walk) +make_argmatch_walker_1 (void *void_alias, void *void_walk) { - RECODE_SYMBOL symbol = void_symbol; + RECODE_ALIAS alias = void_alias; struct make_argmatch_walk *walk = void_walk; - RECODE_OUTER outer = walk->outer; - if (IS_CHARSET (outer, symbol->charset)) + if (alias->symbol->type == RECODE_CHARSET) walk->charset_counter++; - if (IS_SURFACE (outer, symbol->charset)) + else walk->surface_counter++; return true; } static bool -make_argmatch_walker_2 (void *void_symbol, void *void_walk) +make_argmatch_walker_2 (void *void_alias, void *void_walk) { - RECODE_SYMBOL symbol = void_symbol; + RECODE_ALIAS alias = void_alias; struct make_argmatch_walk *walk = void_walk; RECODE_OUTER outer = walk->outer; - if (IS_CHARSET (outer, symbol->charset)) + if (alias->symbol->type == RECODE_CHARSET) { - char *string = name_for_argmatch (outer, symbol->name); + char *string = name_for_argmatch (outer, alias->name); if (!string) abort (); outer->argmatch_charset_array[walk->charset_counter] = string; - outer->realname_charset_array[walk->charset_counter] = symbol->name; + outer->realname_charset_array[walk->charset_counter] = alias->name; walk->charset_counter++; } - if (IS_SURFACE (outer, symbol->charset)) + else { - char *string = name_for_argmatch (outer, symbol->name); + char *string = name_for_argmatch (outer, alias->name); if (!string) abort (); outer->argmatch_surface_array[walk->surface_counter] = string; - outer->realname_surface_array[walk->surface_counter] = symbol->name; + outer->realname_surface_array[walk->surface_counter] = alias->name; walk->surface_counter++; } @@ -426,10 +450,9 @@ bool make_argmatch_arrays (RECODE_OUTER outer) { struct make_argmatch_walk walk; /* wanderer's data */ - struct recode_hash *hash; /* cursor in charsets */ #if HASH_STATS - hash_print_statistics (outer->symbol_table, stderr); + hash_print_statistics (outer->alias_table, stderr); #endif /* It may happen that new modules are added only once all initialisation @@ -451,14 +474,14 @@ make_argmatch_arrays (RECODE_OUTER outer) walk.outer = outer; walk.charset_counter = 0; walk.surface_counter = 0; - hash_do_for_each (outer->symbol_table, make_argmatch_walker_1, &walk); + hash_do_for_each (outer->alias_table, make_argmatch_walker_1, &walk); /* Allocate the argmatch and realname arrays, each with a NULL sentinel. */ { char **cursor; - if (!ALLOC (cursor, 2 * walk.charset_counter + 2 * walk.surface_counter + 4, + if (!ALLOC (cursor, 2*walk.charset_counter + 2*walk.surface_counter + 4, char *)) return false; @@ -483,7 +506,7 @@ make_argmatch_arrays (RECODE_OUTER outer) walk.charset_counter = 0; walk.surface_counter = 0; - hash_do_for_each (outer->symbol_table, make_argmatch_walker_2, &walk); + hash_do_for_each (outer->alias_table, make_argmatch_walker_2, &walk); return true; } @@ -557,127 +580,123 @@ compare_strings (const char *stringA, const char *stringB) return *stringA ? 1 : *stringB ? -1 : delayed; } -/*---------------------------------------------------------------------------. -| Order two struct recode_symbol's, using the first key to group all | -| surfaces together, the second key to group charsets or surfaces having the | -| same unaliased name, the third key to list unaliases names first, and the | -| last key to order aliased names. | -`---------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------. +| Order two struct recode_alias, using the first key to group all surfaces | +| together, the second key to group charsets or surfaces having the same | +| unaliased name, the third key to list unaliases names first, and the last | +| key to order aliased names. | +`--------------------------------------------------------------------------*/ static int -compare_struct_symbol (const void *void_first, const void *void_second) +compare_struct_alias (const void *void_first, const void *void_second) { - RECODE_CONST_SYMBOL first = (RECODE_CONST_SYMBOL) void_first; - RECODE_CONST_SYMBOL second = (RECODE_CONST_SYMBOL) void_second; + RECODE_CONST_ALIAS first = (RECODE_CONST_ALIAS) void_first; + RECODE_CONST_ALIAS second = (RECODE_CONST_ALIAS) void_second; int value; - if (first->charset->charset_flag && !second->charset->charset_flag) + if (first->symbol->type == RECODE_CHARSET + && second->symbol->type != RECODE_CHARSET) return 1; - if (!first->charset->charset_flag && second->charset->charset_flag) + if (first->symbol->type != RECODE_CHARSET + && second->symbol->type == RECODE_CHARSET) return -1; - if (value = compare_strings (first->charset->name, second->charset->name), + if (value = compare_strings (first->symbol->name, second->symbol->name), value != 0) return value; - if (first->name == first->charset->name - && second->name != second->charset->name) + if (first->name == first->symbol->name + && second->name != second->symbol->name) return -1; - if (second->name == second->charset->name - && first->name != first->charset->name) + if (second->name == second->symbol->name + && first->name != first->symbol->name) return 1; return compare_strings (first->name, second->name); } -/*-----------------------------------------------------------------------. -| List all available charsets, obeying restrictions for an AFTER charset | -| if any. | -`-----------------------------------------------------------------------*/ +/*-------------------------------------------------------------------------. +| List all available symbols, obeying restrictions for an AFTER charset if | +| any. | +`-------------------------------------------------------------------------*/ -struct list_charsets_walk +struct list_symbols_walk { - RECODE_SYMBOL array; + RECODE_ALIAS array; unsigned number; }; static bool -list_charsets_walker_1 (void *void_symbol, void *void_walk) +list_symbols_walker_1 (void *void_alias, void *void_walk) { - RECODE_SYMBOL symbol = void_symbol; - struct list_charsets_walk *walk = void_walk; + RECODE_ALIAS alias = void_alias; + struct list_symbols_walk *walk = void_walk; - if (!symbol->charset->ignore) + if (!alias->symbol->ignore) walk->number++; return true; } static bool -list_charsets_walker_2 (void *void_symbol, void *void_walk) +list_symbols_walker_2 (void *void_alias, void *void_walk) { - RECODE_SYMBOL symbol = void_symbol; - struct list_charsets_walk *walk = void_walk; + RECODE_ALIAS alias = void_alias; + struct list_symbols_walk *walk = void_walk; - if (!symbol->charset->ignore) - walk->array[walk->number++] = *symbol; + if (!alias->symbol->ignore) + walk->array[walk->number++] = *alias; return true; } bool -list_all_charsets (RECODE_OUTER outer, - RECODE_CONST_CHARSET after) +list_all_symbols (RECODE_OUTER outer, + RECODE_CONST_SYMBOL after) { - struct list_charsets_walk walk; /* wanderer's data */ - RECODE_SYMBOL symbol; /* cursor into sorted array */ - bool list_flag; /* if the current symbol should be listed */ + struct list_symbols_walk walk; /* wanderer's data */ + RECODE_ALIAS alias; /* cursor into sorted array */ + bool list_flag; /* if the current alias should be listed */ - /* Count how many charsets we have. */ + /* Count how many symbols we have. */ walk.number = 0; - hash_do_for_each (outer->symbol_table, list_charsets_walker_1, &walk); + hash_do_for_each (outer->alias_table, list_symbols_walker_1, &walk); /* Allocate a structure to hold them. */ - if (!ALLOC (walk.array, walk.number, struct recode_symbol)) + if (!ALLOC (walk.array, walk.number, struct recode_alias)) return false; - /* Copy all charsets in it. */ + /* Copy all symbols in it. */ walk.number = 0; - hash_do_for_each (outer->symbol_table, list_charsets_walker_2, &walk); + hash_do_for_each (outer->alias_table, list_symbols_walker_2, &walk); /* Sort it. */ - qsort (walk.array, (size_t) walk.number, sizeof (struct recode_symbol), - compare_struct_symbol); + qsort (walk.array, (size_t) walk.number, sizeof (struct recode_alias), + compare_struct_alias); - /* Print it, one line per charset, giving the true charset name first, + /* Print it, one line per symbol, giving the true symbol name first, followed by all its alias in lexicographic order. */ list_flag = false; - for (symbol = walk.array; symbol < walk.array + walk.number; symbol++) + for (alias = walk.array; alias < walk.array + walk.number; alias++) { - /* Begin a new line with the true charset name when it changes. */ + /* Begin a new line with the true symbol name when it changes. */ - if (symbol == walk.array - || symbol->charset->name != (symbol - 1)->charset->name) + if (alias == walk.array + || alias->symbol->name != (alias - 1)->symbol->name) { - if (list_flag && symbol != walk.array) + if (list_flag && alias != walk.array) putchar ('\n'); list_flag - = !after || !check_restricted (outer, symbol->charset, after); + = !after || !check_restricted (outer, alias->symbol, after); - if (list_flag) - { - if (IS_SURFACE (outer, symbol->charset)) - if (IS_CHARSET (outer, symbol->charset)) - fputs ("[/]", stdout); - else - putchar ('/'); - } + if (list_flag && alias->symbol->type != RECODE_CHARSET) + putchar ('/'); } else if (list_flag) putchar (' '); @@ -688,8 +707,8 @@ list_all_charsets (RECODE_OUTER outer, { struct recode_surface_list *cursor; - fputs (symbol->name, stdout); - for (cursor = symbol->implied_surfaces; cursor; cursor = cursor->next) + fputs (alias->name, stdout); + for (cursor = alias->implied_surfaces; cursor; cursor = cursor->next) { putchar ('/'); fputs (cursor->surface->name, stdout); @@ -800,7 +819,7 @@ decode_known_pairs (RECODE_OUTER outer, const char *string) bool list_concise_charset (RECODE_OUTER outer, - RECODE_CONST_CHARSET charset, + RECODE_CONST_SYMBOL charset, const enum recode_list_format list_format) { unsigned half; /* half 0, half 1 of the table */ @@ -812,7 +831,7 @@ list_concise_charset (RECODE_OUTER outer, /* Ensure we have a strip table to play with. */ - if (charset->charset_type != RECODE_STRIP_DATA) + if (charset->data_type != RECODE_STRIP_DATA) { recode_error (outer, _("Cannot list `%s', no names available for this charset"), @@ -935,8 +954,7 @@ list_full_charset_line (int code, recode_ucs2 ucs2, bool french) } bool -list_full_charset (RECODE_OUTER outer, - RECODE_CONST_CHARSET charset) +list_full_charset (RECODE_OUTER outer, RECODE_CONST_SYMBOL charset) { bool french; /* if output should be in French */ @@ -958,14 +976,13 @@ list_full_charset (RECODE_OUTER outer, /* See which data is available. */ - switch (charset->charset_type) + switch (charset->data_type) { case RECODE_EXPLODE_DATA: { - const unsigned short *data = charset->charset_data; + const unsigned short *data = charset->data; unsigned code; /* code counter */ unsigned expected; /* expected value for code counter */ - int ucs2; /* UCS-2 translation */ bool insert_white; /* insert a while line before printing */ /* Print the long table according to explode data. */ @@ -1050,26 +1067,25 @@ bool find_and_report_subsets (RECODE_OUTER outer) { bool success = true; - RECODE_CHARSET charset1; + RECODE_SYMBOL charset1; - for (charset1 = outer->charset_list; + for (charset1 = outer->symbol_list; charset1; charset1 = charset1->next) { - const struct strip_data *table1 = charset1->charset_data; - RECODE_CHARSET charset2; + const struct strip_data *table1 = charset1->data; + RECODE_SYMBOL charset2; - if (charset1->ignore || charset1->charset_type != RECODE_STRIP_DATA) + if (charset1->ignore || charset1->data_type != RECODE_STRIP_DATA) continue; - for (charset2 = outer->charset_list; + for (charset2 = outer->symbol_list; charset2; charset2 = charset2->next) { - const struct strip_data *table2 = charset2->charset_data; - unsigned counter; + const struct strip_data *table2 = charset2->data; - if (charset2->ignore || charset2->charset_type != RECODE_STRIP_DATA + if (charset2->ignore || charset2->data_type != RECODE_STRIP_DATA || charset2 == charset1) continue; diff --git a/src/outer.c b/src/outer.c index ab161c7..ef292f3 100644 --- a/src/outer.c +++ b/src/outer.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 92, 93, 94, 96, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990,92,93,94,96,97,98,99,00 Free Software Foundation, Inc. Contributed by François Pinard , 1990. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -66,57 +66,111 @@ declare_single (RECODE_OUTER outer, struct recode_quality quality, Recode_init init_routine, Recode_transform transform_routine) { - RECODE_SYMBOL symbol; - RECODE_SINGLE single; + RECODE_SINGLE single = new_single_step (outer); - single = new_single_step (outer); if (!single) return NULL; - if (symbol = find_symbol (outer, before_name, SYMBOL_CREATE_CHARSET), - !symbol) - return NULL; - single->before = symbol->charset; - - if (symbol = find_symbol (outer, after_name, SYMBOL_CREATE_CHARSET), - !symbol) + if (strcmp (before_name, "data") == 0) + { + single->before = outer->data_symbol; + single->after = find_alias (outer, after_name, + SYMBOL_CREATE_DATA_SURFACE)->symbol; + } + else if (strcmp(after_name, "data") == 0) { + single->before = find_alias (outer, before_name, + SYMBOL_CREATE_DATA_SURFACE)->symbol; + single->after = outer->data_symbol; + } + else if (strcmp (before_name, "tree") == 0) + { + single->before = outer->tree_symbol; + single->after = find_alias (outer, after_name, + SYMBOL_CREATE_TREE_SURFACE)->symbol; + } + else if (strcmp(after_name, "tree") == 0) + { + single->before = find_alias (outer, before_name, + SYMBOL_CREATE_TREE_SURFACE)->symbol; + single->after = outer->tree_symbol; + } + else + { + single->before = find_alias (outer, before_name, + SYMBOL_CREATE_CHARSET)->symbol; + single->after = find_alias (outer, after_name, + SYMBOL_CREATE_CHARSET)->symbol; + } + #if 0 - /* FIXME: We should delink from the list of charsets before freeing. - The symbol should also be freed. */ + /* FIXME: We should delink from the list of charsets before freeing. + The alias should also be freed. */ + if (!before || !after) + { free (single->before); -#endif return NULL; } - single->after = symbol->charset; +#endif + + single->quality = quality; + single->init_routine = init_routine; + single->transform_routine = transform_routine; - if (single->before == outer->data_charset) + if (single->before == outer->data_symbol + || single->before == outer->tree_symbol) { if (single->after->resurfacer) recode_error (outer, _("Resurfacer set more than once for `%s'"), after_name); single->after->resurfacer = single; } - else if (single->after == outer->data_charset) + else if (single->after == outer->data_symbol + || single->after == outer->tree_symbol) { if (single->before->unsurfacer) recode_error (outer, _("Unsurfacer set more than once for `%s'"), before_name); single->before->unsurfacer = single; } - else - { - single->before->charset_flag = true; - single->after->charset_flag = true; - } - - single->quality = quality; - single->init_routine = init_routine; - single->transform_routine = transform_routine; return single; } +#if 0 + +/*-------------------------------------------. +| Create and initialize a new data surface. | +`-------------------------------------------*/ + +bool +declare_data_surface (RECODE_OUTER outer, const char *name, + struct recode_quality resurfacer_quality, + Recode_init resurfacer_init_routine, + Recode_transform resurfacer_transform_routine, + struct recode_quality unsurfacer_quality, + Recode_init unsurfacer_init_routine, + Recode_transform unsurfacer_transform_routine) +{ +} + +/*-------------------------------------------------. +| Create and initialize a new structural surface. | +`-------------------------------------------------*/ + +bool +declare_tree_surface (RECODE_OUTER outer, const char *name, + struct recode_quality resurfacer_quality, + Recode_init resurfacer_init_routine, + Recode_transform resurfacer_transform_routine, + struct recode_quality unsurfacer_quality, + Recode_init unsurfacer_init_routine, + Recode_transform unsurfacer_transform_routine) +{ +} + +#endif + /*---------------------------------------------------------------------------. | Declare a charset available through `libiconv', given the NAME of this | | charset (which might already exist as an alias). Make two single steps in | @@ -133,19 +187,19 @@ internal_iconv (RECODE_SUBTASK subtask) bool declare_libiconv (RECODE_OUTER outer, const char *name) { - RECODE_SYMBOL symbol; + RECODE_ALIAS alias; RECODE_SINGLE single; - if (symbol = find_symbol (outer, name, SYMBOL_FIND_AS_EITHER), - !symbol) - if (symbol = find_symbol (outer, name, SYMBOL_CREATE_CHARSET), - !symbol) + if (alias = find_alias (outer, name, ALIAS_FIND_AS_EITHER), + !alias) + if (alias = find_alias (outer, name, SYMBOL_CREATE_CHARSET), + !alias) return false; - symbol->charset->charset_flag = true; + assert(alias->symbol->type == RECODE_CHARSET); if (single = new_single_step (outer), !single) return false; - single->before = symbol->charset; + single->before = alias->symbol; single->after = outer->libiconv_pivot; single->quality = outer->quality_variable_to_variable; single->init_routine = NULL; @@ -154,7 +208,7 @@ declare_libiconv (RECODE_OUTER outer, const char *name) if (single = new_single_step (outer), !single) return false; single->before = outer->libiconv_pivot; - single->after = symbol->charset; + single->after = alias->symbol; single->quality = outer->quality_variable_to_variable; single->init_routine = NULL; single->transform_routine = internal_iconv; @@ -164,9 +218,9 @@ declare_libiconv (RECODE_OUTER outer, const char *name) #if 0 -/*-------------------------------------------------. -| Save explode data within the charset structure. | -`-------------------------------------------------*/ +/*------------------------------------------------. +| Save explode data within the symbol structure. | +`------------------------------------------------*/ bool register_explode_data PARAMS ((RECODE_OUTER, const char *, const unsigned short *)); @@ -175,16 +229,16 @@ bool register_explode_data (RECODE_OUTER outer, const char *name, const unsigned short *data) { - RECODE_CHARSET charset; + RECODE_SYMBOL symbol; - charset = find_symbol (outer, name, SYMBOL_CREATE_CHARSET); - if (!charset) + symbol = find_alias (outer, name, SYMBOL_CREATE_CHARSET); + if (!symbol) return false; - charset->charset_flag = true; - charset->charset_type = RECODE_EXPLODE_DATA; + assert(symbol->type = RECODE_CHARSET); + symbol->data_type = RECODE_EXPLODE_DATA; /* The cast is a way to silently discard the const. */ - charset->charset_data = (void *) data; + symbol->data = (void *) data; return true; } @@ -200,31 +254,31 @@ bool declare_explode_data (RECODE_OUTER outer, const unsigned short *data, const char *name_combined, const char *name_exploded) { - RECODE_SYMBOL symbol; - RECODE_CHARSET charset_combined; - RECODE_CHARSET charset_exploded; + RECODE_ALIAS alias; + RECODE_SYMBOL charset_combined; + RECODE_SYMBOL charset_exploded; RECODE_SINGLE single; - if (symbol = find_symbol (outer, name_combined, SYMBOL_CREATE_CHARSET), - !symbol) + if (alias = find_alias (outer, name_combined, SYMBOL_CREATE_CHARSET), + !alias) return false; - charset_combined = symbol->charset; - charset_combined->charset_flag = true; + charset_combined = alias->symbol; + assert(charset_combined->type == RECODE_CHARSET); if (name_exploded) { - if (symbol = find_symbol (outer, name_exploded, SYMBOL_CREATE_CHARSET), - !symbol) + if (alias = find_alias (outer, name_exploded, SYMBOL_CREATE_CHARSET), + !alias) return false; - charset_exploded = symbol->charset; - charset_exploded->charset_flag = true; + charset_exploded = alias->symbol; + assert(charset_exploded->type == RECODE_CHARSET); } else { - charset_combined->charset_type = RECODE_EXPLODE_DATA; - charset_combined->charset_data = (void *) data; + charset_combined->data_type = RECODE_EXPLODE_DATA; + charset_combined->data = (void *) data; charset_exploded = outer->ucs2_charset; } @@ -263,17 +317,17 @@ bool declare_strip_data (RECODE_OUTER outer, struct strip_data *data, const char *name) { - RECODE_SYMBOL symbol; - RECODE_CHARSET charset; + RECODE_ALIAS alias; + RECODE_SYMBOL charset; RECODE_SINGLE single; - if (symbol = find_symbol (outer, name, SYMBOL_CREATE_CHARSET), !symbol) + if (alias = find_alias (outer, name, SYMBOL_CREATE_CHARSET), !alias) return false; - charset = symbol->charset; - charset->charset_flag = true; - charset->charset_type = RECODE_STRIP_DATA; - charset->charset_data = data; + charset = alias->symbol; + assert(charset->type == RECODE_CHARSET); + charset->data_type = RECODE_STRIP_DATA; + charset->data = data; single = new_single_step (outer); if (!single) @@ -377,11 +431,13 @@ estimate_single_cost (RECODE_OUTER outer, RECODE_SINGLE single) `------------------------------------------------------------------------*/ #include "decsteps.h" +bool module_libiconv PARAMS ((struct recode_outer *)); + static bool register_all_modules (RECODE_OUTER outer) { - RECODE_SYMBOL symbol; + RECODE_ALIAS alias; RECODE_SINGLE single; unsigned counter; unsigned char *table; @@ -392,35 +448,41 @@ register_all_modules (RECODE_OUTER outer) table[counter] = counter; outer->one_to_same = table; - prepare_for_names (outer); + prepare_for_aliases (outer); outer->single_list = NULL; outer->number_of_singles = 0; - if (symbol = find_symbol (outer, "data", SYMBOL_CREATE_CHARSET), !symbol) + if (alias = find_alias (outer, "data", SYMBOL_CREATE_CHARSET), !alias) return false; - outer->data_charset = symbol->charset; + outer->data_symbol = alias->symbol; - if (symbol = find_symbol (outer, "ISO-10646-UCS-2", SYMBOL_CREATE_CHARSET), - !symbol) + if (alias = find_alias (outer, "tree", SYMBOL_CREATE_CHARSET), !alias) return false; - symbol->charset->charset_flag = true; - outer->ucs2_charset = symbol->charset; + outer->tree_symbol = alias->symbol; - if (symbol = find_symbol (outer, ":libiconv:", SYMBOL_CREATE_CHARSET), - !symbol) + if (alias = find_alias (outer, "ISO-10646-UCS-2", SYMBOL_CREATE_CHARSET), + !alias) return false; - symbol->charset->charset_flag = true; - outer->libiconv_pivot = symbol->charset; + assert(alias->symbol->type == RECODE_CHARSET); + outer->ucs2_charset = alias->symbol; + + if (alias = find_alias (outer, ":libiconv:", SYMBOL_CREATE_CHARSET), + !alias) + return false; + assert(alias->symbol->type == RECODE_CHARSET); + outer->libiconv_pivot = alias->symbol; if (!declare_alias (outer, ":", ":libiconv:")) return false; - if (symbol = find_symbol (outer, "CR-LF", SYMBOL_CREATE_CHARSET), !symbol) + if (alias = find_alias (outer, "CR-LF", SYMBOL_CREATE_CHARSET), !alias) return false; - outer->crlf_surface = symbol->charset; + alias->symbol->type = RECODE_DATA_SURFACE; + outer->crlf_surface = alias->symbol; - if (symbol = find_symbol (outer, "CR", SYMBOL_CREATE_CHARSET), !symbol) + if (alias = find_alias (outer, "CR", SYMBOL_CREATE_CHARSET), !alias) return false; - outer->cr_surface = symbol->charset; + alias->symbol->type = RECODE_DATA_SURFACE; + outer->cr_surface = alias->symbol; #if 0 /* `.' might be later used for asking recode to guess the charset. */ @@ -480,7 +542,7 @@ recode_new_outer (bool auto_abort) if (!register_all_modules (outer) || !make_argmatch_arrays (outer)) { recode_delete_outer (outer); - return false; + return NULL; } outer->quality_byte_reversible.in_size = RECODE_1; @@ -525,13 +587,13 @@ recode_delete_outer (RECODE_OUTER outer) /* FIXME: Pawel Krawczyk reports that calling new_outer ... delete_outer 20000 times in a program has the effect of consuming all virtual memory. So there might be memory leaks should to track down and resolve. */ - while (outer->number_of_charsets > 0) + while (outer->number_of_symbols > 0) { - RECODE_CHARSET charset = outer->charset_list; + RECODE_SYMBOL symbol = outer->symbol_list; - outer->charset_list = charset->next; - outer->number_of_charsets--; - free (charset); + outer->symbol_list = symbol->next; + outer->number_of_symbols--; + free (symbol); } while (outer->number_of_singles > 0) { @@ -543,8 +605,8 @@ recode_delete_outer (RECODE_OUTER outer) } if (outer->pair_restriction) free (outer->pair_restriction); - if (outer->symbol_table) - free (outer->symbol_table); + if (outer->alias_table) + free (outer->alias_table); if (outer->argmatch_charset_array) free (outer->argmatch_charset_array); #if 0 diff --git a/src/permut.c b/src/permut.c index 2d80b23..b23c742 100644 --- a/src/permut.c +++ b/src/permut.c @@ -1,19 +1,19 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1997, 98, 99 Free Software Foundation, Inc. + Copyright © 1997, 98, 99, 00 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by François Pinard , 1997. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/quotearg.c b/src/quotearg.c new file mode 100644 index 0000000..06f5fea --- /dev/null +++ b/src/quotearg.c @@ -0,0 +1,403 @@ +/* quotearg.c - quote arguments for output + Copyright (C) 1998, 1999 Free Software Foundation, Inc. + + This program is free software; you can 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Written by Paul Eggert */ + +/* FIXME: Multibyte characters are not supported yet. */ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include +#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) +# define ISASCII(c) 1 +#else +# define ISASCII(c) isascii (c) +#endif +#ifdef isgraph +# define ISGRAPH(c) (ISASCII (c) && isgraph (c)) +#else +# define ISGRAPH(c) (ISASCII (c) && isprint (c) && !isspace (c)) +#endif + +#if ENABLE_NLS +# include +# define _(text) gettext (text) +#else +# define _(text) text +#endif + +#if HAVE_LIMITS_H +# include +#endif +#ifndef CHAR_BIT +# define CHAR_BIT 8 +#endif +#ifndef UCHAR_MAX +# define UCHAR_MAX ((unsigned char) -1) +#endif + +#if HAVE_STDLIB_H +# include +#endif + +#if HAVE_STRING_H +# include +#endif + +#define INT_BITS (sizeof (int) * CHAR_BIT) + +struct quoting_options +{ + /* Basic quoting style. */ + enum quoting_style style; + + /* Quote the chararacters indicated by this bit vector even if the + quoting style would not normally require them to be quoted. */ + int quote_these_too[((UCHAR_MAX + 1) / INT_BITS + + ((UCHAR_MAX + 1) % INT_BITS != 0))]; +}; + +/* Names of quoting styles. */ +char const *const quoting_style_args[] = +{ + "literal", + "shell", + "shell-always", + "c", + "escape", + "locale", + 0 +}; + +/* Correspondances to quoting style names. */ +enum quoting_style const quoting_style_vals[] = +{ + literal_quoting_style, + shell_quoting_style, + shell_always_quoting_style, + c_quoting_style, + escape_quoting_style, + locale_quoting_style +}; + +/* The default quoting options. */ +static struct quoting_options default_quoting_options; + +/* Allocate a new set of quoting options, with contents initially identical + to O if O is not null, or to the default if O is null. + It is the caller's responsibility to free the result. */ +struct quoting_options * +clone_quoting_options (struct quoting_options *o) +{ + struct quoting_options *p + = (struct quoting_options *) xmalloc (sizeof (struct quoting_options)); + *p = *(o ? o : &default_quoting_options); + return p; +} + +/* Get the value of O's quoting style. If O is null, use the default. */ +enum quoting_style +get_quoting_style (struct quoting_options *o) +{ + return (o ? o : &default_quoting_options)->style; +} + +/* In O (or in the default if O is null), + set the value of the quoting style to S. */ +void +set_quoting_style (struct quoting_options *o, enum quoting_style s) +{ + (o ? o : &default_quoting_options)->style = s; +} + +/* In O (or in the default if O is null), + set the value of the quoting options for character C to I. + Return the old value. Currently, the only values defined for I are + 0 (the default) and 1 (which means to quote the character even if + it would not otherwise be quoted). */ +int +set_char_quoting (struct quoting_options *o, char c, int i) +{ + unsigned char uc = c; + int *p = (o ? o : &default_quoting_options)->quote_these_too + uc / INT_BITS; + int shift = uc % INT_BITS; + int r = (*p >> shift) & 1; + *p ^= ((i & 1) ^ r) << shift; + return r; +} + +/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of + argument ARG (of size ARGSIZE), using O to control quoting. + If O is null, use the default. + Terminate the output with a null character, and return the written + size of the output, not counting the terminating null. + If BUFFERSIZE is too small to store the output string, return the + value that would have been returned had BUFFERSIZE been large enough. + If ARGSIZE is -1, use the string length of the argument for ARGSIZE. */ +size_t +quotearg_buffer (char *buffer, size_t buffersize, + char const *arg, size_t argsize, + struct quoting_options const *o) +{ + unsigned char c; + size_t i; + size_t len = 0; + char const *quote_string; + size_t quote_string_len; + struct quoting_options const *p = o ? o : &default_quoting_options; + enum quoting_style quoting_style = p->style; +#define STORE(c) \ + do \ + { \ + if (len < buffersize) \ + buffer[len] = (c); \ + len++; \ + } \ + while (0) + + switch (quoting_style) + { + case shell_quoting_style: + if (! (argsize == (size_t) -1 ? arg[0] == '\0' : argsize == 0)) + { + switch (arg[0]) + { + case '#': case '~': + break; + + default: + for (i = 0; ; i++) + { + if (argsize == (size_t) -1 ? arg[i] == '\0' : i == argsize) + goto done; + + c = arg[i]; + + switch (c) + { + case '\t': case '\n': case ' ': + case '!': /* special in csh */ + case '"': case '$': case '&': case '\'': + case '(': case ')': case '*': case ';': + case '<': case '>': case '?': case '[': case '\\': + case '^': /* special in old /bin/sh, e.g. SunOS 4.1.4 */ + case '`': case '|': + goto needs_quoting; + } + + if (p->quote_these_too[c / INT_BITS] & (1 << (c % INT_BITS))) + goto needs_quoting; + + STORE (c); + } + needs_quoting:; + + len = 0; + break; + } + } + /* Fall through. */ + + case shell_always_quoting_style: + STORE ('\''); + quote_string = "'"; + quote_string_len = 1; + break; + + case c_quoting_style: + STORE ('"'); + quote_string = "\""; + quote_string_len = 1; + break; + + case locale_quoting_style: + for (quote_string = _("`"); *quote_string; quote_string++) + STORE (*quote_string); + quote_string = _("'"); + quote_string_len = strlen (quote_string); + break; + + default: + quote_string = 0; + quote_string_len = 0; + break; + } + + for (i = 0; ! (argsize == (size_t) -1 ? arg[i] == '\0' : i == argsize); i++) + { + c = arg[i]; + + switch (quoting_style) + { + case literal_quoting_style: + break; + + case shell_quoting_style: + case shell_always_quoting_style: + if (c == '\'') + { + STORE ('\''); + STORE ('\\'); + STORE ('\''); + } + break; + + case c_quoting_style: + case escape_quoting_style: + case locale_quoting_style: + switch (c) + { + case '?': /* Do not generate trigraphs. */ + case '\\': goto store_escape; + /* Not all C compilers know what \a means. */ + case 7 : c = 'a'; goto store_escape; + case '\b': c = 'b'; goto store_escape; + case '\f': c = 'f'; goto store_escape; + case '\n': c = 'n'; goto store_escape; + case '\r': c = 'r'; goto store_escape; + case '\t': c = 't'; goto store_escape; + case '\v': c = 'v'; goto store_escape; + + case ' ': break; + + default: + if (quote_string_len + && strncmp (arg + i, quote_string, quote_string_len) == 0) + goto store_escape; + if (!ISGRAPH (c)) + { + STORE ('\\'); + STORE ('0' + (c >> 6)); + STORE ('0' + ((c >> 3) & 7)); + c = '0' + (c & 7); + goto store_c; + } + break; + } + + if (! (p->quote_these_too[c / INT_BITS] & (1 << (c % INT_BITS)))) + goto store_c; + + store_escape: + STORE ('\\'); + } + + store_c: + STORE (c); + } + + if (quote_string) + for (; *quote_string; quote_string++) + STORE (*quote_string); + + done: + if (len < buffersize) + buffer[len] = '\0'; + return len; +} + +/* Use storage slot N to return a quoted version of the string ARG. + OPTIONS specifies the quoting options. + The returned value points to static storage that can be + reused by the next call to this function with the same value of N. + N must be nonnegative. N is deliberately declared with type `int' + to allow for future extensions (using negative values). */ +static char * +quotearg_n_options (int n, char const *arg, + struct quoting_options const *options) +{ + static unsigned int nslots; + static struct slotvec + { + size_t size; + char *val; + } *slotvec; + + if (nslots <= n) + { + int n1 = n + 1; + size_t s = n1 * sizeof (struct slotvec); + if (! (0 < n1 && n1 == s / sizeof (struct slotvec))) + abort (); + slotvec = (struct slotvec *) xrealloc (slotvec, s); + memset (slotvec + nslots, 0, (n1 - nslots) * sizeof (struct slotvec)); + nslots = n; + } + + { + size_t size = slotvec[n].size; + char *val = slotvec[n].val; + size_t qsize = quotearg_buffer (val, size, arg, (size_t) -1, options); + + if (size <= qsize) + { + slotvec[n].size = size = qsize + 1; + slotvec[n].val = val = xrealloc (val, size); + quotearg_buffer (val, size, arg, (size_t) -1, options); + } + + return val; + } +} + +char * +quotearg_n (unsigned int n, char const *arg) +{ + return quotearg_n_options (n, arg, &default_quoting_options); +} + +char * +quotearg (char const *arg) +{ + return quotearg_n (0, arg); +} + +char * +quotearg_n_style (unsigned int n, enum quoting_style s, char const *arg) +{ + struct quoting_options o; + o.style = s; + memset (o.quote_these_too, 0, sizeof o.quote_these_too); + return quotearg_n_options (n, arg, &o); +} + +char * +quotearg_style (enum quoting_style s, char const *arg) +{ + return quotearg_n_style (0, s, arg); +} + +char * +quotearg_char (char const *arg, char ch) +{ + struct quoting_options options; + options = default_quoting_options; + set_char_quoting (&options, ch, 1); + return quotearg_n_options (0, arg, &options); +} + +char * +quotearg_colon (char const *arg) +{ + return quotearg_char (arg, ':'); +} diff --git a/src/quotearg.h b/src/quotearg.h new file mode 100644 index 0000000..2a600e7 --- /dev/null +++ b/src/quotearg.h @@ -0,0 +1,109 @@ +/* quotearg.h - quote arguments for output + Copyright (C) 1998, 1999 Free Software Foundation, Inc. + + This program is free software; you can 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Written by Paul Eggert */ + +/* Basic quoting styles. */ +enum quoting_style + { + literal_quoting_style, /* --quoting-style=literal */ + shell_quoting_style, /* --quoting-style=shell */ + shell_always_quoting_style, /* --quoting-style=shell-always */ + c_quoting_style, /* --quoting-style=c */ + escape_quoting_style, /* --quoting-style=escape */ + locale_quoting_style /* --quoting-style=locale */ + }; + +/* For now, --quoting-style=literal is the default, but this may change. */ +#ifndef DEFAULT_QUOTING_STYLE +# define DEFAULT_QUOTING_STYLE literal_quoting_style +#endif + +/* Names of quoting styles and their corresponding values. */ +extern char const *const quoting_style_args[]; +extern enum quoting_style const quoting_style_vals[]; + +struct quoting_options; + +#ifndef PARAMS +# if defined PROTOTYPES || defined __STDC__ +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +#endif + +/* The functions listed below set and use a hidden variable + that contains the default quoting style options. */ + +/* Allocate a new set of quoting options, with contents initially identical + to O if O is not null, or to the default if O is null. + It is the caller's responsibility to free the result. */ +struct quoting_options *clone_quoting_options + PARAMS ((struct quoting_options *o)); + +/* Get the value of O's quoting style. If O is null, use the default. */ +enum quoting_style get_quoting_style PARAMS ((struct quoting_options *o)); + +/* In O (or in the default if O is null), + set the value of the quoting style to S. */ +void set_quoting_style PARAMS ((struct quoting_options *o, + enum quoting_style s)); + +/* In O (or in the default if O is null), + set the value of the quoting options for character C to I. + Return the old value. Currently, the only values defined for I are + 0 (the default) and 1 (which means to quote the character even if + it would not otherwise be quoted). */ +int set_char_quoting PARAMS ((struct quoting_options *o, char c, int i)); + +/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of + argument ARG (of size ARGSIZE), using O to control quoting. + If O is null, use the default. + Terminate the output with a null character, and return the written + size of the output, not counting the terminating null. + If BUFFERSIZE is too small to store the output string, return the + value that would have been returned had BUFFERSIZE been large enough. + If ARGSIZE is -1, use the string length of the argument for ARGSIZE. */ +size_t quotearg_buffer PARAMS ((char *buffer, size_t buffersize, + char const *arg, size_t argsize, + struct quoting_options const *o)); + +/* Use storage slot N to return a quoted version of the string ARG. + Use the default quoting options. + The returned value points to static storage that can be + reused by the next call to this function with the same value of N. + N must be nonnegative. */ +char *quotearg_n PARAMS ((unsigned int n, char const *arg)); + +/* Equivalent to quotearg_n (0, ARG). */ +char *quotearg PARAMS ((char const *arg)); + +/* Use style S and storage slot N to return a quoted version of the string ARG. + This is like quotearg_n (N, ARG), except that it uses S with no other + options to specify the quoting method. */ +char *quotearg_n_style PARAMS ((unsigned int n, enum quoting_style s, + char const *arg)); + +/* Equivalent to quotearg_n_style (0, S, ARG). */ +char *quotearg_style PARAMS ((enum quoting_style s, char const *arg)); + +/* Like quotearg (ARG), except also quote any instances of CH. */ +char *quotearg_char PARAMS ((char const *arg, char ch)); + +/* Equivalent to quotearg_char (ARG, ':'). */ +char *quotearg_colon PARAMS ((char const *arg)); diff --git a/src/quoted.c b/src/quoted.c index ed0d783..97a5869 100644 --- a/src/quoted.c +++ b/src/quoted.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1996, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/recode.1 b/src/recode.1 index 6780265..6e39ba8 100644 --- a/src/recode.1 +++ b/src/recode.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.019. -.TH RECODE "1" "December 1999" "Free recode 3.5c" FSF +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.020. +.TH RECODE "1" "June 2000" "Free recode 3.5d" FSF .SH NAME -recode \- manual page for recode 3.5c +recode \- manual page for recode 3.5d .SH SYNOPSIS -.B ./recode +.B recode [\fIOPTION\fR]... [ [\fICHARSET\fR] \fI| REQUEST \fR[\fIFILE\fR]... ] .SH DESCRIPTION Free `recode' converts files between various character sets and surfaces. @@ -13,7 +13,7 @@ for the equivalent short option also. Similarly for optional arguments. .SS "Listings:" .TP \fB\-l\fR, \fB\-\-list\fR[=\fIFORMAT\fR] -list one or all known charsets +list one or all known charsets and aliases .TP \fB\-k\fR, \fB\-\-known\fR=\fIPAIRS\fR restrict charsets according to known PAIRS list diff --git a/src/recode.c b/src/recode.c index 141ae13..03c52f4 100644 --- a/src/recode.c +++ b/src/recode.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 92, 93, 94, 96, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 92, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1990. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -87,6 +87,7 @@ recode_perror (outer, format, va_alist) va_dcl #endif { + int saved_errno = errno; #ifdef VA_START va_list args; @@ -100,7 +101,7 @@ recode_perror (outer, format, va_alist) #else fprintf (stderr, format, a1, a2, a3, a4, a5, a6, a7, a8); #endif - fprintf (stderr, ": %s\n", strerror (errno)); + fprintf (stderr, ": %s\n", strerror (saved_errno)); fflush (stderr); } @@ -573,6 +574,9 @@ recode_format_table (RECODE_REQUEST request, switch (header_language) { + case RECODE_NO_LANGUAGE: + assert (0); + case RECODE_LANGUAGE_C: printf ("unsigned char const %s[256] =\n", name); printf (" {\n"); @@ -592,6 +596,9 @@ recode_format_table (RECODE_REQUEST request, } switch (header_language) { + case RECODE_NO_LANGUAGE: + assert (0); + case RECODE_LANGUAGE_C: printf (" };\n"); break; @@ -609,6 +616,9 @@ recode_format_table (RECODE_REQUEST request, switch (header_language) { + case RECODE_NO_LANGUAGE: + assert (0); + case RECODE_LANGUAGE_C: printf ("const char *%s[256] =\n", name); printf (" {\n"); @@ -686,6 +696,9 @@ recode_format_table (RECODE_REQUEST request, else switch (header_language) { + case RECODE_NO_LANGUAGE: + assert (0); + case RECODE_LANGUAGE_C: printf ("0"); column++; @@ -707,6 +720,9 @@ recode_format_table (RECODE_REQUEST request, } switch (header_language) { + case RECODE_NO_LANGUAGE: + assert (0); + case RECODE_LANGUAGE_C: printf (" };\n"); break; diff --git a/src/recode.h b/src/recode.h index 394fb5e..41255b9 100644 --- a/src/recode.h +++ b/src/recode.h @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 96, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -29,8 +29,8 @@ typedef struct recode_outer * RECODE_OUTER; typedef struct recode_request * RECODE_REQUEST; typedef struct recode_task * RECODE_TASK; -typedef const struct recode_charset * RECODE_CONST_CHARSET; typedef const struct recode_request * RECODE_CONST_REQUEST; +typedef const struct recode_symbol * RECODE_CONST_SYMBOL; /* Description of list formats. */ @@ -65,10 +65,10 @@ extern "C" { RECODE_OUTER recode_new_outer PARAMS ((bool)); bool recode_delete_outer PARAMS ((RECODE_OUTER)); -bool list_all_charsets PARAMS ((RECODE_OUTER, RECODE_CONST_CHARSET)); -bool list_concise_charset PARAMS ((RECODE_OUTER, RECODE_CONST_CHARSET, +bool list_all_symbols PARAMS ((RECODE_OUTER, RECODE_CONST_SYMBOL)); +bool list_concise_charset PARAMS ((RECODE_OUTER, RECODE_CONST_SYMBOL, const enum recode_list_format)); -bool list_full_charset PARAMS ((RECODE_OUTER, RECODE_CONST_CHARSET)); +bool list_full_charset PARAMS ((RECODE_OUTER, RECODE_CONST_SYMBOL)); /*----------------------------------. | Recode library at REQUEST level. | diff --git a/src/recodext.h b/src/recodext.h index c874b9a..3d9d600 100644 --- a/src/recodext.h +++ b/src/recodext.h @@ -1,13 +1,13 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 96, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. - The `recode' Library is free software; you can redistribute it and/or + This library 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 of the License, or (at your option) any later version. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. @@ -23,17 +23,17 @@ /* Internal typedefs, to supplement those in "recode.h". */ -typedef struct recode_charset * RECODE_CHARSET; +typedef struct recode_symbol * RECODE_SYMBOL; typedef struct recode_option_list * RECODE_OPTION_LIST; typedef struct recode_single * RECODE_SINGLE; typedef struct recode_step * RECODE_STEP; -typedef struct recode_symbol * RECODE_SYMBOL; +typedef struct recode_alias * RECODE_ALIAS; typedef struct recode_subtask * RECODE_SUBTASK; typedef const struct recode_option_list * RECODE_CONST_OPTION_LIST; typedef const struct recode_outer * RECODE_CONST_OUTER; typedef const struct recode_step * RECODE_CONST_STEP; -typedef const struct recode_symbol * RECODE_CONST_SYMBOL; +typedef const struct recode_alias * RECODE_CONST_ALIAS; typedef const struct recode_task * RECODE_CONST_TASK; /*---------------------------------------------------------. @@ -56,9 +56,10 @@ typedef const struct recode_task * RECODE_CONST_TASK; `-------------------------------------------------------------------------*/ #define RETURN_IF_NOGO(Error, Subtask) \ - if (recode_if_nogo (Error, Subtask)) \ - SUBTASK_RETURN (Subtask); \ - else + do { \ + if (recode_if_nogo (Error, Subtask)) \ + SUBTASK_RETURN (Subtask); \ + } while (false) /* Various structure declarations. */ @@ -69,153 +70,162 @@ typedef const struct recode_task * RECODE_CONST_TASK; /* Error codes, in increasing severity. */ enum recode_error -{ - RECODE_NO_ERROR, /* no error so far */ - RECODE_NOT_CANONICAL, /* input is not exact, but equivalent */ - RECODE_AMBIGUOUS_OUTPUT, /* output will be misleading */ - RECODE_UNTRANSLATABLE, /* input is getting lost, while valid */ - RECODE_INVALID_INPUT, /* input is getting lost, but was invalid */ - RECODE_SYSTEM_ERROR, /* system returned input/output failure */ - RECODE_USER_ERROR, /* library is being misused */ - RECODE_INTERNAL_ERROR, /* programming botch in the library */ - RECODE_MAXIMUM_ERROR /* impossible value (but should be kept last) */ -}; + { + RECODE_NO_ERROR, /* no error so far */ + RECODE_NOT_CANONICAL, /* input is not exact, but equivalent */ + RECODE_AMBIGUOUS_OUTPUT, /* output will be misleading */ + RECODE_UNTRANSLATABLE, /* input is getting lost, while valid */ + RECODE_INVALID_INPUT, /* input is getting lost, but was invalid */ + RECODE_SYSTEM_ERROR, /* system returned input/output failure */ + RECODE_USER_ERROR, /* library is being misused */ + RECODE_INTERNAL_ERROR, /* programming botch in the library */ + RECODE_MAXIMUM_ERROR /* impossible value (should be kept last) */ + }; -/* Structure for relating charset or alias names to charsets. */ +/* Structure for relating alias names to charsets and surfaces. */ -struct recode_symbol +struct recode_alias { - const char *name; /* charset or alias name */ - RECODE_CHARSET charset; /* associated charset */ - /* List of surfaces usually applied by default to the charset. */ + const char *name; /* charset, surface or alias name */ + RECODE_SYMBOL symbol; /* associated symbol */ + /* If a charset, list of surfaces usually applied by default. */ struct recode_surface_list *implied_surfaces; }; /* The sole purpose of qualities is for later attributing step costs. */ enum recode_size -{ - RECODE_1, /* roughly one byte per character */ - RECODE_2, /* roughly two bytes per character */ - RECODE_4, /* roughly four bytes per character */ - RECODE_N /* variable number of bytes per character */ -}; + { + RECODE_1, /* roughly one byte per character */ + RECODE_2, /* roughly two bytes per character */ + RECODE_4, /* roughly four bytes per character */ + RECODE_N /* variable number of bytes per character */ + }; struct recode_quality -{ - enum recode_size in_size : 3; /* rough byte size of input characters */ - enum recode_size out_size : 3; /* rough byte size of output characters */ - bool reversible : 1; /* transformation is known to be reversible */ - bool slower : 1; /* transformation is slower than average */ - bool faster : 1; /* transformation is faster than average */ -}; + { + enum recode_size in_size : 3; /* rough byte size of input characters */ + enum recode_size out_size : 3; /* rough byte size of output characters */ + bool reversible : 1; /* transformation is known to be reversible */ + bool slower : 1; /* transformation is slower than average */ + bool faster : 1; /* transformation is faster than average */ + }; /* Main variables of the initialised library. */ struct recode_outer -{ - /* This flag asks the library to diagnose and abort itself if errors. */ - bool auto_abort; - - /* If new steps should automatically have reversibility for fallback. */ - bool auto_reversibility; - - /* charset.c */ - /* --------- */ - - /* Known pairs (for restricting listing). */ - struct recode_known_pair *pair_restriction; - unsigned pair_restrictions; - - /* Opaque Hash_table pointer giving access to the single table holding all - names and aliases for charsets, surfaces and fallback methods. */ - void *symbol_table; - - /* Unique charsets are linked into a list and counted. */ - RECODE_CHARSET charset_list; - unsigned number_of_charsets; - - /* Arrays of strings ready for argmatch. */ - char **argmatch_charset_array; - char **argmatch_surface_array; - const char **realname_charset_array; - const char **realname_surface_array; - - /* recode.c */ - /* -------- */ - - /* Known single steps. */ - struct recode_single *single_list; - unsigned number_of_singles; - - /* Identity recoding table. */ - const unsigned char *one_to_same; - - /* Preset charsets and surfaces. */ - RECODE_CHARSET data_charset;/* special charset defining surfaces */ - RECODE_CHARSET ucs2_charset; /* UCS-2 */ - RECODE_CHARSET libiconv_pivot; /* `libiconv' internal UCS */ - RECODE_CHARSET crlf_surface; /* for IBM PC machines */ - RECODE_CHARSET cr_surface; /* for Macintosh machines */ - - /* Preset qualities, to make step initialisation simpler. */ - struct recode_quality quality_byte_reversible; - struct recode_quality quality_byte_to_byte; - struct recode_quality quality_byte_to_ucs2; - struct recode_quality quality_byte_to_variable; - struct recode_quality quality_ucs2_to_byte; - struct recode_quality quality_ucs2_to_variable; - struct recode_quality quality_variable_to_byte; - struct recode_quality quality_variable_to_ucs2; - struct recode_quality quality_variable_to_variable; -}; + { + /* This flag asks the library to diagnose and abort itself if errors. */ + bool auto_abort; + + /* If new steps should automatically have reversibility for fallback. */ + bool auto_reversibility; + + /* charset.c */ + /* --------- */ + + /* Known pairs (for restricting listing). */ + struct recode_known_pair *pair_restriction; + unsigned pair_restrictions; + + /* Opaque Hash_table pointer giving access to the single table holding all + names and aliases for charsets, surfaces and fallback methods. */ + void *alias_table; + + /* Unique symbols are linked into a list and counted. */ + RECODE_SYMBOL symbol_list; + unsigned number_of_symbols; + + /* Arrays of strings ready for argmatch. */ + char **argmatch_charset_array; + char **argmatch_surface_array; + const char **realname_charset_array; + const char **realname_surface_array; + + /* recode.c */ + /* -------- */ + + /* Known single steps. */ + struct recode_single *single_list; + unsigned number_of_singles; + + /* Identity recoding table. */ + const unsigned char *one_to_same; + + /* Preset charsets and surfaces. */ + RECODE_SYMBOL data_symbol;/* special charset defining surfaces */ + RECODE_SYMBOL tree_symbol; /* special charset defining structures */ + RECODE_SYMBOL ucs2_charset; /* UCS-2 */ + RECODE_SYMBOL libiconv_pivot; /* `libiconv' internal UCS */ + RECODE_SYMBOL crlf_surface; /* for IBM PC machines */ + RECODE_SYMBOL cr_surface; /* for Macintosh machines */ + + /* Preset qualities, to make step initialisation simpler. */ + struct recode_quality quality_byte_reversible; + struct recode_quality quality_byte_to_byte; + struct recode_quality quality_byte_to_ucs2; + struct recode_quality quality_byte_to_variable; + struct recode_quality quality_ucs2_to_byte; + struct recode_quality quality_ucs2_to_variable; + struct recode_quality quality_variable_to_byte; + struct recode_quality quality_variable_to_ucs2; + struct recode_quality quality_variable_to_variable; + }; -/*---------------------------. -| Description of a charset. | -`---------------------------*/ +/*--------------------------. +| Description of a symbol. | +`--------------------------*/ -enum recode_charset_type -{ - RECODE_NO_CHARSET_DATA, /* the charset_table field is unused */ - RECODE_STRIP_DATA, /* pool pointer and array of strips */ - RECODE_EXPLODE_DATA /* explode variable length data */ -}; +enum recode_symbol_type + { + RECODE_NO_SYMBOL_TYPE, /* missing value */ + RECODE_CHARSET, /* visible in the space of charsets */ + RECODE_DATA_SURFACE, /* this is a mere data surface */ + RECODE_TREE_SURFACE /* this is a structural surface */ + }; -struct recode_charset -{ - /* Chaining of all known charsets and surfaces. */ - RECODE_CHARSET next; +enum recode_data_type + { + RECODE_NO_CHARSET_DATA, /* the charset_table field is unused */ + RECODE_STRIP_DATA, /* pool pointer and array of strips */ + RECODE_EXPLODE_DATA /* explode variable length data */ + }; - /* Unique ordinal for this charset, counted from zero. */ - unsigned ordinal; +struct recode_symbol + { + /* Chaining of all known symbols (charsets and surfaces). */ + RECODE_SYMBOL next; - /* Main name. */ - const char *name; + /* Unique ordinal for this symbol, counted from zero. */ + unsigned ordinal; - /* Type of table. */ - enum recode_charset_type charset_type; + /* Main name. */ + const char *name; - /* Recoding table. */ - void *charset_data; + /* Type of table. */ + enum recode_data_type data_type; - /* Step for data..CHARSET transformation, if any, or NULL. */ - struct recode_single *resurfacer; + /* Recoding table. */ + void *data; - /* Step for CHARSET..data transformation, if any, or NULL. */ - struct recode_single *unsurfacer; + /* Step for data..CHARSET transformation, if any, or NULL. */ + struct recode_single *resurfacer; - /* Non zero if this is an acceptable charset (not only a surface). */ - bool charset_flag : 1; + /* Step for CHARSET..data transformation, if any, or NULL. */ + struct recode_single *unsurfacer; - /* Non zero if this one should be ignored. */ - bool ignore : 1; -}; + /* Non zero if this is an acceptable charset (not only a surface). */ + enum recode_symbol_type type : 3; + + /* Non zero if this one should be ignored. */ + bool ignore : 2; + }; struct recode_surface_list -{ - RECODE_CONST_CHARSET surface; - struct recode_surface_list *next; -}; + { + RECODE_CONST_SYMBOL surface; + struct recode_surface_list *next; + }; /*-------------------------------------------. | Description of a single step of recoding. | @@ -233,83 +243,83 @@ typedef bool (*Recode_fallback) PARAMS ((RECODE_SUBTASK, unsigned)); task execution, it may take care of fallback and option variance. */ struct recode_single -{ - /* Chaining of all known single steps. */ - struct recode_single *next; + { + /* Chaining of all known single steps. */ + struct recode_single *next; - /* Charset before conversion. */ - RECODE_CHARSET before; + /* Charset before conversion. */ + RECODE_SYMBOL before; - /* Charset after conversion. */ - RECODE_CHARSET after; + /* Charset after conversion. */ + RECODE_SYMBOL after; - /* Cost for this single step only. */ - short conversion_cost; + /* Cost for this single step only. */ + short conversion_cost; - /* Initial value for step_table. */ - void *initial_step_table; + /* Initial value for step_table. */ + void *initial_step_table; - /* Recoding quality. */ - struct recode_quality quality; + /* Recoding quality. */ + struct recode_quality quality; - /* Initialisation handler, to be called before step optimisation. */ - Recode_init init_routine; + /* Initialisation handler, to be called before step optimisation. */ + Recode_init init_routine; - /* Transformation handler, for doing the actual recoding work. */ - Recode_transform transform_routine; + /* Transformation handler, for doing the actual recoding work. */ + Recode_transform transform_routine; - /* Default fallback for the step. Merely to implement `-s' option. */ - Recode_fallback fallback_routine; -}; + /* Default fallback for the step. Merely to implement `-s' option. */ + Recode_fallback fallback_routine; + }; enum recode_step_type -{ - RECODE_NO_STEP_TABLE, /* the step_table field is unused */ - RECODE_BYTE_TO_BYTE, /* array of 256 bytes */ - RECODE_BYTE_TO_STRING, /* array of 256 strings */ - RECODE_UCS2_TO_BYTE, /* hash from ucs2 to byte */ - RECODE_UCS2_TO_STRING, /* hash from ucs2 to string */ - RECODE_STRING_TO_UCS2, /* hash from ucs2 to string, reversed */ - RECODE_COMBINE_EXPLODE, /* raw data for combining or exploding */ - RECODE_COMBINE_STEP, /* special hash for combining */ - RECODE_EXPLODE_STEP /* special hash for exploding */ -}; + { + RECODE_NO_STEP_TABLE, /* the step_table field is unused */ + RECODE_BYTE_TO_BYTE, /* array of 256 bytes */ + RECODE_BYTE_TO_STRING, /* array of 256 strings */ + RECODE_UCS2_TO_BYTE, /* hash from ucs2 to byte */ + RECODE_UCS2_TO_STRING, /* hash from ucs2 to string */ + RECODE_STRING_TO_UCS2, /* hash from ucs2 to string, reversed */ + RECODE_COMBINE_EXPLODE, /* raw data for combining or exploding */ + RECODE_COMBINE_STEP, /* special hash for combining */ + RECODE_EXPLODE_STEP /* special hash for exploding */ + }; struct recode_step -{ - /* Charset before conversion. */ - RECODE_CHARSET before; + { + /* Charset before conversion. */ + RECODE_SYMBOL before; - /* Charset after conversion. */ - RECODE_CHARSET after; + /* Charset after conversion. */ + RECODE_SYMBOL after; - /* Recoding quality. */ - struct recode_quality quality; + /* Recoding quality. */ + struct recode_quality quality; - /* Type of table. */ - enum recode_step_type step_type; + /* Type of table. */ + enum recode_step_type step_type; - /* Recoding table. */ - void *step_table; + /* Recoding table. */ + void *step_table; - /* Step specific variables. */ - void *local; + /* Step specific variables. */ + void *local; - /* Transformation handler, for doing the actual recoding work. */ - Recode_transform transform_routine; + /* Transformation handler, for doing the actual recoding work. */ + Recode_transform transform_routine; - /* Fallback for the step. */ - Recode_fallback fallback_routine; + /* Fallback for the step. */ + Recode_fallback fallback_routine; - /* Cleanup handler, to be called after the recoding is done. */ - Recode_term term_routine; -}; + /* Cleanup handler, to be called after the recoding is done. */ + Recode_term term_routine; + }; struct recode_option_list -{ - const char *option; - RECODE_OPTION_LIST next; -}; + { + const char *option; + RECODE_OPTION_LIST next; + }; /*------------------------------------------------------------------------. | A recoding request holds, among other things, a selected path among the | @@ -317,49 +327,49 @@ struct recode_option_list `------------------------------------------------------------------------*/ struct recode_request -{ - /* A request is always associated with a recoding system. */ - RECODE_OUTER outer; - - /* By setting the following flag, the program will echo to stderr the - sequence of elementary recoding steps needed to achieve the requested - recoding. */ - bool verbose_flag : 1; - - /* In `texte' charset, some countries use double quotes to mark diaeresis, - while some other prefer colons. This field contains the diaeresis - character for `texte' charset. Nominally set to a double quote, it can - be forced to a colon. Those are the only two acceptable values. */ - char diaeresis_char; - - /* If producing a recoding table in source form, there will be no actual - recoding done, and consequently, the optimisation of step sequence can - be attempted more aggressively. If the step sequence cannot be - reduced to a single step, table production will fail. */ - bool make_header_flag : 1; - - /* For `latex' charset, it is often convenient to recode the diacritics - only, while letting other LaTeX code using backslashes unrecoded. - In the other charset, one can edit text as well as LaTeX directives. */ - bool diacritics_only : 1; - - /* For `ibmpc' charset, characters 176 to 223 are use to draw boxes. - If this field is set, while getting out of `ibmpc', ASCII - characters are selected so to approximate these boxes. */ - bool ascii_graphics : 1; - - /* Array stating the sequence of conversions. */ - RECODE_STEP sequence_array; - size_t sequence_allocated; - short sequence_length; - - /* Internal variables used while scanning request text. */ - char *work_string; /* buffer space for generated work strings */ - size_t work_string_length; /* length of work_string */ - size_t work_string_allocated; /* allocated length of work_string */ - const char *scan_cursor; /* next character to be seen */ - char *scanned_string; /* buffer space to scan strings */ -}; + { + /* A request is always associated with a recoding system. */ + RECODE_OUTER outer; + + /* By setting the following flag, the program will echo to stderr the + sequence of elementary recoding steps needed to achieve the requested + recoding. */ + bool verbose_flag : 1; + + /* In `texte' charset, some countries use double quotes to mark diaeresis, + while some other prefer colons. This field contains the diaeresis + character for `texte' charset. Nominally set to a double quote, it can + be forced to a colon. Those are the only two acceptable values. */ + char diaeresis_char; + + /* If producing a recoding table in source form, there will be no actual + recoding done, and consequently, the optimisation of step sequence can + be attempted more aggressively. If the step sequence cannot be reduced + to a single step, table production will fail. */ + bool make_header_flag : 1; + + /* For `latex' charset, it is often convenient to recode the diacritics + only, while letting other LaTeX code using backslashes unrecoded. In + the other charset, one can edit text as well as LaTeX directives. */ + bool diacritics_only : 1; + + /* For `ibmpc' charset, characters 176 to 223 are use to draw boxes. If + this field is set, while getting out of `ibmpc', ASCII characters are + selected so to approximate these boxes. */ + bool ascii_graphics : 1; + + /* Array stating the sequence of conversions. */ + RECODE_STEP sequence_array; + size_t sequence_allocated; + short sequence_length; + + /* Internal variables used while scanning request text. */ + char *work_string; /* buffer space for generated work strings */ + size_t work_string_length; /* length of work_string */ + size_t work_string_allocated; /* allocated length of work_string */ + const char *scan_cursor; /* next character to be seen */ + char *scanned_string; /* buffer space to scan strings */ + }; /*--------------------------------------------------------------------. | A recoding text is either an external file or an in memory buffer. | @@ -379,41 +389,41 @@ struct recode_request reaches LIMIT, the buffer should be reallocated bigger, as needed. */ struct recode_read_only_text -{ - const char *name; - FILE *file; - const char *buffer; - const char *cursor; - const char *limit; -}; + { + const char *name; + FILE *file; + const char *buffer; + const char *cursor; + const char *limit; + }; struct recode_read_write_text -{ - const char *name; - FILE *file; - char *buffer; - char *cursor; - char *limit; -}; + { + const char *name; + FILE *file; + char *buffer; + char *cursor; + char *limit; + }; /* Tells how various passes are interconnected. */ enum recode_sequence_strategy -{ - RECODE_STRATEGY_UNDECIDED, /* sequencing strategy is undecided yet */ - RECODE_SEQUENCE_IN_MEMORY, /* keep intermediate recodings in memory */ - RECODE_SEQUENCE_WITH_FILES, /* do not fork, use intermediate files */ - RECODE_SEQUENCE_WITH_PIPE /* fork processes connected with `pipe(2)' */ -}; + { + RECODE_STRATEGY_UNDECIDED, /* sequencing strategy is undecided yet */ + RECODE_SEQUENCE_IN_MEMORY, /* keep intermediate recodings in memory */ + RECODE_SEQUENCE_WITH_FILES, /* do not fork, use intermediate files */ + RECODE_SEQUENCE_WITH_PIPE /* fork processes connected with `pipe(2)' */ + }; /* Tells how to swap the incoming pair of bytes, while reading UCS-2. */ enum recode_swap_input -{ - RECODE_SWAP_UNDECIDED, /* the text has not been read yet */ - RECODE_SWAP_NO, /* no need to swap pair of bytes */ - RECODE_SWAP_YES /* should swap incoming pair of bytes */ -}; + { + RECODE_SWAP_UNDECIDED, /* the text has not been read yet */ + RECODE_SWAP_NO, /* no need to swap pair of bytes */ + RECODE_SWAP_YES /* should swap incoming pair of bytes */ + }; /*--------------------------------------------------------------------------. | A recoding subtask associates a particular recoding step to a given input | @@ -422,21 +432,21 @@ enum recode_swap_input `--------------------------------------------------------------------------*/ struct recode_subtask -{ - /* Task for which this subtask is an element. */ - RECODE_TASK task; + { + /* Task for which this subtask is an element. */ + RECODE_TASK task; - /* Step being executed by this subtask. */ - RECODE_CONST_STEP step; + /* Step being executed by this subtask. */ + RECODE_CONST_STEP step; - /* Current input and output. */ - struct recode_read_only_text input; - struct recode_read_write_text output; + /* Current input and output. */ + struct recode_read_only_text input; + struct recode_read_write_text output; - /* Line count and character count in last line, both zero-based. */ - unsigned newline_count; - unsigned character_count; -}; + /* Line count and character count in last line, both zero-based. */ + unsigned newline_count; + unsigned character_count; + }; #define GOT_CHARACTER(Subtask) \ ((Subtask)->character_count++) @@ -450,48 +460,48 @@ struct recode_subtask `--------------------------------------------------------------------------*/ struct recode_task -{ - /* Associated request. */ - RECODE_CONST_REQUEST request; + { + /* Associated request. */ + RECODE_CONST_REQUEST request; - /* Initial input and final output. */ - struct recode_read_only_text input; - struct recode_read_write_text output; + /* Initial input and final output. */ + struct recode_read_only_text input; + struct recode_read_write_text output; - /* Tells how various recoding steps (passes) will be interconnected. */ - enum recode_sequence_strategy strategy : 3; + /* Tells how various recoding steps (passes) will be interconnected. */ + enum recode_sequence_strategy strategy : 3; - /* Produce a byte order mark on UCS-2 output, insist for it on input. */ - bool byte_order_mark : 1; + /* Produce a byte order mark on UCS-2 output, insist for it on input. */ + bool byte_order_mark : 1; - /* The input UCS-2 stream might have bytes swapped (status variable). */ - enum recode_swap_input swap_input : 3; + /* The input UCS-2 stream might have bytes swapped (status variable). */ + enum recode_swap_input swap_input : 3; - /* Error processing. */ - /* ----------------- */ + /* Error processing. */ + /* ----------------- */ - /* At this level, there will be failure. */ - enum recode_error fail_level : 5; + /* At this level, there will be failure. */ + enum recode_error fail_level : 5; - /* At this level, task should be interrupted. */ - enum recode_error abort_level : 5; + /* At this level, task should be interrupted. */ + enum recode_error abort_level : 5; - /* Maximum error level met so far (status variable). */ - enum recode_error error_so_far : 5; + /* Maximum error level met so far (status variable). */ + enum recode_error error_so_far : 5; - /* Step being executed when error_so_far was last set. */ - RECODE_CONST_STEP error_at_step; -}; + /* Step being executed when error_so_far was last set. */ + RECODE_CONST_STEP error_at_step; + }; /* Specialities for some function arguments. */ /* For restricting charset lists. */ struct recode_known_pair -{ - unsigned char left; /* first character in pair */ - unsigned char right; /* second character in pair */ -}; + { + unsigned char left; /* first character in pair */ + unsigned char right; /* second character in pair */ + }; /*----------------------. | Various definitions. | @@ -517,10 +527,10 @@ typedef unsigned short recode_ucs2; describes STRIP_SIZE UCS-2 characters. A missing character in a strip is indicated by all 16 bits set. */ struct strip_data -{ - const recode_ucs2 *pool; - const short offset[256 / STRIP_SIZE]; -}; + { + const recode_ucs2 *pool; + const short offset[256 / STRIP_SIZE]; + }; struct ucs2_to_byte { @@ -576,29 +586,25 @@ const char *ucs2_to_french_charname PARAMS ((int)); /* charset.c. */ -#define IS_CHARSET(Outer, Charset) \ - ((Charset)->charset_flag) - -#define IS_SURFACE(Outer, Charset) \ - ((Charset)->resurfacer || (Charset)->unsurfacer \ - || (Charset) == (Outer)->data_charset) - -enum symbol_find_type +enum alias_find_type { - SYMBOL_CREATE_CHARSET, /* use exactly as given, create if necessary */ - SYMBOL_FIND_AS_CHARSET, /* disambiguate only as a charset */ - SYMBOL_FIND_AS_SURFACE, /* disambiguate only as a surface */ - SYMBOL_FIND_AS_EITHER /* disambiguate as a charset or a surface */ + SYMBOL_CREATE_CHARSET, /* charset as given, create as needed */ + SYMBOL_CREATE_DATA_SURFACE, /* data surface as given, create as needed */ + SYMBOL_CREATE_TREE_SURFACE, /* tree surface as given, create as needed */ + ALIAS_FIND_AS_CHARSET, /* disambiguate only as a charset */ + ALIAS_FIND_AS_SURFACE, /* disambiguate only as a surface */ + ALIAS_FIND_AS_EITHER /* disambiguate as a charset or a surface */ }; -int code_to_ucs2 (RECODE_CONST_CHARSET, unsigned); -bool prepare_for_names PARAMS ((RECODE_OUTER)); -RECODE_SYMBOL declare_alias PARAMS ((RECODE_OUTER, const char *, const char *)); -bool declare_implied_surface PARAMS ((RECODE_OUTER, RECODE_SYMBOL, - RECODE_CONST_CHARSET)); +int code_to_ucs2 (RECODE_CONST_SYMBOL, unsigned); +bool prepare_for_aliases PARAMS ((RECODE_OUTER)); +RECODE_ALIAS declare_alias PARAMS ((RECODE_OUTER, + const char *, const char *)); +bool declare_implied_surface PARAMS ((RECODE_OUTER, RECODE_ALIAS, + RECODE_CONST_SYMBOL)); bool make_argmatch_arrays PARAMS ((RECODE_OUTER)); -RECODE_SYMBOL find_symbol PARAMS ((RECODE_OUTER, const char *, - enum symbol_find_type)); +RECODE_ALIAS find_alias PARAMS ((RECODE_OUTER, const char *, + enum alias_find_type)); bool find_and_report_subsets PARAMS ((RECODE_OUTER)); bool decode_known_pairs PARAMS ((RECODE_OUTER, const char *)); @@ -720,7 +726,7 @@ bool put_ucs4 PARAMS ((unsigned, RECODE_SUBTASK)); # define put_byte(Byte, Subtask) \ ((Subtask)->output.file \ - ? (void) putc ((Byte), (Subtask)->output.file) \ + ? (void) putc ((char) (Byte), (Subtask)->output.file) \ : (Subtask)->output.cursor == (Subtask)->output.limit \ ? put_byte_helper ((int) (Byte), (Subtask)) \ : (void) (*(Subtask)->output.cursor++ = (Byte))) diff --git a/src/request.c b/src/request.c index e5077fe..eeab4e1 100644 --- a/src/request.c +++ b/src/request.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 92, 93, 94, 96, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990,92,93,94,96,97,98,99,00 Free Software Foundation, Inc. Contributed by François Pinard , 1990. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -113,7 +113,7 @@ edit_sequence (RECODE_REQUEST request, bool edit_quality) add_work_string (request, _("*mere copy*")); else { - RECODE_CHARSET last_charset_printed = NULL; + RECODE_SYMBOL last_charset_printed = NULL; RECODE_STEP step = request->sequence_array; while (step < request->sequence_array + request->sequence_length) @@ -124,7 +124,8 @@ edit_sequence (RECODE_REQUEST request, bool edit_quality) /* Find unsurfacers. */ while (step < request->sequence_array + request->sequence_length - && step->after == outer->data_charset) + && (step->after == outer->data_symbol + || step->after == outer->tree_symbol)) step++; unsurfacer_end = step; @@ -162,14 +163,16 @@ edit_sequence (RECODE_REQUEST request, bool edit_quality) add_work_string (request, ".."); if (step < request->sequence_array + request->sequence_length - && step->before != outer->data_charset) + && step->before != outer->data_symbol + && step->before != outer->tree_symbol) { last_charset_printed = step->after; add_work_string (request, last_charset_printed->name); step++; #if 0 if ((step == request->sequence_array + request->sequence_length - || step->before != outer->data_charset) + || (step->before != outer->data_symbol + && step->before != outer->tree_symbol)) && last_charset_printed && last_charset_printed->implied_surfaces) add_work_character (request, '/'); @@ -177,14 +180,16 @@ edit_sequence (RECODE_REQUEST request, bool edit_quality) } else { - last_charset_printed = outer->data_charset; + last_charset_printed = outer->data_symbol; + /* FIXME: why not outer->tree_symbol? */ add_work_string (request, last_charset_printed->name); } /* Print resurfacers. */ while (step < request->sequence_array + request->sequence_length - && step->before == outer->data_charset) + && (step->before == outer->data_symbol + || step->before == outer->tree_symbol)) { add_work_character (request, '/'); last_charset_printed = NULL; @@ -196,12 +201,12 @@ edit_sequence (RECODE_REQUEST request, bool edit_quality) if (edit_quality) { struct recode_quality quality = outer->quality_byte_reversible; - RECODE_CONST_STEP step; + RECODE_CONST_STEP step2; - for (step = request->sequence_array; - step < request->sequence_array + request->sequence_length; - step++) - merge_qualities (&quality, step->quality); + for (step2 = request->sequence_array; + step2 < request->sequence_array + request->sequence_length; + step2++) + merge_qualities (&quality, step2->quality); add_work_character (request, ' '); add_work_character (request, '('); add_work_string (request, quality_to_string (quality)); @@ -235,10 +240,8 @@ add_to_sequence (RECODE_REQUEST request, RECODE_SINGLE single, else request->sequence_allocated *= 2; - REALLOC (request->sequence_array, request->sequence_allocated, - struct recode_step); - - if (!request->sequence_array) + if (!REALLOC (request->sequence_array, request->sequence_allocated, + struct recode_step)) { recode_error (outer, _("Virtual memory exhausted!")); return false; @@ -284,9 +287,9 @@ add_to_sequence (RECODE_REQUEST request, RECODE_SINGLE single, static bool find_sequence (RECODE_REQUEST request, - RECODE_CONST_CHARSET before, + RECODE_CONST_SYMBOL before, RECODE_CONST_OPTION_LIST before_options, - RECODE_CONST_CHARSET after, + RECODE_CONST_SYMBOL after, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; @@ -300,16 +303,16 @@ find_sequence (RECODE_REQUEST request, RECODE_SINGLE single; /* cursor in possible single_singles */ int cost; /* cost under consideration */ bool modified; /* if modified since last iteration */ - RECODE_CONST_CHARSET charset; /* charset while reconstructing */ + RECODE_CONST_SYMBOL charset; /* charset while reconstructing */ - if (!ALLOC (search_array, outer->number_of_charsets, struct search)) + if (!ALLOC (search_array, outer->number_of_symbols, struct search)) return false; /* Search for an economical route, looking our way backward from the after towards the before. */ for (search = search_array; - search < search_array + outer->number_of_charsets; + search < search_array + outer->number_of_symbols; search++) { search->single = NULL; @@ -424,7 +427,7 @@ complete_double_ucs2_step (RECODE_OUTER outer, RECODE_STEP step) { struct side { - RECODE_CHARSET charset; /* charset */ + RECODE_SYMBOL charset; /* charset */ struct item item[256]; /* array of binding items */ size_t number_of_items; /* number of binding items in array */ }; @@ -469,7 +472,7 @@ complete_double_ucs2_step (RECODE_OUTER outer, RECODE_STEP step) { /* Construct the array of binding items for the charset. */ - data = side->charset->charset_data; + data = side->charset->data; pool = data->pool; item_cursor = side->item; byte = 0; @@ -574,10 +577,10 @@ simplify_sequence (RECODE_REQUEST request) while (in < limit) if (in < limit - 1 - && in[0].before->charset_type == RECODE_STRIP_DATA + && in[0].before->data_type == RECODE_STRIP_DATA && in[0].after == outer->ucs2_charset && in[1].before == outer->ucs2_charset - && in[1].after->charset_type == RECODE_STRIP_DATA) + && in[1].after->data_type == RECODE_STRIP_DATA) { /* This is a double UCS-2 step. */ out->before = in[0].before; @@ -727,7 +730,6 @@ simplify_sequence (RECODE_REQUEST request) static bool scan_identifier (RECODE_REQUEST request) { - RECODE_OUTER outer = request->outer; char *cursor = request->scanned_string; while (*request->scan_cursor && *request->scan_cursor != ',' @@ -806,23 +808,23 @@ static bool scan_unsurfacers (RECODE_REQUEST request) { RECODE_OUTER outer = request->outer; - RECODE_CHARSET surface = NULL; + RECODE_SYMBOL surface = NULL; RECODE_OPTION_LIST surface_options = NULL; request->scan_cursor++; scan_identifier (request); if (*request->scanned_string) { - RECODE_SYMBOL symbol = find_symbol (outer, request->scanned_string, - SYMBOL_FIND_AS_SURFACE); + RECODE_ALIAS alias = find_alias (outer, request->scanned_string, + ALIAS_FIND_AS_SURFACE); - if (!symbol) + if (!alias) { recode_error (outer, _("Unrecognised surface name `%s'"), request->scanned_string); return false; } - surface = symbol->charset; + surface = alias->symbol; /* FIXME: Should check that it does not itself have implied surfaces? */ } if (*request->scan_cursor == '+') @@ -855,6 +857,8 @@ add_unsurfacers_to_sequence (RECODE_REQUEST request, if (list->surface->unsurfacer) return add_to_sequence (request, list->surface->unsurfacer, NULL, NULL); + + return true; } /*---------------------------------------------------------------------------. @@ -870,24 +874,24 @@ add_unsurfacers_to_sequence (RECODE_REQUEST request, | going on if VERBOSE. | `---------------------------------------------------------------------------*/ -static RECODE_CHARSET +static RECODE_SYMBOL scan_charset (RECODE_REQUEST request, - RECODE_CONST_CHARSET before, + RECODE_CONST_SYMBOL before, RECODE_CONST_OPTION_LIST before_options, RECODE_OPTION_LIST *options_pointer) { RECODE_OUTER outer = request->outer; - RECODE_SYMBOL symbol; - RECODE_CHARSET charset; + RECODE_ALIAS alias; + RECODE_SYMBOL charset; RECODE_OPTION_LIST charset_options = NULL; scan_identifier (request); - symbol = find_symbol (outer, request->scanned_string, SYMBOL_FIND_AS_EITHER); + alias = find_alias (outer, request->scanned_string, ALIAS_FIND_AS_EITHER); if (*request->scan_cursor == '+') charset_options = scan_options (request); - if (!symbol) + if (!alias) return NULL; - charset = symbol->charset; + charset = alias->symbol; if (before) { @@ -906,51 +910,53 @@ scan_charset (RECODE_REQUEST request, these would be immediately followed by their removal. */ if (scan_check_if_last_charset (request)) - if (*request->scan_cursor == '/') - { - while (*request->scan_cursor == '/') - { - RECODE_CHARSET surface = NULL; - RECODE_OPTION_LIST surface_options = NULL; - - request->scan_cursor++; - scan_identifier (request); - if (*request->scanned_string) - { - RECODE_SYMBOL symbol - = find_symbol (outer, request->scanned_string, - SYMBOL_FIND_AS_SURFACE); - - if (!symbol) - { - recode_error (outer, - _("Unrecognised surface name `%s'"), - request->scanned_string); - return NULL; - } - surface = symbol->charset; - /* FIXME: Should check that it does not itself have - implied surfaces? */ - } - if (*request->scan_cursor == '+') - surface_options = scan_options (request); + { + if (*request->scan_cursor == '/') + { + while (*request->scan_cursor == '/') + { + RECODE_SYMBOL surface = NULL; + RECODE_OPTION_LIST surface_options = NULL; + + request->scan_cursor++; + scan_identifier (request); + if (*request->scanned_string) + { + RECODE_ALIAS alias2 + = find_alias (outer, request->scanned_string, + ALIAS_FIND_AS_SURFACE); + + if (!alias2) + { + recode_error (outer, + _("Unrecognised surface name `%s'"), + request->scanned_string); + return NULL; + } + surface = alias2->symbol; + /* FIXME: Should check that it does not itself have + implied surfaces? */ + } + if (*request->scan_cursor == '+') + surface_options = scan_options (request); + + if (surface && surface->resurfacer) + if (!add_to_sequence (request, surface->resurfacer, + NULL, surface_options)) + return NULL; + } + } + else if (alias->implied_surfaces && !request->make_header_flag) + { + struct recode_surface_list *list; - if (surface && surface->resurfacer) - if (!add_to_sequence (request, surface->resurfacer, - NULL, surface_options)) + for (list = alias->implied_surfaces; list; list = list->next) + if (list->surface->resurfacer) + if (!add_to_sequence (request, list->surface->resurfacer, + NULL, NULL)) return NULL; - } - } - else if (symbol->implied_surfaces && !request->make_header_flag) - { - struct recode_surface_list *list; - - for (list = symbol->implied_surfaces; list; list = list->next) - if (list->surface->resurfacer) - if (!add_to_sequence (request, list->surface->resurfacer, - NULL, NULL)) - return NULL; - } + } + } } else { @@ -963,9 +969,9 @@ scan_charset (RECODE_REQUEST request, if (!scan_unsurfacers (request)) return NULL; } - else if (symbol->implied_surfaces && !request->make_header_flag) + else if (alias->implied_surfaces && !request->make_header_flag) { - if (!add_unsurfacers_to_sequence (request, symbol->implied_surfaces)) + if (!add_unsurfacers_to_sequence (request, alias->implied_surfaces)) return NULL; } } @@ -982,7 +988,7 @@ scan_request (RECODE_REQUEST request) { RECODE_OUTER outer = request->outer; RECODE_OPTION_LIST options; - RECODE_CHARSET charset = scan_charset (request, NULL, NULL, &options); + RECODE_SYMBOL charset = scan_charset (request, NULL, NULL, &options); if (!charset) return false; diff --git a/src/rfc1345.c b/src/rfc1345.c index aad8098..0b3c89d 100644 --- a/src/rfc1345.c +++ b/src/rfc1345.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1993, 94, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1993, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1993. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -189,7 +189,7 @@ transform_rfc1345_ucs2 (RECODE_SUBTASK subtask) } else { - buffer[*cursor++] = character; + *cursor++ = character; character = get_byte (subtask); } } diff --git a/src/rfc1345.h b/src/rfc1345.h index e4ae446..9eca38e 100644 --- a/src/rfc1345.h +++ b/src/rfc1345.h @@ -1,25 +1,25 @@ /* DO NOT MODIFY THIS FILE! It was generated by `recode/doc/tables.py'. */ /* Conversion of files between different charsets and surfaces. - Copyright © 1999 Free Software Foundation, Inc. + Copyright © 1999, 2000 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#define TABLE_LENGTH 2019 +#define TABLE_LENGTH 2021 #define MAX_MNEMONIC_LENGTH 3 struct entry @@ -94,7 +94,7 @@ static const struct entry table[TABLE_LENGTH] = /* 61 */ {0x003D, "="}, /* 62 */ {0x003E, ">"}, /* 63 */ {0x003F, "?"}, - /* 64 */ {0x0040, "@"}, + /* 64 */ {0x0040, "At"}, /* 65 */ {0x0041, "A"}, /* 66 */ {0x0042, "B"}, /* 67 */ {0x0043, "C"}, @@ -1195,1064 +1195,1067 @@ static const struct entry table[TABLE_LENGTH] = /* 1162 */ {0x20A4, "Li"}, /* 1163 */ {0x20A7, "Pt"}, /* 1164 */ {0x20A9, "W="}, - /* 1165 */ {0x20AC, "Eu"}, - /* 1166 */ {0x20D1, "\"7"}, - /* 1167 */ {0x2103, "oC"}, - /* 1168 */ {0x2105, "co"}, - /* 1169 */ {0x2109, "oF"}, - /* 1170 */ {0x2116, "N0"}, - /* 1171 */ {0x2117, "PO"}, - /* 1172 */ {0x211E, "Rx"}, - /* 1173 */ {0x2120, "SM"}, - /* 1174 */ {0x2122, "TM"}, - /* 1175 */ {0x2126, "Om"}, - /* 1176 */ {0x212B, "AO"}, - /* 1177 */ {0x212E, "Est"}, - /* 1178 */ {0x2153, "13"}, - /* 1179 */ {0x2154, "23"}, - /* 1180 */ {0x2155, "15"}, - /* 1181 */ {0x2156, "25"}, - /* 1182 */ {0x2157, "35"}, - /* 1183 */ {0x2158, "45"}, - /* 1184 */ {0x2159, "16"}, - /* 1185 */ {0x215A, "56"}, - /* 1186 */ {0x215B, "18"}, - /* 1187 */ {0x215C, "38"}, - /* 1188 */ {0x215D, "58"}, - /* 1189 */ {0x215E, "78"}, - /* 1190 */ {0x2160, "1R"}, - /* 1191 */ {0x2161, "2R"}, - /* 1192 */ {0x2162, "3R"}, - /* 1193 */ {0x2163, "4R"}, - /* 1194 */ {0x2164, "5R"}, - /* 1195 */ {0x2165, "6R"}, - /* 1196 */ {0x2166, "7R"}, - /* 1197 */ {0x2167, "8R"}, - /* 1198 */ {0x2168, "9R"}, - /* 1199 */ {0x2169, "aR"}, - /* 1200 */ {0x216A, "bR"}, - /* 1201 */ {0x216B, "cR"}, - /* 1202 */ {0x216C, "50R"}, - /* 1203 */ {0x2170, "1r"}, - /* 1204 */ {0x2171, "2r"}, - /* 1205 */ {0x2172, "3r"}, - /* 1206 */ {0x2173, "4r"}, - /* 1207 */ {0x2174, "5r"}, - /* 1208 */ {0x2175, "6r"}, - /* 1209 */ {0x2176, "7r"}, - /* 1210 */ {0x2177, "8r"}, - /* 1211 */ {0x2178, "9r"}, - /* 1212 */ {0x2179, "ar"}, - /* 1213 */ {0x217A, "br"}, - /* 1214 */ {0x217B, "cr"}, - /* 1215 */ {0x217C, "50r"}, - /* 1216 */ {0x2190, "<-"}, - /* 1217 */ {0x2191, "-!"}, - /* 1218 */ {0x2192, "->"}, - /* 1219 */ {0x2193, "-v"}, - /* 1220 */ {0x2194, "<>"}, - /* 1221 */ {0x2195, "UD"}, - /* 1222 */ {0x2196, ""}, - /* 1224 */ {0x2198, "!!>"}, - /* 1225 */ {0x2199, "V"}, - /* 1228 */ {0x21D0, "<="}, - /* 1229 */ {0x21D2, "=>"}, - /* 1230 */ {0x21D4, "=="}, - /* 1231 */ {0x2200, "FA"}, - /* 1232 */ {0x2202, "dP"}, - /* 1233 */ {0x2203, "TE"}, - /* 1234 */ {0x2205, "/0"}, - /* 1235 */ {0x2206, "DE"}, - /* 1236 */ {0x2207, "NB"}, - /* 1237 */ {0x2208, "(-"}, - /* 1238 */ {0x220B, "-)"}, - /* 1239 */ {0x220E, "FP"}, - /* 1240 */ {0x220F, "*P"}, - /* 1241 */ {0x2211, "+Z"}, - /* 1242 */ {0x2212, "-2"}, - /* 1243 */ {0x2213, "-+"}, - /* 1244 */ {0x2214, ".+"}, - /* 1245 */ {0x2217, "*-"}, - /* 1246 */ {0x2218, "Ob"}, - /* 1247 */ {0x2219, "Sb"}, - /* 1248 */ {0x221A, "RT"}, - /* 1249 */ {0x221D, "0("}, - /* 1250 */ {0x221E, "00"}, - /* 1251 */ {0x221F, "-L"}, - /* 1252 */ {0x2220, "-V"}, - /* 1253 */ {0x2225, "PP"}, - /* 1254 */ {0x2227, "AN"}, - /* 1255 */ {0x2228, "OR"}, - /* 1256 */ {0x2229, "(U"}, - /* 1257 */ {0x222A, ")U"}, - /* 1258 */ {0x222B, "In"}, - /* 1259 */ {0x222C, "DI"}, - /* 1260 */ {0x222E, "Io"}, - /* 1261 */ {0x2234, ".:"}, - /* 1262 */ {0x2235, ":."}, - /* 1263 */ {0x2236, ":R"}, - /* 1264 */ {0x2237, "::"}, - /* 1265 */ {0x223C, "?1"}, - /* 1266 */ {0x223E, "CG"}, - /* 1267 */ {0x2243, "?-"}, - /* 1268 */ {0x2245, "?="}, - /* 1269 */ {0x2248, "?2"}, - /* 1270 */ {0x224C, "=?"}, - /* 1271 */ {0x2253, "HI"}, - /* 1272 */ {0x2260, "!="}, - /* 1273 */ {0x2261, "=3"}, - /* 1274 */ {0x2264, "=<"}, - /* 1275 */ {0x2265, ">="}, - /* 1276 */ {0x226A, "<*"}, - /* 1277 */ {0x226B, "*>"}, - /* 1278 */ {0x226E, "!<"}, - /* 1279 */ {0x226F, "!>"}, - /* 1280 */ {0x2282, "(C"}, - /* 1281 */ {0x2283, ")C"}, - /* 1282 */ {0x2286, "(_"}, - /* 1283 */ {0x2287, ")_"}, - /* 1284 */ {0x2299, "0."}, - /* 1285 */ {0x229A, "02"}, - /* 1286 */ {0x22A5, "-T"}, - /* 1287 */ {0x22C5, ".P"}, - /* 1288 */ {0x22EE, ":3"}, - /* 1289 */ {0x2302, "Eh"}, - /* 1290 */ {0x2308, "<7"}, - /* 1291 */ {0x2309, ">7"}, - /* 1292 */ {0x230A, "7<"}, - /* 1293 */ {0x230B, "7>"}, - /* 1294 */ {0x2310, "NI"}, - /* 1295 */ {0x2312, "(A"}, - /* 1296 */ {0x2315, "TR"}, - /* 1297 */ {0x2318, "88"}, - /* 1298 */ {0x2320, "Iu"}, - /* 1299 */ {0x2321, "Il"}, - /* 1300 */ {0x2329, ""}, - /* 1302 */ {0x2423, "Vs"}, - /* 1303 */ {0x2440, "1h"}, - /* 1304 */ {0x2441, "3h"}, - /* 1305 */ {0x2442, "2h"}, - /* 1306 */ {0x2443, "4h"}, - /* 1307 */ {0x2446, "1j"}, - /* 1308 */ {0x2447, "2j"}, - /* 1309 */ {0x2448, "3j"}, - /* 1310 */ {0x2449, "4j"}, - /* 1311 */ {0x2460, "1-o"}, - /* 1312 */ {0x2461, "2-o"}, - /* 1313 */ {0x2462, "3-o"}, - /* 1314 */ {0x2463, "4-o"}, - /* 1315 */ {0x2464, "5-o"}, - /* 1316 */ {0x2465, "6-o"}, - /* 1317 */ {0x2466, "7-o"}, - /* 1318 */ {0x2467, "8-o"}, - /* 1319 */ {0x2468, "9-o"}, - /* 1320 */ {0x2474, "(1)"}, - /* 1321 */ {0x2475, "(2)"}, - /* 1322 */ {0x2476, "(3)"}, - /* 1323 */ {0x2477, "(4)"}, - /* 1324 */ {0x2478, "(5)"}, - /* 1325 */ {0x2479, "(6)"}, - /* 1326 */ {0x247A, "(7)"}, - /* 1327 */ {0x247B, "(8)"}, - /* 1328 */ {0x247C, "(9)"}, - /* 1329 */ {0x2488, "1."}, - /* 1330 */ {0x2489, "2."}, - /* 1331 */ {0x248A, "3."}, - /* 1332 */ {0x248B, "4."}, - /* 1333 */ {0x248C, "5."}, - /* 1334 */ {0x248D, "6."}, - /* 1335 */ {0x248E, "7."}, - /* 1336 */ {0x248F, "8."}, - /* 1337 */ {0x2490, "9."}, - /* 1338 */ {0x2491, "10."}, - /* 1339 */ {0x2492, "11."}, - /* 1340 */ {0x2493, "12."}, - /* 1341 */ {0x2494, "13."}, - /* 1342 */ {0x2495, "14."}, - /* 1343 */ {0x2496, "15."}, - /* 1344 */ {0x2497, "16."}, - /* 1345 */ {0x2498, "17."}, - /* 1346 */ {0x2499, "18."}, - /* 1347 */ {0x249A, "19."}, - /* 1348 */ {0x249B, "20."}, - /* 1349 */ {0x249C, "(a)"}, - /* 1350 */ {0x249D, "(b)"}, - /* 1351 */ {0x249E, "(c)"}, - /* 1352 */ {0x249F, "(d)"}, - /* 1353 */ {0x24A0, "(e)"}, - /* 1354 */ {0x24A1, "(f)"}, - /* 1355 */ {0x24A2, "(g)"}, - /* 1356 */ {0x24A3, "(h)"}, - /* 1357 */ {0x24A4, "(i)"}, - /* 1358 */ {0x24A5, "(j)"}, - /* 1359 */ {0x24A6, "(k)"}, - /* 1360 */ {0x24A7, "(l)"}, - /* 1361 */ {0x24A8, "(m)"}, - /* 1362 */ {0x24A9, "(n)"}, - /* 1363 */ {0x24AA, "(o)"}, - /* 1364 */ {0x24AB, "(p)"}, - /* 1365 */ {0x24AC, "(q)"}, - /* 1366 */ {0x24AD, "(r)"}, - /* 1367 */ {0x24AE, "(s)"}, - /* 1368 */ {0x24AF, "(t)"}, - /* 1369 */ {0x24B0, "(u)"}, - /* 1370 */ {0x24B1, "(v)"}, - /* 1371 */ {0x24B2, "(w)"}, - /* 1372 */ {0x24B3, "(x)"}, - /* 1373 */ {0x24B4, "(y)"}, - /* 1374 */ {0x24B5, "(z)"}, - /* 1375 */ {0x24B6, "A-o"}, - /* 1376 */ {0x24B7, "B-o"}, - /* 1377 */ {0x24B8, "C-o"}, - /* 1378 */ {0x24B9, "D-o"}, - /* 1379 */ {0x24BA, "E-o"}, - /* 1380 */ {0x24BB, "F-o"}, - /* 1381 */ {0x24BC, "G-o"}, - /* 1382 */ {0x24BD, "H-o"}, - /* 1383 */ {0x24BE, "I-o"}, - /* 1384 */ {0x24BF, "J-o"}, - /* 1385 */ {0x24C0, "K-o"}, - /* 1386 */ {0x24C1, "L-o"}, - /* 1387 */ {0x24C2, "M-o"}, - /* 1388 */ {0x24C3, "N-o"}, - /* 1389 */ {0x24C4, "O-o"}, - /* 1390 */ {0x24C5, "P-o"}, - /* 1391 */ {0x24C6, "Q-o"}, - /* 1392 */ {0x24C7, "R-o"}, - /* 1393 */ {0x24C8, "S-o"}, - /* 1394 */ {0x24C9, "T-o"}, - /* 1395 */ {0x24CA, "U-o"}, - /* 1396 */ {0x24CB, "V-o"}, - /* 1397 */ {0x24CC, "W-o"}, - /* 1398 */ {0x24CD, "X-o"}, - /* 1399 */ {0x24CE, "Y-o"}, - /* 1400 */ {0x24CF, "Z-o"}, - /* 1401 */ {0x24D0, "a-o"}, - /* 1402 */ {0x24D1, "b-o"}, - /* 1403 */ {0x24D2, "c-o"}, - /* 1404 */ {0x24D3, "d-o"}, - /* 1405 */ {0x24D4, "e-o"}, - /* 1406 */ {0x24D5, "f-o"}, - /* 1407 */ {0x24D6, "g-o"}, - /* 1408 */ {0x24D7, "h-o"}, - /* 1409 */ {0x24D8, "i-o"}, - /* 1410 */ {0x24D9, "j-o"}, - /* 1411 */ {0x24DA, "k-o"}, - /* 1412 */ {0x24DB, "l-o"}, - /* 1413 */ {0x24DC, "m-o"}, - /* 1414 */ {0x24DD, "n-o"}, - /* 1415 */ {0x24DE, "o-o"}, - /* 1416 */ {0x24DF, "p-o"}, - /* 1417 */ {0x24E0, "q-o"}, - /* 1418 */ {0x24E1, "r-o"}, - /* 1419 */ {0x24E2, "s-o"}, - /* 1420 */ {0x24E3, "t-o"}, - /* 1421 */ {0x24E4, "u-o"}, - /* 1422 */ {0x24E5, "v-o"}, - /* 1423 */ {0x24E6, "w-o"}, - /* 1424 */ {0x24E7, "x-o"}, - /* 1425 */ {0x24E8, "y-o"}, - /* 1426 */ {0x24E9, "z-o"}, - /* 1427 */ {0x24EA, "0-o"}, - /* 1428 */ {0x2500, "hh"}, - /* 1429 */ {0x2501, "_="}, - /* 1430 */ {0x2502, "vv"}, - /* 1431 */ {0x2503, "VV-"}, - /* 1432 */ {0x2504, "3-"}, - /* 1433 */ {0x2505, "3_"}, - /* 1434 */ {0x2506, "3!"}, - /* 1435 */ {0x2507, "3/"}, - /* 1436 */ {0x2508, "4-"}, - /* 1437 */ {0x2509, "4_"}, - /* 1438 */ {0x250A, "4!"}, - /* 1439 */ {0x250B, "4/"}, - /* 1440 */ {0x250C, "dr"}, - /* 1441 */ {0x250D, "dR-"}, - /* 1442 */ {0x250E, "Dr-"}, - /* 1443 */ {0x250F, "DR-"}, - /* 1444 */ {0x2510, "dl"}, - /* 1445 */ {0x2511, "dL-"}, - /* 1446 */ {0x2512, "Dl-"}, - /* 1447 */ {0x2513, "LD-"}, - /* 1448 */ {0x2514, "ur"}, - /* 1449 */ {0x2515, "uR-"}, - /* 1450 */ {0x2516, "Ur-"}, - /* 1451 */ {0x2517, "UR-"}, - /* 1452 */ {0x2518, "ul"}, - /* 1453 */ {0x2519, "uL-"}, - /* 1454 */ {0x251A, "Ul-"}, - /* 1455 */ {0x251B, "UL-"}, - /* 1456 */ {0x251C, "vr"}, - /* 1457 */ {0x251D, "vR-"}, - /* 1458 */ {0x251E, "Udr"}, - /* 1459 */ {0x251F, "uDr"}, - /* 1460 */ {0x2520, "Vr-"}, - /* 1461 */ {0x2521, "UdR"}, - /* 1462 */ {0x2522, "uDR"}, - /* 1463 */ {0x2523, "VR-"}, - /* 1464 */ {0x2524, "vl"}, - /* 1465 */ {0x2525, "vL-"}, - /* 1466 */ {0x2526, "Udl"}, - /* 1467 */ {0x2527, "uDl"}, - /* 1468 */ {0x2528, "Vl-"}, - /* 1469 */ {0x2529, "UdL"}, - /* 1470 */ {0x252A, "uDL"}, - /* 1471 */ {0x252B, "VL-"}, - /* 1472 */ {0x252C, "dh"}, - /* 1473 */ {0x252D, "dLr"}, - /* 1474 */ {0x252E, "dlR"}, - /* 1475 */ {0x252F, "dH-"}, - /* 1476 */ {0x2530, "Dh-"}, - /* 1477 */ {0x2531, "DLr"}, - /* 1478 */ {0x2532, "DlR"}, - /* 1479 */ {0x2533, "DH-"}, - /* 1480 */ {0x2534, "uh"}, - /* 1481 */ {0x2535, "uLr"}, - /* 1482 */ {0x2536, "ulR"}, - /* 1483 */ {0x2537, "uH-"}, - /* 1484 */ {0x2538, "Uh-"}, - /* 1485 */ {0x2539, "ULr"}, - /* 1486 */ {0x253A, "UlR"}, - /* 1487 */ {0x253B, "UH-"}, - /* 1488 */ {0x253C, "vh"}, - /* 1489 */ {0x253D, "vLr"}, - /* 1490 */ {0x253E, "vlR"}, - /* 1491 */ {0x253F, "vH-"}, - /* 1492 */ {0x2540, "Udh"}, - /* 1493 */ {0x2541, "uDh"}, - /* 1494 */ {0x2542, "Vh-"}, - /* 1495 */ {0x2547, "UdH"}, - /* 1496 */ {0x2548, "uDH"}, - /* 1497 */ {0x2549, "VLr"}, - /* 1498 */ {0x254A, "VlR"}, - /* 1499 */ {0x254B, "VH-"}, - /* 1500 */ {0x2550, "HH"}, - /* 1501 */ {0x2551, "VV"}, - /* 1502 */ {0x2552, "dR"}, - /* 1503 */ {0x2553, "Dr"}, - /* 1504 */ {0x2554, "DR"}, - /* 1505 */ {0x2555, "dL"}, - /* 1506 */ {0x2556, "Dl"}, - /* 1507 */ {0x2557, "LD"}, - /* 1508 */ {0x2558, "uR"}, - /* 1509 */ {0x2559, "Ur"}, - /* 1510 */ {0x255A, "UR"}, - /* 1511 */ {0x255B, "uL"}, - /* 1512 */ {0x255C, "Ul"}, - /* 1513 */ {0x255D, "UL"}, - /* 1514 */ {0x255E, "vR"}, - /* 1515 */ {0x255F, "Vr"}, - /* 1516 */ {0x2560, "VR"}, - /* 1517 */ {0x2561, "vL"}, - /* 1518 */ {0x2562, "Vl"}, - /* 1519 */ {0x2563, "VL"}, - /* 1520 */ {0x2564, "dH"}, - /* 1521 */ {0x2565, "Dh"}, - /* 1522 */ {0x2566, "DH"}, - /* 1523 */ {0x2567, "uH"}, - /* 1524 */ {0x2568, "Uh"}, - /* 1525 */ {0x2569, "UH"}, - /* 1526 */ {0x256A, "vH"}, - /* 1527 */ {0x256B, "Vh"}, - /* 1528 */ {0x256C, "VH"}, - /* 1529 */ {0x2571, "FD"}, - /* 1530 */ {0x2572, "BD"}, - /* 1531 */ {0x2580, "TB"}, - /* 1532 */ {0x2584, "LB"}, - /* 1533 */ {0x2588, "FB"}, - /* 1534 */ {0x258C, "lB"}, - /* 1535 */ {0x2590, "RB"}, - /* 1536 */ {0x2591, ".S"}, - /* 1537 */ {0x2592, ":S"}, - /* 1538 */ {0x2593, "?S"}, - /* 1539 */ {0x25A0, "fS"}, - /* 1540 */ {0x25A1, "OS"}, - /* 1541 */ {0x25A2, "RO"}, - /* 1542 */ {0x25A3, "Rr"}, - /* 1543 */ {0x25A4, "RF"}, - /* 1544 */ {0x25A5, "RY"}, - /* 1545 */ {0x25A6, "RH"}, - /* 1546 */ {0x25A7, "RZ"}, - /* 1547 */ {0x25A8, "RK"}, - /* 1548 */ {0x25A9, "RX"}, - /* 1549 */ {0x25AA, "sB"}, - /* 1550 */ {0x25AC, "SR"}, - /* 1551 */ {0x25AD, "Or"}, - /* 1552 */ {0x25B2, "UT"}, - /* 1553 */ {0x25B3, "uT"}, - /* 1554 */ {0x25B7, "Tr"}, - /* 1555 */ {0x25BA, "PR"}, - /* 1556 */ {0x25BC, "Dt"}, - /* 1557 */ {0x25BD, "dT"}, - /* 1558 */ {0x25C1, "Tl"}, - /* 1559 */ {0x25C4, "PL"}, - /* 1560 */ {0x25C6, "Db"}, - /* 1561 */ {0x25C7, "Dw"}, - /* 1562 */ {0x25CA, "LZ"}, - /* 1563 */ {0x25CB, "0m"}, - /* 1564 */ {0x25CE, "0o"}, - /* 1565 */ {0x25CF, "0M"}, - /* 1566 */ {0x25D0, "0L"}, - /* 1567 */ {0x25D1, "0R"}, - /* 1568 */ {0x25D8, "Sn"}, - /* 1569 */ {0x25D9, "Ic"}, - /* 1570 */ {0x25E2, "Fd"}, - /* 1571 */ {0x25E3, "Bd"}, - /* 1572 */ {0x25EF, "Ci"}, - /* 1573 */ {0x2605, "*2"}, - /* 1574 */ {0x2606, "*1"}, - /* 1575 */ {0x260E, "TEL"}, - /* 1576 */ {0x260F, "tel"}, - /* 1577 */ {0x261C, "H"}, - /* 1579 */ {0x263A, "0u"}, - /* 1580 */ {0x263B, "0U"}, - /* 1581 */ {0x263C, "SU"}, - /* 1582 */ {0x2640, "Fm"}, - /* 1583 */ {0x2642, "Ml"}, - /* 1584 */ {0x2660, "cS"}, - /* 1585 */ {0x2661, "cH"}, - /* 1586 */ {0x2662, "cD"}, - /* 1587 */ {0x2663, "cC"}, - /* 1588 */ {0x2664, "cS-"}, - /* 1589 */ {0x2665, "cH-"}, - /* 1590 */ {0x2666, "cD-"}, - /* 1591 */ {0x2667, "cC-"}, - /* 1592 */ {0x2669, "Md"}, - /* 1593 */ {0x266A, "M8"}, - /* 1594 */ {0x266B, "M2"}, - /* 1595 */ {0x266C, "M16"}, - /* 1596 */ {0x266D, "Mb"}, - /* 1597 */ {0x266E, "Mx"}, - /* 1598 */ {0x266F, "MX"}, - /* 1599 */ {0x2713, "OK"}, - /* 1600 */ {0x2717, "XX"}, - /* 1601 */ {0x2720, "-X"}, - /* 1602 */ {0x3000, "IS"}, - /* 1603 */ {0x3001, ",_"}, - /* 1604 */ {0x3002, "._"}, - /* 1605 */ {0x3003, "+\""}, - /* 1606 */ {0x3004, "JIS"}, - /* 1607 */ {0x3005, "*_"}, - /* 1608 */ {0x3006, ";_"}, - /* 1609 */ {0x3007, "0_"}, - /* 1610 */ {0x300A, "<+"}, - /* 1611 */ {0x300B, ">+"}, - /* 1612 */ {0x300C, "<'"}, - /* 1613 */ {0x300D, ">'"}, - /* 1614 */ {0x300E, "<\""}, - /* 1615 */ {0x300F, ">\""}, - /* 1616 */ {0x3010, "(\""}, - /* 1617 */ {0x3011, ")\""}, - /* 1618 */ {0x3012, "=T"}, - /* 1619 */ {0x3013, "=_"}, - /* 1620 */ {0x3014, "('"}, - /* 1621 */ {0x3015, ")'"}, - /* 1622 */ {0x3016, "(I"}, - /* 1623 */ {0x3017, ")I"}, - /* 1624 */ {0x301C, "-?"}, - /* 1625 */ {0x3041, "A5"}, - /* 1626 */ {0x3042, "a5"}, - /* 1627 */ {0x3043, "I5"}, - /* 1628 */ {0x3044, "i5"}, - /* 1629 */ {0x3045, "U5"}, - /* 1630 */ {0x3046, "u5"}, - /* 1631 */ {0x3047, "E5"}, - /* 1632 */ {0x3048, "e5"}, - /* 1633 */ {0x3049, "O5"}, - /* 1634 */ {0x304A, "o5"}, - /* 1635 */ {0x304B, "ka"}, - /* 1636 */ {0x304C, "ga"}, - /* 1637 */ {0x304D, "ki"}, - /* 1638 */ {0x304E, "gi"}, - /* 1639 */ {0x304F, "ku"}, - /* 1640 */ {0x3050, "gu"}, - /* 1641 */ {0x3051, "ke"}, - /* 1642 */ {0x3052, "ge"}, - /* 1643 */ {0x3053, "ko"}, - /* 1644 */ {0x3054, "go"}, - /* 1645 */ {0x3055, "sa"}, - /* 1646 */ {0x3056, "za"}, - /* 1647 */ {0x3057, "si"}, - /* 1648 */ {0x3058, "zi"}, - /* 1649 */ {0x3059, "su"}, - /* 1650 */ {0x305A, "zu"}, - /* 1651 */ {0x305B, "se"}, - /* 1652 */ {0x305C, "ze"}, - /* 1653 */ {0x305D, "so"}, - /* 1654 */ {0x305E, "zo"}, - /* 1655 */ {0x305F, "ta"}, - /* 1656 */ {0x3060, "da"}, - /* 1657 */ {0x3061, "ti"}, - /* 1658 */ {0x3062, "di"}, - /* 1659 */ {0x3063, "tU"}, - /* 1660 */ {0x3064, "tu"}, - /* 1661 */ {0x3065, "du"}, - /* 1662 */ {0x3066, "te"}, - /* 1663 */ {0x3067, "de"}, - /* 1664 */ {0x3068, "to"}, - /* 1665 */ {0x3069, "do"}, - /* 1666 */ {0x306A, "na"}, - /* 1667 */ {0x306B, "ni"}, - /* 1668 */ {0x306C, "nu"}, - /* 1669 */ {0x306D, "ne"}, - /* 1670 */ {0x306E, "no"}, - /* 1671 */ {0x306F, "ha"}, - /* 1672 */ {0x3070, "ba"}, - /* 1673 */ {0x3071, "pa"}, - /* 1674 */ {0x3072, "hi"}, - /* 1675 */ {0x3073, "bi"}, - /* 1676 */ {0x3074, "pi"}, - /* 1677 */ {0x3075, "hu"}, - /* 1678 */ {0x3076, "bu"}, - /* 1679 */ {0x3077, "pu"}, - /* 1680 */ {0x3078, "he"}, - /* 1681 */ {0x3079, "be"}, - /* 1682 */ {0x307A, "pe"}, - /* 1683 */ {0x307B, "ho"}, - /* 1684 */ {0x307C, "bo"}, - /* 1685 */ {0x307D, "po"}, - /* 1686 */ {0x307E, "ma"}, - /* 1687 */ {0x307F, "mi"}, - /* 1688 */ {0x3080, "mu"}, - /* 1689 */ {0x3081, "me"}, - /* 1690 */ {0x3082, "mo"}, - /* 1691 */ {0x3083, "yA"}, - /* 1692 */ {0x3084, "ya"}, - /* 1693 */ {0x3085, "yU"}, - /* 1694 */ {0x3086, "yu"}, - /* 1695 */ {0x3087, "yO"}, - /* 1696 */ {0x3088, "yo"}, - /* 1697 */ {0x3089, "ra"}, - /* 1698 */ {0x308A, "ri"}, - /* 1699 */ {0x308B, "ru"}, - /* 1700 */ {0x308C, "re"}, - /* 1701 */ {0x308D, "ro"}, - /* 1702 */ {0x308E, "wA"}, - /* 1703 */ {0x308F, "wa"}, - /* 1704 */ {0x3090, "wi"}, - /* 1705 */ {0x3091, "we"}, - /* 1706 */ {0x3092, "wo"}, - /* 1707 */ {0x3093, "n5"}, - /* 1708 */ {0x3094, "vu"}, - /* 1709 */ {0x309B, "\"5"}, - /* 1710 */ {0x309C, "05"}, - /* 1711 */ {0x309D, "*5"}, - /* 1712 */ {0x309E, "+5"}, - /* 1713 */ {0x30A1, "a6"}, - /* 1714 */ {0x30A2, "A6"}, - /* 1715 */ {0x30A3, "i6"}, - /* 1716 */ {0x30A4, "I6"}, - /* 1717 */ {0x30A5, "u6"}, - /* 1718 */ {0x30A6, "U6"}, - /* 1719 */ {0x30A7, "e6"}, - /* 1720 */ {0x30A8, "E6"}, - /* 1721 */ {0x30A9, "o6"}, - /* 1722 */ {0x30AA, "O6"}, - /* 1723 */ {0x30AB, "Ka"}, - /* 1724 */ {0x30AC, "Ga"}, - /* 1725 */ {0x30AD, "Ki"}, - /* 1726 */ {0x30AE, "Gi"}, - /* 1727 */ {0x30AF, "Ku"}, - /* 1728 */ {0x30B0, "Gu"}, - /* 1729 */ {0x30B1, "Ke"}, - /* 1730 */ {0x30B2, "Ge"}, - /* 1731 */ {0x30B3, "Ko"}, - /* 1732 */ {0x30B4, "Go"}, - /* 1733 */ {0x30B5, "Sa"}, - /* 1734 */ {0x30B6, "Za"}, - /* 1735 */ {0x30B7, "Si"}, - /* 1736 */ {0x30B8, "Zi"}, - /* 1737 */ {0x30B9, "Su"}, - /* 1738 */ {0x30BA, "Zu"}, - /* 1739 */ {0x30BB, "Se"}, - /* 1740 */ {0x30BC, "Ze"}, - /* 1741 */ {0x30BD, "So"}, - /* 1742 */ {0x30BE, "Zo"}, - /* 1743 */ {0x30BF, "Ta"}, - /* 1744 */ {0x30C0, "Da"}, - /* 1745 */ {0x30C1, "Ti"}, - /* 1746 */ {0x30C2, "Di"}, - /* 1747 */ {0x30C3, "TU"}, - /* 1748 */ {0x30C4, "Tu"}, - /* 1749 */ {0x30C5, "Du"}, - /* 1750 */ {0x30C6, "Te"}, - /* 1751 */ {0x30C7, "De"}, - /* 1752 */ {0x30C8, "To"}, - /* 1753 */ {0x30C9, "Do"}, - /* 1754 */ {0x30CA, "Na"}, - /* 1755 */ {0x30CB, "Ni"}, - /* 1756 */ {0x30CC, "Nu"}, - /* 1757 */ {0x30CD, "Ne"}, - /* 1758 */ {0x30CE, "No"}, - /* 1759 */ {0x30CF, "Ha"}, - /* 1760 */ {0x30D0, "Ba"}, - /* 1761 */ {0x30D1, "Pa"}, - /* 1762 */ {0x30D2, "Hi"}, - /* 1763 */ {0x30D3, "Bi"}, - /* 1764 */ {0x30D4, "Pi"}, - /* 1765 */ {0x30D5, "Hu"}, - /* 1766 */ {0x30D6, "Bu"}, - /* 1767 */ {0x30D7, "Pu"}, - /* 1768 */ {0x30D8, "He"}, - /* 1769 */ {0x30D9, "Be"}, - /* 1770 */ {0x30DA, "Pe"}, - /* 1771 */ {0x30DB, "Ho"}, - /* 1772 */ {0x30DC, "Bo"}, - /* 1773 */ {0x30DD, "Po"}, - /* 1774 */ {0x30DE, "Ma"}, - /* 1775 */ {0x30DF, "Mi"}, - /* 1776 */ {0x30E0, "Mu"}, - /* 1777 */ {0x30E1, "Me"}, - /* 1778 */ {0x30E2, "Mo"}, - /* 1779 */ {0x30E3, "YA"}, - /* 1780 */ {0x30E4, "Ya"}, - /* 1781 */ {0x30E5, "YU"}, - /* 1782 */ {0x30E6, "Yu"}, - /* 1783 */ {0x30E7, "YO"}, - /* 1784 */ {0x30E8, "Yo"}, - /* 1785 */ {0x30E9, "Ra"}, - /* 1786 */ {0x30EA, "Ri"}, - /* 1787 */ {0x30EB, "Ru"}, - /* 1788 */ {0x30EC, "Re"}, - /* 1789 */ {0x30ED, "Ro"}, - /* 1790 */ {0x30EE, "WA"}, - /* 1791 */ {0x30EF, "Wa"}, - /* 1792 */ {0x30F0, "Wi"}, - /* 1793 */ {0x30F1, "We"}, - /* 1794 */ {0x30F2, "Wo"}, - /* 1795 */ {0x30F3, "N6"}, - /* 1796 */ {0x30F4, "Vu"}, - /* 1797 */ {0x30F5, "KA"}, - /* 1798 */ {0x30F6, "KE"}, - /* 1799 */ {0x30F7, "Va"}, - /* 1800 */ {0x30F8, "Vi"}, - /* 1801 */ {0x30F9, "Ve"}, - /* 1802 */ {0x30FA, "Vo"}, - /* 1803 */ {0x30FB, ".6"}, - /* 1804 */ {0x30FC, "-6"}, - /* 1805 */ {0x30FD, "*6"}, - /* 1806 */ {0x30FE, "+6"}, - /* 1807 */ {0x3105, "b4"}, - /* 1808 */ {0x3106, "p4"}, - /* 1809 */ {0x3107, "m4"}, - /* 1810 */ {0x3108, "f4"}, - /* 1811 */ {0x3109, "d4"}, - /* 1812 */ {0x310A, "t4"}, - /* 1813 */ {0x310B, "n4"}, - /* 1814 */ {0x310C, "l4"}, - /* 1815 */ {0x310D, "g4"}, - /* 1816 */ {0x310E, "k4"}, - /* 1817 */ {0x310F, "h4"}, - /* 1818 */ {0x3110, "j4"}, - /* 1819 */ {0x3111, "q4"}, - /* 1820 */ {0x3112, "x4"}, - /* 1821 */ {0x3113, "zh"}, - /* 1822 */ {0x3114, "ch"}, - /* 1823 */ {0x3115, "sh"}, - /* 1824 */ {0x3116, "r4"}, - /* 1825 */ {0x3117, "z4"}, - /* 1826 */ {0x3118, "c4"}, - /* 1827 */ {0x3119, "s4"}, - /* 1828 */ {0x311A, "a4"}, - /* 1829 */ {0x311B, "o4"}, - /* 1830 */ {0x311C, "e4"}, - /* 1831 */ {0x311D, "eh4"}, - /* 1832 */ {0x311E, "ai"}, - /* 1833 */ {0x311F, "ei"}, - /* 1834 */ {0x3120, "au"}, - /* 1835 */ {0x3121, "ou"}, - /* 1836 */ {0x3122, "an"}, - /* 1837 */ {0x3123, "en"}, - /* 1838 */ {0x3124, "aN"}, - /* 1839 */ {0x3125, "eN"}, - /* 1840 */ {0x3126, "er"}, - /* 1841 */ {0x3127, "i4"}, - /* 1842 */ {0x3128, "u4"}, - /* 1843 */ {0x3129, "iu"}, - /* 1844 */ {0x312A, "v4"}, - /* 1845 */ {0x312B, "nG"}, - /* 1846 */ {0x312C, "gn"}, - /* 1847 */ {0x3220, "1c"}, - /* 1848 */ {0x3221, "2c"}, - /* 1849 */ {0x3222, "3c"}, - /* 1850 */ {0x3223, "4c"}, - /* 1851 */ {0x3224, "5c"}, - /* 1852 */ {0x3225, "6c"}, - /* 1853 */ {0x3226, "7c"}, - /* 1854 */ {0x3227, "8c"}, - /* 1855 */ {0x3228, "9c"}, - /* 1856 */ {0x3229, "10c"}, - /* 1857 */ {0x327F, "KSC"}, - /* 1858 */ {0x33C2, "am"}, - /* 1859 */ {0x33D8, "pm"}, - /* 1860 */ {0xE000, "\"3"}, - /* 1861 */ {0xE001, "\"1"}, - /* 1862 */ {0xE002, "\"!"}, - /* 1863 */ {0xE003, "\"'"}, - /* 1864 */ {0xE004, "\">"}, - /* 1865 */ {0xE005, "\"?"}, - /* 1866 */ {0xE006, "\"-"}, - /* 1867 */ {0xE007, "\"("}, - /* 1868 */ {0xE008, "\"."}, - /* 1869 */ {0xE009, "\":"}, - /* 1870 */ {0xE00A, "\"0"}, - /* 1871 */ {0xE00B, "\","}, - /* 1872 */ {0xE00C, "\"_"}, - /* 1873 */ {0xE00D, "\"\""}, - /* 1874 */ {0xE00E, "\";"}, - /* 1875 */ {0xE00F, "\"<"}, - /* 1876 */ {0xE010, "\"="}, - /* 1877 */ {0xE011, "\"/"}, - /* 1878 */ {0xE012, "\"p"}, - /* 1879 */ {0xE013, "\"d"}, - /* 1880 */ {0xE014, "\"i"}, - /* 1881 */ {0xE015, "+_"}, - /* 1882 */ {0xE016, "a+:"}, - /* 1883 */ {0xE017, "Tel"}, - /* 1884 */ {0xE018, "UA"}, - /* 1885 */ {0xE019, "UB"}, - /* 1886 */ {0xE01A, "t3"}, - /* 1887 */ {0xE01B, "m3"}, - /* 1888 */ {0xE01C, "k3"}, - /* 1889 */ {0xE01D, "p3"}, - /* 1890 */ {0xE01E, "Mc"}, - /* 1891 */ {0xE01F, "Fl"}, - /* 1892 */ {0xE020, "Ss"}, - /* 1893 */ {0xE021, "Ch"}, - /* 1894 */ {0xE022, "CH"}, - /* 1895 */ {0xE024, "/c"}, - /* 1896 */ {0xFB00, "ff"}, - /* 1897 */ {0xFB01, "fi"}, - /* 1898 */ {0xFB02, "fl"}, - /* 1899 */ {0xFB03, "ffi"}, - /* 1900 */ {0xFB04, "ffl"}, - /* 1901 */ {0xFB05, "St"}, - /* 1902 */ {0xFB06, "st"}, - /* 1903 */ {0xFE7D, "3+;"}, - /* 1904 */ {0xFE82, "aM."}, - /* 1905 */ {0xFE84, "aH."}, - /* 1906 */ {0xFE88, "ah."}, - /* 1907 */ {0xFE8D, "a+-"}, - /* 1908 */ {0xFE8E, "a+."}, - /* 1909 */ {0xFE8F, "b+-"}, - /* 1910 */ {0xFE90, "b+."}, - /* 1911 */ {0xFE91, "b+,"}, - /* 1912 */ {0xFE92, "b+;"}, - /* 1913 */ {0xFE93, "tm-"}, - /* 1914 */ {0xFE94, "tm."}, - /* 1915 */ {0xFE95, "t+-"}, - /* 1916 */ {0xFE96, "t+."}, - /* 1917 */ {0xFE97, "t+,"}, - /* 1918 */ {0xFE98, "t+;"}, - /* 1919 */ {0xFE99, "tk-"}, - /* 1920 */ {0xFE9A, "tk."}, - /* 1921 */ {0xFE9B, "tk,"}, - /* 1922 */ {0xFE9C, "tk;"}, - /* 1923 */ {0xFE9D, "g+-"}, - /* 1924 */ {0xFE9E, "g+."}, - /* 1925 */ {0xFE9F, "g+,"}, - /* 1926 */ {0xFEA0, "g+;"}, - /* 1927 */ {0xFEA1, "hk-"}, - /* 1928 */ {0xFEA2, "hk."}, - /* 1929 */ {0xFEA3, "hk,"}, - /* 1930 */ {0xFEA4, "hk;"}, - /* 1931 */ {0xFEA5, "x+-"}, - /* 1932 */ {0xFEA6, "x+."}, - /* 1933 */ {0xFEA7, "x+,"}, - /* 1934 */ {0xFEA8, "x+;"}, - /* 1935 */ {0xFEA9, "d+-"}, - /* 1936 */ {0xFEAA, "d+."}, - /* 1937 */ {0xFEAB, "dk-"}, - /* 1938 */ {0xFEAC, "dk."}, - /* 1939 */ {0xFEAD, "r+-"}, - /* 1940 */ {0xFEAE, "r+."}, - /* 1941 */ {0xFEAF, "z+-"}, - /* 1942 */ {0xFEB0, "z+."}, - /* 1943 */ {0xFEB1, "s+-"}, - /* 1944 */ {0xFEB2, "s+."}, - /* 1945 */ {0xFEB3, "s+,"}, - /* 1946 */ {0xFEB4, "s+;"}, - /* 1947 */ {0xFEB5, "sn-"}, - /* 1948 */ {0xFEB6, "sn."}, - /* 1949 */ {0xFEB7, "sn,"}, - /* 1950 */ {0xFEB8, "sn;"}, - /* 1951 */ {0xFEB9, "c+-"}, - /* 1952 */ {0xFEBA, "c+."}, - /* 1953 */ {0xFEBB, "c+,"}, - /* 1954 */ {0xFEBC, "c+;"}, - /* 1955 */ {0xFEBD, "dd-"}, - /* 1956 */ {0xFEBE, "dd."}, - /* 1957 */ {0xFEBF, "dd,"}, - /* 1958 */ {0xFEC0, "dd;"}, - /* 1959 */ {0xFEC1, "tj-"}, - /* 1960 */ {0xFEC2, "tj."}, - /* 1961 */ {0xFEC3, "tj,"}, - /* 1962 */ {0xFEC4, "tj;"}, - /* 1963 */ {0xFEC5, "zH-"}, - /* 1964 */ {0xFEC6, "zH."}, - /* 1965 */ {0xFEC7, "zH,"}, - /* 1966 */ {0xFEC8, "zH;"}, - /* 1967 */ {0xFEC9, "e+-"}, - /* 1968 */ {0xFECA, "e+."}, - /* 1969 */ {0xFECB, "e+,"}, - /* 1970 */ {0xFECC, "e+;"}, - /* 1971 */ {0xFECD, "i+-"}, - /* 1972 */ {0xFECE, "i+."}, - /* 1973 */ {0xFECF, "i+,"}, - /* 1974 */ {0xFED0, "i+;"}, - /* 1975 */ {0xFED1, "f+-"}, - /* 1976 */ {0xFED2, "f+."}, - /* 1977 */ {0xFED3, "f+,"}, - /* 1978 */ {0xFED4, "f+;"}, - /* 1979 */ {0xFED5, "q+-"}, - /* 1980 */ {0xFED6, "q+."}, - /* 1981 */ {0xFED7, "q+,"}, - /* 1982 */ {0xFED8, "q+;"}, - /* 1983 */ {0xFED9, "k+-"}, - /* 1984 */ {0xFEDA, "k+."}, - /* 1985 */ {0xFEDB, "k+,"}, - /* 1986 */ {0xFEDC, "k+;"}, - /* 1987 */ {0xFEDD, "l+-"}, - /* 1988 */ {0xFEDE, "l+."}, - /* 1989 */ {0xFEDF, "l+,"}, - /* 1990 */ {0xFEE0, "l+;"}, - /* 1991 */ {0xFEE1, "m+-"}, - /* 1992 */ {0xFEE2, "m+."}, - /* 1993 */ {0xFEE3, "m+,"}, - /* 1994 */ {0xFEE4, "m+;"}, - /* 1995 */ {0xFEE5, "n+-"}, - /* 1996 */ {0xFEE6, "n+."}, - /* 1997 */ {0xFEE7, "n+,"}, - /* 1998 */ {0xFEE8, "n+;"}, - /* 1999 */ {0xFEE9, "h+-"}, - /* 2000 */ {0xFEEA, "h+."}, - /* 2001 */ {0xFEEB, "h+,"}, - /* 2002 */ {0xFEEC, "h+;"}, - /* 2003 */ {0xFEED, "w+-"}, - /* 2004 */ {0xFEEE, "w+."}, - /* 2005 */ {0xFEEF, "j+-"}, - /* 2006 */ {0xFEF0, "j+."}, - /* 2007 */ {0xFEF1, "y+-"}, - /* 2008 */ {0xFEF2, "y+."}, - /* 2009 */ {0xFEF3, "y+,"}, - /* 2010 */ {0xFEF4, "y+;"}, - /* 2011 */ {0xFEF5, "lM-"}, - /* 2012 */ {0xFEF6, "lM."}, - /* 2013 */ {0xFEF7, "lH-"}, - /* 2014 */ {0xFEF8, "lH."}, - /* 2015 */ {0xFEF9, "lh-"}, - /* 2016 */ {0xFEFA, "lh."}, - /* 2017 */ {0xFEFB, "la-"}, - /* 2018 */ {0xFEFC, "la."}, + /* 1165 */ {0x20AA, "NSh"}, + /* 1166 */ {0x20AC, "Eu"}, + /* 1167 */ {0x20D1, "\"7"}, + /* 1168 */ {0x2103, "oC"}, + /* 1169 */ {0x2105, "co"}, + /* 1170 */ {0x2109, "oF"}, + /* 1171 */ {0x2116, "N0"}, + /* 1172 */ {0x2117, "PO"}, + /* 1173 */ {0x211E, "Rx"}, + /* 1174 */ {0x2120, "SM"}, + /* 1175 */ {0x2122, "TM"}, + /* 1176 */ {0x2126, "Om"}, + /* 1177 */ {0x212B, "AO"}, + /* 1178 */ {0x212E, "Est"}, + /* 1179 */ {0x2153, "13"}, + /* 1180 */ {0x2154, "23"}, + /* 1181 */ {0x2155, "15"}, + /* 1182 */ {0x2156, "25"}, + /* 1183 */ {0x2157, "35"}, + /* 1184 */ {0x2158, "45"}, + /* 1185 */ {0x2159, "16"}, + /* 1186 */ {0x215A, "56"}, + /* 1187 */ {0x215B, "18"}, + /* 1188 */ {0x215C, "38"}, + /* 1189 */ {0x215D, "58"}, + /* 1190 */ {0x215E, "78"}, + /* 1191 */ {0x2160, "1R"}, + /* 1192 */ {0x2161, "2R"}, + /* 1193 */ {0x2162, "3R"}, + /* 1194 */ {0x2163, "4R"}, + /* 1195 */ {0x2164, "5R"}, + /* 1196 */ {0x2165, "6R"}, + /* 1197 */ {0x2166, "7R"}, + /* 1198 */ {0x2167, "8R"}, + /* 1199 */ {0x2168, "9R"}, + /* 1200 */ {0x2169, "aR"}, + /* 1201 */ {0x216A, "bR"}, + /* 1202 */ {0x216B, "cR"}, + /* 1203 */ {0x216C, "50R"}, + /* 1204 */ {0x2170, "1r"}, + /* 1205 */ {0x2171, "2r"}, + /* 1206 */ {0x2172, "3r"}, + /* 1207 */ {0x2173, "4r"}, + /* 1208 */ {0x2174, "5r"}, + /* 1209 */ {0x2175, "6r"}, + /* 1210 */ {0x2176, "7r"}, + /* 1211 */ {0x2177, "8r"}, + /* 1212 */ {0x2178, "9r"}, + /* 1213 */ {0x2179, "ar"}, + /* 1214 */ {0x217A, "br"}, + /* 1215 */ {0x217B, "cr"}, + /* 1216 */ {0x217C, "50r"}, + /* 1217 */ {0x2190, "<-"}, + /* 1218 */ {0x2191, "-!"}, + /* 1219 */ {0x2192, "->"}, + /* 1220 */ {0x2193, "-v"}, + /* 1221 */ {0x2194, "<>"}, + /* 1222 */ {0x2195, "UD"}, + /* 1223 */ {0x2196, ""}, + /* 1225 */ {0x2198, "!!>"}, + /* 1226 */ {0x2199, "V"}, + /* 1229 */ {0x21D0, "<="}, + /* 1230 */ {0x21D2, "=>"}, + /* 1231 */ {0x21D4, "=="}, + /* 1232 */ {0x2200, "FA"}, + /* 1233 */ {0x2202, "dP"}, + /* 1234 */ {0x2203, "TE"}, + /* 1235 */ {0x2205, "/0"}, + /* 1236 */ {0x2206, "DE"}, + /* 1237 */ {0x2207, "NB"}, + /* 1238 */ {0x2208, "(-"}, + /* 1239 */ {0x220B, "-)"}, + /* 1240 */ {0x220E, "FP"}, + /* 1241 */ {0x220F, "*P"}, + /* 1242 */ {0x2211, "+Z"}, + /* 1243 */ {0x2212, "-2"}, + /* 1244 */ {0x2213, "-+"}, + /* 1245 */ {0x2214, ".+"}, + /* 1246 */ {0x2217, "*-"}, + /* 1247 */ {0x2218, "Ob"}, + /* 1248 */ {0x2219, "Sb"}, + /* 1249 */ {0x221A, "RT"}, + /* 1250 */ {0x221D, "0("}, + /* 1251 */ {0x221E, "00"}, + /* 1252 */ {0x221F, "-L"}, + /* 1253 */ {0x2220, "-V"}, + /* 1254 */ {0x2225, "PP"}, + /* 1255 */ {0x2227, "AN"}, + /* 1256 */ {0x2228, "OR"}, + /* 1257 */ {0x2229, "(U"}, + /* 1258 */ {0x222A, ")U"}, + /* 1259 */ {0x222B, "In"}, + /* 1260 */ {0x222C, "DI"}, + /* 1261 */ {0x222E, "Io"}, + /* 1262 */ {0x2234, ".:"}, + /* 1263 */ {0x2235, ":."}, + /* 1264 */ {0x2236, ":R"}, + /* 1265 */ {0x2237, "::"}, + /* 1266 */ {0x223C, "?1"}, + /* 1267 */ {0x223E, "CG"}, + /* 1268 */ {0x2243, "?-"}, + /* 1269 */ {0x2245, "?="}, + /* 1270 */ {0x2248, "?2"}, + /* 1271 */ {0x224C, "=?"}, + /* 1272 */ {0x2253, "HI"}, + /* 1273 */ {0x2260, "!="}, + /* 1274 */ {0x2261, "=3"}, + /* 1275 */ {0x2264, "=<"}, + /* 1276 */ {0x2265, ">="}, + /* 1277 */ {0x226A, "<*"}, + /* 1278 */ {0x226B, "*>"}, + /* 1279 */ {0x226E, "!<"}, + /* 1280 */ {0x226F, "!>"}, + /* 1281 */ {0x2282, "(C"}, + /* 1282 */ {0x2283, ")C"}, + /* 1283 */ {0x2286, "(_"}, + /* 1284 */ {0x2287, ")_"}, + /* 1285 */ {0x2299, "0."}, + /* 1286 */ {0x229A, "02"}, + /* 1287 */ {0x22A5, "-T"}, + /* 1288 */ {0x22C5, ".P"}, + /* 1289 */ {0x22EE, ":3"}, + /* 1290 */ {0x2302, "Eh"}, + /* 1291 */ {0x2308, "<7"}, + /* 1292 */ {0x2309, ">7"}, + /* 1293 */ {0x230A, "7<"}, + /* 1294 */ {0x230B, "7>"}, + /* 1295 */ {0x2310, "NI"}, + /* 1296 */ {0x2312, "(A"}, + /* 1297 */ {0x2315, "TR"}, + /* 1298 */ {0x2318, "88"}, + /* 1299 */ {0x2320, "Iu"}, + /* 1300 */ {0x2321, "Il"}, + /* 1301 */ {0x2329, ""}, + /* 1303 */ {0x2423, "Vs"}, + /* 1304 */ {0x2440, "1h"}, + /* 1305 */ {0x2441, "3h"}, + /* 1306 */ {0x2442, "2h"}, + /* 1307 */ {0x2443, "4h"}, + /* 1308 */ {0x2446, "1j"}, + /* 1309 */ {0x2447, "2j"}, + /* 1310 */ {0x2448, "3j"}, + /* 1311 */ {0x2449, "4j"}, + /* 1312 */ {0x2460, "1-o"}, + /* 1313 */ {0x2461, "2-o"}, + /* 1314 */ {0x2462, "3-o"}, + /* 1315 */ {0x2463, "4-o"}, + /* 1316 */ {0x2464, "5-o"}, + /* 1317 */ {0x2465, "6-o"}, + /* 1318 */ {0x2466, "7-o"}, + /* 1319 */ {0x2467, "8-o"}, + /* 1320 */ {0x2468, "9-o"}, + /* 1321 */ {0x2474, "(1)"}, + /* 1322 */ {0x2475, "(2)"}, + /* 1323 */ {0x2476, "(3)"}, + /* 1324 */ {0x2477, "(4)"}, + /* 1325 */ {0x2478, "(5)"}, + /* 1326 */ {0x2479, "(6)"}, + /* 1327 */ {0x247A, "(7)"}, + /* 1328 */ {0x247B, "(8)"}, + /* 1329 */ {0x247C, "(9)"}, + /* 1330 */ {0x2488, "1."}, + /* 1331 */ {0x2489, "2."}, + /* 1332 */ {0x248A, "3."}, + /* 1333 */ {0x248B, "4."}, + /* 1334 */ {0x248C, "5."}, + /* 1335 */ {0x248D, "6."}, + /* 1336 */ {0x248E, "7."}, + /* 1337 */ {0x248F, "8."}, + /* 1338 */ {0x2490, "9."}, + /* 1339 */ {0x2491, "10."}, + /* 1340 */ {0x2492, "11."}, + /* 1341 */ {0x2493, "12."}, + /* 1342 */ {0x2494, "13."}, + /* 1343 */ {0x2495, "14."}, + /* 1344 */ {0x2496, "15."}, + /* 1345 */ {0x2497, "16."}, + /* 1346 */ {0x2498, "17."}, + /* 1347 */ {0x2499, "18."}, + /* 1348 */ {0x249A, "19."}, + /* 1349 */ {0x249B, "20."}, + /* 1350 */ {0x249C, "(a)"}, + /* 1351 */ {0x249D, "(b)"}, + /* 1352 */ {0x249E, "(c)"}, + /* 1353 */ {0x249F, "(d)"}, + /* 1354 */ {0x24A0, "(e)"}, + /* 1355 */ {0x24A1, "(f)"}, + /* 1356 */ {0x24A2, "(g)"}, + /* 1357 */ {0x24A3, "(h)"}, + /* 1358 */ {0x24A4, "(i)"}, + /* 1359 */ {0x24A5, "(j)"}, + /* 1360 */ {0x24A6, "(k)"}, + /* 1361 */ {0x24A7, "(l)"}, + /* 1362 */ {0x24A8, "(m)"}, + /* 1363 */ {0x24A9, "(n)"}, + /* 1364 */ {0x24AA, "(o)"}, + /* 1365 */ {0x24AB, "(p)"}, + /* 1366 */ {0x24AC, "(q)"}, + /* 1367 */ {0x24AD, "(r)"}, + /* 1368 */ {0x24AE, "(s)"}, + /* 1369 */ {0x24AF, "(t)"}, + /* 1370 */ {0x24B0, "(u)"}, + /* 1371 */ {0x24B1, "(v)"}, + /* 1372 */ {0x24B2, "(w)"}, + /* 1373 */ {0x24B3, "(x)"}, + /* 1374 */ {0x24B4, "(y)"}, + /* 1375 */ {0x24B5, "(z)"}, + /* 1376 */ {0x24B6, "A-o"}, + /* 1377 */ {0x24B7, "B-o"}, + /* 1378 */ {0x24B8, "C-o"}, + /* 1379 */ {0x24B9, "D-o"}, + /* 1380 */ {0x24BA, "E-o"}, + /* 1381 */ {0x24BB, "F-o"}, + /* 1382 */ {0x24BC, "G-o"}, + /* 1383 */ {0x24BD, "H-o"}, + /* 1384 */ {0x24BE, "I-o"}, + /* 1385 */ {0x24BF, "J-o"}, + /* 1386 */ {0x24C0, "K-o"}, + /* 1387 */ {0x24C1, "L-o"}, + /* 1388 */ {0x24C2, "M-o"}, + /* 1389 */ {0x24C3, "N-o"}, + /* 1390 */ {0x24C4, "O-o"}, + /* 1391 */ {0x24C5, "P-o"}, + /* 1392 */ {0x24C6, "Q-o"}, + /* 1393 */ {0x24C7, "R-o"}, + /* 1394 */ {0x24C8, "S-o"}, + /* 1395 */ {0x24C9, "T-o"}, + /* 1396 */ {0x24CA, "U-o"}, + /* 1397 */ {0x24CB, "V-o"}, + /* 1398 */ {0x24CC, "W-o"}, + /* 1399 */ {0x24CD, "X-o"}, + /* 1400 */ {0x24CE, "Y-o"}, + /* 1401 */ {0x24CF, "Z-o"}, + /* 1402 */ {0x24D0, "a-o"}, + /* 1403 */ {0x24D1, "b-o"}, + /* 1404 */ {0x24D2, "c-o"}, + /* 1405 */ {0x24D3, "d-o"}, + /* 1406 */ {0x24D4, "e-o"}, + /* 1407 */ {0x24D5, "f-o"}, + /* 1408 */ {0x24D6, "g-o"}, + /* 1409 */ {0x24D7, "h-o"}, + /* 1410 */ {0x24D8, "i-o"}, + /* 1411 */ {0x24D9, "j-o"}, + /* 1412 */ {0x24DA, "k-o"}, + /* 1413 */ {0x24DB, "l-o"}, + /* 1414 */ {0x24DC, "m-o"}, + /* 1415 */ {0x24DD, "n-o"}, + /* 1416 */ {0x24DE, "o-o"}, + /* 1417 */ {0x24DF, "p-o"}, + /* 1418 */ {0x24E0, "q-o"}, + /* 1419 */ {0x24E1, "r-o"}, + /* 1420 */ {0x24E2, "s-o"}, + /* 1421 */ {0x24E3, "t-o"}, + /* 1422 */ {0x24E4, "u-o"}, + /* 1423 */ {0x24E5, "v-o"}, + /* 1424 */ {0x24E6, "w-o"}, + /* 1425 */ {0x24E7, "x-o"}, + /* 1426 */ {0x24E8, "y-o"}, + /* 1427 */ {0x24E9, "z-o"}, + /* 1428 */ {0x24EA, "0-o"}, + /* 1429 */ {0x2500, "hh"}, + /* 1430 */ {0x2501, "HH-"}, + /* 1431 */ {0x2502, "vv"}, + /* 1432 */ {0x2503, "VV-"}, + /* 1433 */ {0x2504, "3-"}, + /* 1434 */ {0x2505, "3_"}, + /* 1435 */ {0x2506, "3!"}, + /* 1436 */ {0x2507, "3/"}, + /* 1437 */ {0x2508, "4-"}, + /* 1438 */ {0x2509, "4_"}, + /* 1439 */ {0x250A, "4!"}, + /* 1440 */ {0x250B, "4/"}, + /* 1441 */ {0x250C, "dr"}, + /* 1442 */ {0x250D, "dR-"}, + /* 1443 */ {0x250E, "Dr-"}, + /* 1444 */ {0x250F, "DR-"}, + /* 1445 */ {0x2510, "dl"}, + /* 1446 */ {0x2511, "dL-"}, + /* 1447 */ {0x2512, "Dl-"}, + /* 1448 */ {0x2513, "LD-"}, + /* 1449 */ {0x2514, "ur"}, + /* 1450 */ {0x2515, "uR-"}, + /* 1451 */ {0x2516, "Ur-"}, + /* 1452 */ {0x2517, "UR-"}, + /* 1453 */ {0x2518, "ul"}, + /* 1454 */ {0x2519, "uL-"}, + /* 1455 */ {0x251A, "Ul-"}, + /* 1456 */ {0x251B, "UL-"}, + /* 1457 */ {0x251C, "vr"}, + /* 1458 */ {0x251D, "vR-"}, + /* 1459 */ {0x251E, "Udr"}, + /* 1460 */ {0x251F, "uDr"}, + /* 1461 */ {0x2520, "Vr-"}, + /* 1462 */ {0x2521, "UdR"}, + /* 1463 */ {0x2522, "uDR"}, + /* 1464 */ {0x2523, "VR-"}, + /* 1465 */ {0x2524, "vl"}, + /* 1466 */ {0x2525, "vL-"}, + /* 1467 */ {0x2526, "Udl"}, + /* 1468 */ {0x2527, "uDl"}, + /* 1469 */ {0x2528, "Vl-"}, + /* 1470 */ {0x2529, "UdL"}, + /* 1471 */ {0x252A, "uDL"}, + /* 1472 */ {0x252B, "VL-"}, + /* 1473 */ {0x252C, "dh"}, + /* 1474 */ {0x252D, "dLr"}, + /* 1475 */ {0x252E, "dlR"}, + /* 1476 */ {0x252F, "dH-"}, + /* 1477 */ {0x2530, "Dh-"}, + /* 1478 */ {0x2531, "DLr"}, + /* 1479 */ {0x2532, "DlR"}, + /* 1480 */ {0x2533, "DH-"}, + /* 1481 */ {0x2534, "uh"}, + /* 1482 */ {0x2535, "uLr"}, + /* 1483 */ {0x2536, "ulR"}, + /* 1484 */ {0x2537, "uH-"}, + /* 1485 */ {0x2538, "Uh-"}, + /* 1486 */ {0x2539, "ULr"}, + /* 1487 */ {0x253A, "UlR"}, + /* 1488 */ {0x253B, "UH-"}, + /* 1489 */ {0x253C, "vh"}, + /* 1490 */ {0x253D, "vLr"}, + /* 1491 */ {0x253E, "vlR"}, + /* 1492 */ {0x253F, "vH-"}, + /* 1493 */ {0x2540, "Udh"}, + /* 1494 */ {0x2541, "uDh"}, + /* 1495 */ {0x2542, "Vh-"}, + /* 1496 */ {0x2547, "UdH"}, + /* 1497 */ {0x2548, "uDH"}, + /* 1498 */ {0x2549, "VLr"}, + /* 1499 */ {0x254A, "VlR"}, + /* 1500 */ {0x254B, "VH-"}, + /* 1501 */ {0x2550, "HH"}, + /* 1502 */ {0x2551, "VV"}, + /* 1503 */ {0x2552, "dR"}, + /* 1504 */ {0x2553, "Dr"}, + /* 1505 */ {0x2554, "DR"}, + /* 1506 */ {0x2555, "dL"}, + /* 1507 */ {0x2556, "Dl"}, + /* 1508 */ {0x2557, "LD"}, + /* 1509 */ {0x2558, "uR"}, + /* 1510 */ {0x2559, "Ur"}, + /* 1511 */ {0x255A, "UR"}, + /* 1512 */ {0x255B, "uL"}, + /* 1513 */ {0x255C, "Ul"}, + /* 1514 */ {0x255D, "UL"}, + /* 1515 */ {0x255E, "vR"}, + /* 1516 */ {0x255F, "Vr"}, + /* 1517 */ {0x2560, "VR"}, + /* 1518 */ {0x2561, "vL"}, + /* 1519 */ {0x2562, "Vl"}, + /* 1520 */ {0x2563, "VL"}, + /* 1521 */ {0x2564, "dH"}, + /* 1522 */ {0x2565, "Dh"}, + /* 1523 */ {0x2566, "DH"}, + /* 1524 */ {0x2567, "uH"}, + /* 1525 */ {0x2568, "Uh"}, + /* 1526 */ {0x2569, "UH"}, + /* 1527 */ {0x256A, "vH"}, + /* 1528 */ {0x256B, "Vh"}, + /* 1529 */ {0x256C, "VH"}, + /* 1530 */ {0x2571, "FD"}, + /* 1531 */ {0x2572, "BD"}, + /* 1532 */ {0x2580, "TB"}, + /* 1533 */ {0x2584, "LB"}, + /* 1534 */ {0x2588, "FB"}, + /* 1535 */ {0x258C, "lB"}, + /* 1536 */ {0x2590, "RB"}, + /* 1537 */ {0x2591, ".S"}, + /* 1538 */ {0x2592, ":S"}, + /* 1539 */ {0x2593, "?S"}, + /* 1540 */ {0x25A0, "fS"}, + /* 1541 */ {0x25A1, "OS"}, + /* 1542 */ {0x25A2, "RO"}, + /* 1543 */ {0x25A3, "Rr"}, + /* 1544 */ {0x25A4, "RF"}, + /* 1545 */ {0x25A5, "RY"}, + /* 1546 */ {0x25A6, "RH"}, + /* 1547 */ {0x25A7, "RZ"}, + /* 1548 */ {0x25A8, "RK"}, + /* 1549 */ {0x25A9, "RX"}, + /* 1550 */ {0x25AA, "sB"}, + /* 1551 */ {0x25AC, "SR"}, + /* 1552 */ {0x25AD, "Or"}, + /* 1553 */ {0x25B2, "UT"}, + /* 1554 */ {0x25B3, "uT"}, + /* 1555 */ {0x25B7, "Tr"}, + /* 1556 */ {0x25BA, "PR"}, + /* 1557 */ {0x25BC, "Dt"}, + /* 1558 */ {0x25BD, "dT"}, + /* 1559 */ {0x25C1, "Tl"}, + /* 1560 */ {0x25C4, "PL"}, + /* 1561 */ {0x25C6, "Db"}, + /* 1562 */ {0x25C7, "Dw"}, + /* 1563 */ {0x25CA, "LZ"}, + /* 1564 */ {0x25CB, "0m"}, + /* 1565 */ {0x25CE, "0o"}, + /* 1566 */ {0x25CF, "0M"}, + /* 1567 */ {0x25D0, "0L"}, + /* 1568 */ {0x25D1, "0R"}, + /* 1569 */ {0x25D8, "Sn"}, + /* 1570 */ {0x25D9, "Ic"}, + /* 1571 */ {0x25E2, "Fd"}, + /* 1572 */ {0x25E3, "Bd"}, + /* 1573 */ {0x25EF, "Ci"}, + /* 1574 */ {0x2605, "*2"}, + /* 1575 */ {0x2606, "*1"}, + /* 1576 */ {0x260E, "TEL"}, + /* 1577 */ {0x260F, "tel"}, + /* 1578 */ {0x261C, "H"}, + /* 1580 */ {0x263A, "0u"}, + /* 1581 */ {0x263B, "0U"}, + /* 1582 */ {0x263C, "SU"}, + /* 1583 */ {0x2640, "Fm"}, + /* 1584 */ {0x2642, "Ml"}, + /* 1585 */ {0x2660, "cS"}, + /* 1586 */ {0x2661, "cH"}, + /* 1587 */ {0x2662, "cD"}, + /* 1588 */ {0x2663, "cC"}, + /* 1589 */ {0x2664, "cS-"}, + /* 1590 */ {0x2665, "cH-"}, + /* 1591 */ {0x2666, "cD-"}, + /* 1592 */ {0x2667, "cC-"}, + /* 1593 */ {0x2669, "Md"}, + /* 1594 */ {0x266A, "M8"}, + /* 1595 */ {0x266B, "M2"}, + /* 1596 */ {0x266C, "M16"}, + /* 1597 */ {0x266D, "Mb"}, + /* 1598 */ {0x266E, "Mx"}, + /* 1599 */ {0x266F, "MX"}, + /* 1600 */ {0x2713, "OK"}, + /* 1601 */ {0x2717, "XX"}, + /* 1602 */ {0x2720, "-X"}, + /* 1603 */ {0x3000, "IS"}, + /* 1604 */ {0x3001, ",_"}, + /* 1605 */ {0x3002, "._"}, + /* 1606 */ {0x3003, "+\""}, + /* 1607 */ {0x3004, "JIS"}, + /* 1608 */ {0x3005, "*_"}, + /* 1609 */ {0x3006, ";_"}, + /* 1610 */ {0x3007, "0_"}, + /* 1611 */ {0x300A, "<+"}, + /* 1612 */ {0x300B, ">+"}, + /* 1613 */ {0x300C, "<'"}, + /* 1614 */ {0x300D, ">'"}, + /* 1615 */ {0x300E, "<\""}, + /* 1616 */ {0x300F, ">\""}, + /* 1617 */ {0x3010, "(\""}, + /* 1618 */ {0x3011, ")\""}, + /* 1619 */ {0x3012, "=T"}, + /* 1620 */ {0x3013, "=_"}, + /* 1621 */ {0x3014, "('"}, + /* 1622 */ {0x3015, ")'"}, + /* 1623 */ {0x3016, "(I"}, + /* 1624 */ {0x3017, ")I"}, + /* 1625 */ {0x301C, "-?"}, + /* 1626 */ {0x3041, "A5"}, + /* 1627 */ {0x3042, "a5"}, + /* 1628 */ {0x3043, "I5"}, + /* 1629 */ {0x3044, "i5"}, + /* 1630 */ {0x3045, "U5"}, + /* 1631 */ {0x3046, "u5"}, + /* 1632 */ {0x3047, "E5"}, + /* 1633 */ {0x3048, "e5"}, + /* 1634 */ {0x3049, "O5"}, + /* 1635 */ {0x304A, "o5"}, + /* 1636 */ {0x304B, "ka"}, + /* 1637 */ {0x304C, "ga"}, + /* 1638 */ {0x304D, "ki"}, + /* 1639 */ {0x304E, "gi"}, + /* 1640 */ {0x304F, "ku"}, + /* 1641 */ {0x3050, "gu"}, + /* 1642 */ {0x3051, "ke"}, + /* 1643 */ {0x3052, "ge"}, + /* 1644 */ {0x3053, "ko"}, + /* 1645 */ {0x3054, "go"}, + /* 1646 */ {0x3055, "sa"}, + /* 1647 */ {0x3056, "za"}, + /* 1648 */ {0x3057, "si"}, + /* 1649 */ {0x3058, "zi"}, + /* 1650 */ {0x3059, "su"}, + /* 1651 */ {0x305A, "zu"}, + /* 1652 */ {0x305B, "se"}, + /* 1653 */ {0x305C, "ze"}, + /* 1654 */ {0x305D, "so"}, + /* 1655 */ {0x305E, "zo"}, + /* 1656 */ {0x305F, "ta"}, + /* 1657 */ {0x3060, "da"}, + /* 1658 */ {0x3061, "ti"}, + /* 1659 */ {0x3062, "di"}, + /* 1660 */ {0x3063, "tU"}, + /* 1661 */ {0x3064, "tu"}, + /* 1662 */ {0x3065, "du"}, + /* 1663 */ {0x3066, "te"}, + /* 1664 */ {0x3067, "de"}, + /* 1665 */ {0x3068, "to"}, + /* 1666 */ {0x3069, "do"}, + /* 1667 */ {0x306A, "na"}, + /* 1668 */ {0x306B, "ni"}, + /* 1669 */ {0x306C, "nu"}, + /* 1670 */ {0x306D, "ne"}, + /* 1671 */ {0x306E, "no"}, + /* 1672 */ {0x306F, "ha"}, + /* 1673 */ {0x3070, "ba"}, + /* 1674 */ {0x3071, "pa"}, + /* 1675 */ {0x3072, "hi"}, + /* 1676 */ {0x3073, "bi"}, + /* 1677 */ {0x3074, "pi"}, + /* 1678 */ {0x3075, "hu"}, + /* 1679 */ {0x3076, "bu"}, + /* 1680 */ {0x3077, "pu"}, + /* 1681 */ {0x3078, "he"}, + /* 1682 */ {0x3079, "be"}, + /* 1683 */ {0x307A, "pe"}, + /* 1684 */ {0x307B, "ho"}, + /* 1685 */ {0x307C, "bo"}, + /* 1686 */ {0x307D, "po"}, + /* 1687 */ {0x307E, "ma"}, + /* 1688 */ {0x307F, "mi"}, + /* 1689 */ {0x3080, "mu"}, + /* 1690 */ {0x3081, "me"}, + /* 1691 */ {0x3082, "mo"}, + /* 1692 */ {0x3083, "yA"}, + /* 1693 */ {0x3084, "ya"}, + /* 1694 */ {0x3085, "yU"}, + /* 1695 */ {0x3086, "yu"}, + /* 1696 */ {0x3087, "yO"}, + /* 1697 */ {0x3088, "yo"}, + /* 1698 */ {0x3089, "ra"}, + /* 1699 */ {0x308A, "ri"}, + /* 1700 */ {0x308B, "ru"}, + /* 1701 */ {0x308C, "re"}, + /* 1702 */ {0x308D, "ro"}, + /* 1703 */ {0x308E, "wA"}, + /* 1704 */ {0x308F, "wa"}, + /* 1705 */ {0x3090, "wi"}, + /* 1706 */ {0x3091, "we"}, + /* 1707 */ {0x3092, "wo"}, + /* 1708 */ {0x3093, "n5"}, + /* 1709 */ {0x3094, "vu"}, + /* 1710 */ {0x309B, "\"5"}, + /* 1711 */ {0x309C, "05"}, + /* 1712 */ {0x309D, "*5"}, + /* 1713 */ {0x309E, "+5"}, + /* 1714 */ {0x30A1, "a6"}, + /* 1715 */ {0x30A2, "A6"}, + /* 1716 */ {0x30A3, "i6"}, + /* 1717 */ {0x30A4, "I6"}, + /* 1718 */ {0x30A5, "u6"}, + /* 1719 */ {0x30A6, "U6"}, + /* 1720 */ {0x30A7, "e6"}, + /* 1721 */ {0x30A8, "E6"}, + /* 1722 */ {0x30A9, "o6"}, + /* 1723 */ {0x30AA, "O6"}, + /* 1724 */ {0x30AB, "Ka"}, + /* 1725 */ {0x30AC, "Ga"}, + /* 1726 */ {0x30AD, "Ki"}, + /* 1727 */ {0x30AE, "Gi"}, + /* 1728 */ {0x30AF, "Ku"}, + /* 1729 */ {0x30B0, "Gu"}, + /* 1730 */ {0x30B1, "Ke"}, + /* 1731 */ {0x30B2, "Ge"}, + /* 1732 */ {0x30B3, "Ko"}, + /* 1733 */ {0x30B4, "Go"}, + /* 1734 */ {0x30B5, "Sa"}, + /* 1735 */ {0x30B6, "Za"}, + /* 1736 */ {0x30B7, "Si"}, + /* 1737 */ {0x30B8, "Zi"}, + /* 1738 */ {0x30B9, "Su"}, + /* 1739 */ {0x30BA, "Zu"}, + /* 1740 */ {0x30BB, "Se"}, + /* 1741 */ {0x30BC, "Ze"}, + /* 1742 */ {0x30BD, "So"}, + /* 1743 */ {0x30BE, "Zo"}, + /* 1744 */ {0x30BF, "Ta"}, + /* 1745 */ {0x30C0, "Da"}, + /* 1746 */ {0x30C1, "Ti"}, + /* 1747 */ {0x30C2, "Di"}, + /* 1748 */ {0x30C3, "TU"}, + /* 1749 */ {0x30C4, "Tu"}, + /* 1750 */ {0x30C5, "Du"}, + /* 1751 */ {0x30C6, "Te"}, + /* 1752 */ {0x30C7, "De"}, + /* 1753 */ {0x30C8, "To"}, + /* 1754 */ {0x30C9, "Do"}, + /* 1755 */ {0x30CA, "Na"}, + /* 1756 */ {0x30CB, "Ni"}, + /* 1757 */ {0x30CC, "Nu"}, + /* 1758 */ {0x30CD, "Ne"}, + /* 1759 */ {0x30CE, "No"}, + /* 1760 */ {0x30CF, "Ha"}, + /* 1761 */ {0x30D0, "Ba"}, + /* 1762 */ {0x30D1, "Pa"}, + /* 1763 */ {0x30D2, "Hi"}, + /* 1764 */ {0x30D3, "Bi"}, + /* 1765 */ {0x30D4, "Pi"}, + /* 1766 */ {0x30D5, "Hu"}, + /* 1767 */ {0x30D6, "Bu"}, + /* 1768 */ {0x30D7, "Pu"}, + /* 1769 */ {0x30D8, "He"}, + /* 1770 */ {0x30D9, "Be"}, + /* 1771 */ {0x30DA, "Pe"}, + /* 1772 */ {0x30DB, "Ho"}, + /* 1773 */ {0x30DC, "Bo"}, + /* 1774 */ {0x30DD, "Po"}, + /* 1775 */ {0x30DE, "Ma"}, + /* 1776 */ {0x30DF, "Mi"}, + /* 1777 */ {0x30E0, "Mu"}, + /* 1778 */ {0x30E1, "Me"}, + /* 1779 */ {0x30E2, "Mo"}, + /* 1780 */ {0x30E3, "YA"}, + /* 1781 */ {0x30E4, "Ya"}, + /* 1782 */ {0x30E5, "YU"}, + /* 1783 */ {0x30E6, "Yu"}, + /* 1784 */ {0x30E7, "YO"}, + /* 1785 */ {0x30E8, "Yo"}, + /* 1786 */ {0x30E9, "Ra"}, + /* 1787 */ {0x30EA, "Ri"}, + /* 1788 */ {0x30EB, "Ru"}, + /* 1789 */ {0x30EC, "Re"}, + /* 1790 */ {0x30ED, "Ro"}, + /* 1791 */ {0x30EE, "WA"}, + /* 1792 */ {0x30EF, "Wa"}, + /* 1793 */ {0x30F0, "Wi"}, + /* 1794 */ {0x30F1, "We"}, + /* 1795 */ {0x30F2, "Wo"}, + /* 1796 */ {0x30F3, "N6"}, + /* 1797 */ {0x30F4, "Vu"}, + /* 1798 */ {0x30F5, "KA"}, + /* 1799 */ {0x30F6, "KE"}, + /* 1800 */ {0x30F7, "Va"}, + /* 1801 */ {0x30F8, "Vi"}, + /* 1802 */ {0x30F9, "Ve"}, + /* 1803 */ {0x30FA, "Vo"}, + /* 1804 */ {0x30FB, ".6"}, + /* 1805 */ {0x30FC, "-6"}, + /* 1806 */ {0x30FD, "*6"}, + /* 1807 */ {0x30FE, "+6"}, + /* 1808 */ {0x3105, "b4"}, + /* 1809 */ {0x3106, "p4"}, + /* 1810 */ {0x3107, "m4"}, + /* 1811 */ {0x3108, "f4"}, + /* 1812 */ {0x3109, "d4"}, + /* 1813 */ {0x310A, "t4"}, + /* 1814 */ {0x310B, "n4"}, + /* 1815 */ {0x310C, "l4"}, + /* 1816 */ {0x310D, "g4"}, + /* 1817 */ {0x310E, "k4"}, + /* 1818 */ {0x310F, "h4"}, + /* 1819 */ {0x3110, "j4"}, + /* 1820 */ {0x3111, "q4"}, + /* 1821 */ {0x3112, "x4"}, + /* 1822 */ {0x3113, "zh"}, + /* 1823 */ {0x3114, "ch"}, + /* 1824 */ {0x3115, "sh"}, + /* 1825 */ {0x3116, "r4"}, + /* 1826 */ {0x3117, "z4"}, + /* 1827 */ {0x3118, "c4"}, + /* 1828 */ {0x3119, "s4"}, + /* 1829 */ {0x311A, "a4"}, + /* 1830 */ {0x311B, "o4"}, + /* 1831 */ {0x311C, "e4"}, + /* 1832 */ {0x311D, "eh4"}, + /* 1833 */ {0x311E, "ai"}, + /* 1834 */ {0x311F, "ei"}, + /* 1835 */ {0x3120, "au"}, + /* 1836 */ {0x3121, "ou"}, + /* 1837 */ {0x3122, "an"}, + /* 1838 */ {0x3123, "en"}, + /* 1839 */ {0x3124, "aN"}, + /* 1840 */ {0x3125, "eN"}, + /* 1841 */ {0x3126, "er"}, + /* 1842 */ {0x3127, "i4"}, + /* 1843 */ {0x3128, "u4"}, + /* 1844 */ {0x3129, "iu"}, + /* 1845 */ {0x312A, "v4"}, + /* 1846 */ {0x312B, "nG"}, + /* 1847 */ {0x312C, "gn"}, + /* 1848 */ {0x3220, "1c"}, + /* 1849 */ {0x3221, "2c"}, + /* 1850 */ {0x3222, "3c"}, + /* 1851 */ {0x3223, "4c"}, + /* 1852 */ {0x3224, "5c"}, + /* 1853 */ {0x3225, "6c"}, + /* 1854 */ {0x3226, "7c"}, + /* 1855 */ {0x3227, "8c"}, + /* 1856 */ {0x3228, "9c"}, + /* 1857 */ {0x3229, "10c"}, + /* 1858 */ {0x327F, "KSC"}, + /* 1859 */ {0x33C2, "am"}, + /* 1860 */ {0x33D8, "pm"}, + /* 1861 */ {0xE000, "\"3"}, + /* 1862 */ {0xE001, "\"1"}, + /* 1863 */ {0xE002, "\"!"}, + /* 1864 */ {0xE003, "\"'"}, + /* 1865 */ {0xE004, "\">"}, + /* 1866 */ {0xE005, "\"?"}, + /* 1867 */ {0xE006, "\"-"}, + /* 1868 */ {0xE007, "\"("}, + /* 1869 */ {0xE008, "\"."}, + /* 1870 */ {0xE009, "\":"}, + /* 1871 */ {0xE00A, "\"0"}, + /* 1872 */ {0xE00B, "\","}, + /* 1873 */ {0xE00C, "\"_"}, + /* 1874 */ {0xE00D, "\"\""}, + /* 1875 */ {0xE00E, "\";"}, + /* 1876 */ {0xE00F, "\"<"}, + /* 1877 */ {0xE010, "\"="}, + /* 1878 */ {0xE011, "\"/"}, + /* 1879 */ {0xE012, "\"p"}, + /* 1880 */ {0xE013, "\"d"}, + /* 1881 */ {0xE014, "\"i"}, + /* 1882 */ {0xE015, "+_"}, + /* 1883 */ {0xE016, "a+:"}, + /* 1884 */ {0xE017, "Tel"}, + /* 1885 */ {0xE018, "UA"}, + /* 1886 */ {0xE019, "UB"}, + /* 1887 */ {0xE01A, "t3"}, + /* 1888 */ {0xE01B, "m3"}, + /* 1889 */ {0xE01C, "k3"}, + /* 1890 */ {0xE01D, "p3"}, + /* 1891 */ {0xE01E, "Mc"}, + /* 1892 */ {0xE01F, "Fl"}, + /* 1893 */ {0xE020, "Ss"}, + /* 1894 */ {0xE021, "Ch"}, + /* 1895 */ {0xE022, "CH"}, + /* 1896 */ {0xE023, "__"}, + /* 1897 */ {0xE024, "/c"}, + /* 1898 */ {0xFB00, "ff"}, + /* 1899 */ {0xFB01, "fi"}, + /* 1900 */ {0xFB02, "fl"}, + /* 1901 */ {0xFB03, "ffi"}, + /* 1902 */ {0xFB04, "ffl"}, + /* 1903 */ {0xFB05, "St"}, + /* 1904 */ {0xFB06, "st"}, + /* 1905 */ {0xFE7D, "3+;"}, + /* 1906 */ {0xFE82, "aM."}, + /* 1907 */ {0xFE84, "aH."}, + /* 1908 */ {0xFE88, "ah."}, + /* 1909 */ {0xFE8D, "a+-"}, + /* 1910 */ {0xFE8E, "a+."}, + /* 1911 */ {0xFE8F, "b+-"}, + /* 1912 */ {0xFE90, "b+."}, + /* 1913 */ {0xFE91, "b+,"}, + /* 1914 */ {0xFE92, "b+;"}, + /* 1915 */ {0xFE93, "tm-"}, + /* 1916 */ {0xFE94, "tm."}, + /* 1917 */ {0xFE95, "t+-"}, + /* 1918 */ {0xFE96, "t+."}, + /* 1919 */ {0xFE97, "t+,"}, + /* 1920 */ {0xFE98, "t+;"}, + /* 1921 */ {0xFE99, "tk-"}, + /* 1922 */ {0xFE9A, "tk."}, + /* 1923 */ {0xFE9B, "tk,"}, + /* 1924 */ {0xFE9C, "tk;"}, + /* 1925 */ {0xFE9D, "g+-"}, + /* 1926 */ {0xFE9E, "g+."}, + /* 1927 */ {0xFE9F, "g+,"}, + /* 1928 */ {0xFEA0, "g+;"}, + /* 1929 */ {0xFEA1, "hk-"}, + /* 1930 */ {0xFEA2, "hk."}, + /* 1931 */ {0xFEA3, "hk,"}, + /* 1932 */ {0xFEA4, "hk;"}, + /* 1933 */ {0xFEA5, "x+-"}, + /* 1934 */ {0xFEA6, "x+."}, + /* 1935 */ {0xFEA7, "x+,"}, + /* 1936 */ {0xFEA8, "x+;"}, + /* 1937 */ {0xFEA9, "d+-"}, + /* 1938 */ {0xFEAA, "d+."}, + /* 1939 */ {0xFEAB, "dk-"}, + /* 1940 */ {0xFEAC, "dk."}, + /* 1941 */ {0xFEAD, "r+-"}, + /* 1942 */ {0xFEAE, "r+."}, + /* 1943 */ {0xFEAF, "z+-"}, + /* 1944 */ {0xFEB0, "z+."}, + /* 1945 */ {0xFEB1, "s+-"}, + /* 1946 */ {0xFEB2, "s+."}, + /* 1947 */ {0xFEB3, "s+,"}, + /* 1948 */ {0xFEB4, "s+;"}, + /* 1949 */ {0xFEB5, "sn-"}, + /* 1950 */ {0xFEB6, "sn."}, + /* 1951 */ {0xFEB7, "sn,"}, + /* 1952 */ {0xFEB8, "sn;"}, + /* 1953 */ {0xFEB9, "c+-"}, + /* 1954 */ {0xFEBA, "c+."}, + /* 1955 */ {0xFEBB, "c+,"}, + /* 1956 */ {0xFEBC, "c+;"}, + /* 1957 */ {0xFEBD, "dd-"}, + /* 1958 */ {0xFEBE, "dd."}, + /* 1959 */ {0xFEBF, "dd,"}, + /* 1960 */ {0xFEC0, "dd;"}, + /* 1961 */ {0xFEC1, "tj-"}, + /* 1962 */ {0xFEC2, "tj."}, + /* 1963 */ {0xFEC3, "tj,"}, + /* 1964 */ {0xFEC4, "tj;"}, + /* 1965 */ {0xFEC5, "zH-"}, + /* 1966 */ {0xFEC6, "zH."}, + /* 1967 */ {0xFEC7, "zH,"}, + /* 1968 */ {0xFEC8, "zH;"}, + /* 1969 */ {0xFEC9, "e+-"}, + /* 1970 */ {0xFECA, "e+."}, + /* 1971 */ {0xFECB, "e+,"}, + /* 1972 */ {0xFECC, "e+;"}, + /* 1973 */ {0xFECD, "i+-"}, + /* 1974 */ {0xFECE, "i+."}, + /* 1975 */ {0xFECF, "i+,"}, + /* 1976 */ {0xFED0, "i+;"}, + /* 1977 */ {0xFED1, "f+-"}, + /* 1978 */ {0xFED2, "f+."}, + /* 1979 */ {0xFED3, "f+,"}, + /* 1980 */ {0xFED4, "f+;"}, + /* 1981 */ {0xFED5, "q+-"}, + /* 1982 */ {0xFED6, "q+."}, + /* 1983 */ {0xFED7, "q+,"}, + /* 1984 */ {0xFED8, "q+;"}, + /* 1985 */ {0xFED9, "k+-"}, + /* 1986 */ {0xFEDA, "k+."}, + /* 1987 */ {0xFEDB, "k+,"}, + /* 1988 */ {0xFEDC, "k+;"}, + /* 1989 */ {0xFEDD, "l+-"}, + /* 1990 */ {0xFEDE, "l+."}, + /* 1991 */ {0xFEDF, "l+,"}, + /* 1992 */ {0xFEE0, "l+;"}, + /* 1993 */ {0xFEE1, "m+-"}, + /* 1994 */ {0xFEE2, "m+."}, + /* 1995 */ {0xFEE3, "m+,"}, + /* 1996 */ {0xFEE4, "m+;"}, + /* 1997 */ {0xFEE5, "n+-"}, + /* 1998 */ {0xFEE6, "n+."}, + /* 1999 */ {0xFEE7, "n+,"}, + /* 2000 */ {0xFEE8, "n+;"}, + /* 2001 */ {0xFEE9, "h+-"}, + /* 2002 */ {0xFEEA, "h+."}, + /* 2003 */ {0xFEEB, "h+,"}, + /* 2004 */ {0xFEEC, "h+;"}, + /* 2005 */ {0xFEED, "w+-"}, + /* 2006 */ {0xFEEE, "w+."}, + /* 2007 */ {0xFEEF, "j+-"}, + /* 2008 */ {0xFEF0, "j+."}, + /* 2009 */ {0xFEF1, "y+-"}, + /* 2010 */ {0xFEF2, "y+."}, + /* 2011 */ {0xFEF3, "y+,"}, + /* 2012 */ {0xFEF4, "y+;"}, + /* 2013 */ {0xFEF5, "lM-"}, + /* 2014 */ {0xFEF6, "lM."}, + /* 2015 */ {0xFEF7, "lH-"}, + /* 2016 */ {0xFEF8, "lH."}, + /* 2017 */ {0xFEF9, "lh-"}, + /* 2018 */ {0xFEFA, "lh."}, + /* 2019 */ {0xFEFB, "la-"}, + /* 2020 */ {0xFEFC, "la."}, }; static const unsigned short inverse[TABLE_LENGTH] = { - /* 0 */ 33, 124, 1224, 125, 1078, 1129, 1101, 1076, 1278, 1272, - /* 10 */ 1279, 161, 34, 1862, 1873, 1863, 1867, 748, 1871, 1866, - /* 20 */ 1868, 1877, 1870, 1861, 1860, 1709, 1107, 1166, 1108, 1869, - /* 30 */ 1874, 1875, 1876, 1864, 1865, 1872, 1879, 1880, 1878, 37, + /* 0 */ 33, 124, 1225, 125, 1078, 1129, 1101, 1076, 1279, 1273, + /* 10 */ 1280, 161, 34, 1863, 1874, 1864, 1868, 748, 1872, 1867, + /* 20 */ 1869, 1878, 1871, 1862, 1861, 1710, 1107, 1167, 1108, 1870, + /* 30 */ 1875, 1876, 1877, 1865, 1866, 1873, 1880, 1881, 1879, 37, /* 40 */ 618, 650, 1118, 38, 39, 96, 494, 500, 180, 489, /* 50 */ 499, 751, 184, 1130, 490, 491, 1103, 1104, 168, 492, - /* 60 */ 486, 94, 126, 495, 175, 329, 40, 123, 1616, 1620, - /* 70 */ 1237, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, - /* 80 */ 1295, 1280, 1622, 1143, 1256, 1282, 1349, 1350, 1351, 1352, - /* 90 */ 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, - /* 100 */ 1363, 1364, 1365, 1366, 1159, 1367, 1368, 1369, 1370, 1371, - /* 110 */ 1372, 1373, 1374, 41, 1617, 1621, 1042, 93, 1281, 1623, - /* 120 */ 1144, 1257, 1283, 1160, 42, 1245, 1574, 1573, 1711, 1805, - /* 130 */ 1277, 1240, 215, 1607, 558, 43, 1605, 736, 177, 1712, - /* 140 */ 1806, 1140, 1241, 1881, 1156, 44, 1053, 1054, 707, 1044, - /* 150 */ 496, 1603, 45, 1217, 1238, 1243, 173, 1097, 1242, 1100, - /* 160 */ 1804, 247, 1218, 1624, 1251, 1099, 1098, 1141, 1286, 1252, - /* 170 */ 1601, 170, 1131, 186, 1157, 1219, 46, 502, 1244, 1117, - /* 180 */ 1115, 1116, 1803, 1105, 1261, 183, 1287, 1536, 1604, 47, - /* 190 */ 1086, 750, 1111, 92, 1223, 1234, 1112, 1301, 1895, 1132, - /* 200 */ 48, 1249, 754, 1427, 1284, 1250, 1285, 1710, 1566, 1565, - /* 210 */ 1567, 1133, 1580, 1609, 755, 1563, 1564, 1146, 1579, 49, - /* 220 */ 488, 1122, 1119, 752, 487, 1311, 1329, 1338, 1856, 1339, - /* 230 */ 189, 1340, 1178, 1341, 188, 1342, 1180, 1343, 1184, 1344, - /* 240 */ 1345, 1186, 1346, 1347, 485, 493, 1094, 1089, 1088, 1190, - /* 250 */ 185, 1093, 756, 1847, 1303, 1307, 1203, 1147, 50, 1123, - /* 260 */ 1120, 1312, 1330, 1348, 1179, 1181, 1191, 178, 757, 1848, - /* 270 */ 1305, 1308, 1204, 1148, 51, 1434, 1124, 1121, 753, 1903, - /* 280 */ 1432, 1313, 1331, 1435, 190, 1182, 1187, 1090, 1192, 179, - /* 290 */ 1433, 758, 1114, 1849, 1304, 1309, 1205, 1149, 52, 1438, - /* 300 */ 1436, 1314, 1332, 1439, 1183, 1091, 1193, 1134, 1437, 759, - /* 310 */ 1850, 1306, 1310, 1206, 1150, 53, 1315, 1333, 1202, 1215, - /* 320 */ 1185, 1188, 1194, 1135, 760, 1851, 1207, 1151, 54, 1316, - /* 330 */ 1334, 1092, 1195, 1136, 761, 1852, 1208, 1152, 55, 1317, - /* 340 */ 1335, 1189, 1292, 1293, 1196, 1137, 762, 1853, 1209, 1153, - /* 350 */ 56, 1318, 1336, 1297, 1197, 1138, 763, 1854, 1210, 1154, - /* 360 */ 57, 1110, 1106, 1319, 1337, 1198, 1139, 764, 1855, 1211, - /* 370 */ 1155, 58, 1077, 747, 1262, 1288, 1109, 1264, 1263, 1537, - /* 380 */ 1128, 59, 1063, 1064, 708, 1087, 484, 1608, 60, 1222, - /* 390 */ 1614, 1612, 91, 1276, 1610, 1216, 1300, 1225, 1126, 1290, - /* 400 */ 171, 1228, 1220, 1577, 61, 616, 648, 749, 1102, 1273, - /* 410 */ 1274, 1230, 1229, 1270, 1142, 1618, 1619, 1158, 62, 1615, - /* 420 */ 1613, 1611, 1127, 1291, 1275, 187, 1578, 1227, 63, 498, - /* 430 */ 1045, 709, 1055, 1267, 1265, 1269, 1046, 1065, 1268, 191, - /* 440 */ 1538, 64, 65, 192, 458, 501, 193, 258, 928, 926, - /* 450 */ 930, 932, 460, 510, 1039, 1040, 1037, 994, 1038, 995, - /* 460 */ 1041, 680, 256, 914, 772, 1375, 428, 916, 432, 1625, - /* 470 */ 1714, 430, 196, 260, 411, 590, 194, 920, 918, 922, - /* 480 */ 924, 195, 197, 452, 159, 198, 454, 6, 1254, 1176, - /* 490 */ 66, 511, 681, 776, 1376, 774, 385, 591, 166, 1530, - /* 500 */ 130, 7, 8, 778, 1760, 1571, 1769, 1763, 1772, 1766, - /* 510 */ 67, 613, 262, 523, 199, 780, 1377, 266, 386, 676, - /* 520 */ 268, 612, 264, 148, 1266, 1894, 155, 24, 13, 1125, - /* 530 */ 1893, 1572, 169, 162, 164, 68, 577, 513, 683, 788, - /* 540 */ 208, 784, 790, 1378, 782, 272, 17, 18, 19, 20, - /* 550 */ 270, 594, 144, 1235, 176, 1522, 1479, 1259, 16, 1477, - /* 560 */ 36, 1504, 1443, 580, 127, 589, 447, 402, 786, 1744, - /* 570 */ 1560, 1751, 1521, 1476, 1746, 1506, 1446, 1478, 1753, 1503, - /* 580 */ 1442, 1556, 1749, 1561, 448, 403, 69, 200, 462, 503, + /* 60 */ 486, 94, 126, 495, 175, 329, 40, 123, 1617, 1621, + /* 70 */ 1238, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, + /* 80 */ 1296, 1281, 1623, 1143, 1257, 1283, 1350, 1351, 1352, 1353, + /* 90 */ 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, + /* 100 */ 1364, 1365, 1366, 1367, 1159, 1368, 1369, 1370, 1371, 1372, + /* 110 */ 1373, 1374, 1375, 41, 1618, 1622, 1042, 93, 1282, 1624, + /* 120 */ 1144, 1258, 1284, 1160, 42, 1246, 1575, 1574, 1712, 1806, + /* 130 */ 1278, 1241, 215, 1608, 558, 43, 1606, 736, 177, 1713, + /* 140 */ 1807, 1140, 1242, 1882, 1156, 44, 1053, 1054, 707, 1044, + /* 150 */ 496, 1604, 45, 1218, 1239, 1244, 173, 1097, 1243, 1100, + /* 160 */ 1805, 247, 1219, 1625, 1252, 1099, 1098, 1141, 1287, 1253, + /* 170 */ 1602, 170, 1131, 186, 1157, 1220, 46, 502, 1245, 1117, + /* 180 */ 1115, 1116, 1804, 1105, 1262, 183, 1288, 1537, 1605, 47, + /* 190 */ 1086, 750, 1111, 92, 1224, 1235, 1112, 1302, 1897, 1132, + /* 200 */ 48, 1250, 754, 1428, 1285, 1251, 1286, 1711, 1567, 1566, + /* 210 */ 1568, 1133, 1581, 1610, 755, 1564, 1565, 1146, 1580, 49, + /* 220 */ 488, 1122, 1119, 752, 487, 1312, 1330, 1339, 1857, 1340, + /* 230 */ 189, 1341, 1179, 1342, 188, 1343, 1181, 1344, 1185, 1345, + /* 240 */ 1346, 1187, 1347, 1348, 485, 493, 1094, 1089, 1088, 1191, + /* 250 */ 185, 1093, 756, 1848, 1304, 1308, 1204, 1147, 50, 1123, + /* 260 */ 1120, 1313, 1331, 1349, 1180, 1182, 1192, 178, 757, 1849, + /* 270 */ 1306, 1309, 1205, 1148, 51, 1435, 1124, 1121, 753, 1905, + /* 280 */ 1433, 1314, 1332, 1436, 190, 1183, 1188, 1090, 1193, 179, + /* 290 */ 1434, 758, 1114, 1850, 1305, 1310, 1206, 1149, 52, 1439, + /* 300 */ 1437, 1315, 1333, 1440, 1184, 1091, 1194, 1134, 1438, 759, + /* 310 */ 1851, 1307, 1311, 1207, 1150, 53, 1316, 1334, 1203, 1216, + /* 320 */ 1186, 1189, 1195, 1135, 760, 1852, 1208, 1151, 54, 1317, + /* 330 */ 1335, 1092, 1196, 1136, 761, 1853, 1209, 1152, 55, 1318, + /* 340 */ 1336, 1190, 1293, 1294, 1197, 1137, 762, 1854, 1210, 1153, + /* 350 */ 56, 1319, 1337, 1298, 1198, 1138, 763, 1855, 1211, 1154, + /* 360 */ 57, 1110, 1106, 1320, 1338, 1199, 1139, 764, 1856, 1212, + /* 370 */ 1155, 58, 1077, 747, 1263, 1289, 1109, 1265, 1264, 1538, + /* 380 */ 1128, 59, 1063, 1064, 708, 1087, 484, 1609, 60, 1223, + /* 390 */ 1615, 1613, 91, 1277, 1611, 1217, 1301, 1226, 1126, 1291, + /* 400 */ 171, 1229, 1221, 1578, 61, 616, 648, 749, 1102, 1274, + /* 410 */ 1275, 1231, 1230, 1271, 1142, 1619, 1620, 1158, 62, 1616, + /* 420 */ 1614, 1612, 1127, 1292, 1276, 187, 1579, 1228, 63, 498, + /* 430 */ 1045, 709, 1055, 1268, 1266, 1270, 1046, 1065, 1269, 191, + /* 440 */ 1539, 65, 192, 458, 501, 193, 258, 928, 926, 930, + /* 450 */ 932, 460, 510, 1039, 1040, 1037, 994, 1038, 995, 1041, + /* 460 */ 680, 256, 914, 772, 1376, 428, 916, 432, 1626, 1715, + /* 470 */ 430, 196, 260, 411, 590, 194, 920, 918, 922, 924, + /* 480 */ 195, 197, 452, 159, 198, 454, 6, 1255, 1177, 64, + /* 490 */ 66, 511, 681, 776, 1377, 774, 385, 591, 166, 1531, + /* 500 */ 130, 7, 8, 778, 1761, 1572, 1770, 1764, 1773, 1767, + /* 510 */ 67, 613, 262, 523, 199, 780, 1378, 266, 386, 676, + /* 520 */ 268, 612, 264, 148, 1267, 1895, 155, 24, 13, 1125, + /* 530 */ 1894, 1573, 169, 162, 164, 68, 577, 513, 683, 788, + /* 540 */ 208, 784, 790, 1379, 782, 272, 17, 18, 19, 20, + /* 550 */ 270, 594, 144, 1236, 176, 1523, 1480, 1260, 16, 1478, + /* 560 */ 36, 1505, 1444, 580, 127, 589, 447, 402, 786, 1745, + /* 570 */ 1561, 1752, 1522, 1477, 1747, 1507, 1447, 1479, 1754, 1504, + /* 580 */ 1443, 1557, 1750, 1562, 448, 403, 69, 200, 462, 503, /* 590 */ 201, 276, 464, 514, 1049, 998, 999, 698, 800, 274, - /* 600 */ 792, 794, 934, 796, 798, 1379, 278, 936, 1631, 1720, + /* 600 */ 792, 794, 934, 796, 798, 1380, 278, 936, 1632, 1721, /* 610 */ 203, 280, 282, 595, 202, 942, 940, 944, 946, 938, /* 620 */ 23, 27, 401, 151, 25, 5, 135, 4, 3, 444, - /* 630 */ 1289, 1177, 1165, 70, 530, 1380, 802, 388, 672, 610, - /* 640 */ 1231, 1533, 1529, 12, 1239, 28, 1570, 1161, 1891, 1582, - /* 650 */ 71, 578, 450, 286, 512, 682, 290, 804, 1381, 288, - /* 660 */ 434, 678, 436, 593, 284, 153, 29, 1724, 1730, 1726, - /* 670 */ 1732, 1728, 72, 710, 517, 684, 812, 814, 808, 1382, - /* 680 */ 806, 294, 810, 611, 292, 1500, 1271, 137, 129, 136, - /* 690 */ 9, 1759, 1768, 1762, 1771, 1765, 73, 204, 466, 505, - /* 700 */ 205, 300, 468, 518, 1061, 1062, 1059, 1006, 1060, 1007, - /* 710 */ 298, 950, 816, 1383, 304, 948, 1627, 1716, 207, 818, - /* 720 */ 302, 413, 598, 206, 296, 579, 581, 306, 132, 576, - /* 730 */ 1602, 1569, 1299, 1258, 1260, 1298, 74, 583, 534, 689, - /* 740 */ 1384, 1043, 599, 308, 621, 619, 1606, 620, 75, 690, - /* 750 */ 820, 519, 691, 310, 822, 1385, 390, 574, 438, 600, - /* 760 */ 1797, 1798, 587, 1857, 824, 1723, 1729, 1725, 1731, 1727, - /* 770 */ 76, 313, 520, 692, 315, 826, 830, 1386, 319, 321, - /* 780 */ 317, 601, 1532, 1507, 1447, 10, 584, 405, 1095, 1562, - /* 790 */ 828, 1162, 406, 77, 693, 832, 521, 694, 836, 1387, - /* 800 */ 834, 1595, 1594, 573, 1593, 602, 149, 1598, 1774, 1596, - /* 810 */ 1890, 1592, 1777, 1775, 1583, 1778, 1776, 1597, 181, 78, - /* 820 */ 695, 323, 522, 696, 325, 840, 844, 1388, 838, 1170, - /* 830 */ 1795, 327, 603, 209, 1236, 330, 131, 1294, 585, 408, - /* 840 */ 21, 133, 172, 160, 0, 842, 1754, 35, 1757, 1755, - /* 850 */ 409, 1758, 1756, 79, 210, 470, 336, 506, 211, 334, - /* 860 */ 472, 524, 1081, 1082, 1010, 1011, 332, 850, 852, 952, - /* 870 */ 1389, 216, 456, 442, 954, 670, 1633, 1722, 392, 966, - /* 880 */ 964, 968, 970, 214, 440, 415, 604, 212, 958, 956, - /* 890 */ 960, 962, 213, 846, 848, 157, 338, 394, 1599, 1255, - /* 900 */ 1540, 1246, 1175, 1551, 80, 699, 854, 525, 700, 1390, - /* 910 */ 856, 145, 146, 575, 605, 128, 139, 182, 1559, 158, - /* 920 */ 1171, 1253, 1555, 140, 1761, 163, 1770, 1764, 1773, 1163, - /* 930 */ 1767, 81, 532, 703, 1391, 82, 474, 340, 476, 526, - /* 940 */ 1075, 704, 342, 860, 1392, 858, 344, 606, 1535, 1543, - /* 950 */ 1545, 141, 1547, 1096, 1541, 30, 1248, 1548, 1544, 1546, - /* 960 */ 862, 1785, 1788, 174, 1786, 1789, 1542, 1787, 1172, 83, - /* 970 */ 614, 346, 868, 527, 697, 350, 866, 1393, 864, 142, - /* 980 */ 143, 352, 870, 607, 348, 134, 26, 154, 167, 150, - /* 990 */ 1, 15, 1173, 14, 32, 1550, 152, 156, 1581, 2, - /* 1000 */ 22, 1733, 1247, 615, 1739, 705, 1735, 1568, 1741, 1892, - /* 1010 */ 1901, 1737, 84, 528, 706, 354, 874, 878, 1394, 872, - /* 1020 */ 358, 572, 356, 608, 1531, 1233, 1575, 222, 1174, 1296, - /* 1030 */ 147, 1747, 876, 1743, 1750, 1883, 1745, 688, 1558, 1752, - /* 1040 */ 1554, 586, 1748, 85, 217, 478, 368, 507, 218, 364, - /* 1050 */ 480, 529, 1073, 1074, 1071, 1072, 1014, 362, 972, 886, - /* 1060 */ 882, 880, 1395, 366, 974, 1629, 1718, 397, 978, 976, - /* 1070 */ 980, 982, 220, 425, 421, 419, 423, 370, 417, 609, - /* 1080 */ 219, 360, 884, 1884, 1885, 1221, 1226, 1525, 1487, 1513, - /* 1090 */ 1455, 1485, 1510, 1451, 31, 1552, 1495, 1469, 1461, 1492, - /* 1100 */ 1466, 1458, 1524, 1484, 1512, 1454, 1486, 1509, 1450, 86, - /* 1110 */ 588, 535, 890, 1396, 674, 592, 888, 1528, 1499, 1519, - /* 1120 */ 1471, 1497, 1516, 1463, 138, 11, 1501, 1431, 1799, 1801, - /* 1130 */ 1527, 1494, 1800, 1518, 1468, 1498, 1802, 1515, 1460, 1302, - /* 1140 */ 1796, 87, 892, 508, 894, 533, 1083, 1084, 1017, 1018, - /* 1150 */ 1085, 685, 900, 1397, 898, 896, 1164, 372, 1790, 1791, - /* 1160 */ 1793, 1792, 1794, 88, 531, 687, 1398, 902, 904, 1600, - /* 1170 */ 89, 984, 504, 221, 516, 1050, 1051, 1002, 1003, 1052, - /* 1180 */ 986, 1399, 906, 988, 668, 376, 617, 374, 990, 1779, - /* 1190 */ 582, 1783, 1781, 1780, 165, 1784, 1782, 90, 596, 377, - /* 1200 */ 515, 686, 910, 1400, 379, 399, 381, 597, 908, 702, - /* 1210 */ 912, 1734, 1740, 1736, 701, 1742, 1738, 95, 1429, 97, - /* 1220 */ 224, 459, 536, 225, 259, 929, 927, 931, 933, 461, - /* 1230 */ 541, 1019, 1020, 1033, 992, 1034, 993, 1036, 1035, 716, - /* 1240 */ 1907, 1908, 1882, 257, 915, 773, 1401, 429, 917, 433, - /* 1250 */ 1828, 1626, 1713, 431, 228, 261, 412, 622, 226, 921, - /* 1260 */ 919, 923, 925, 227, 712, 1905, 711, 1904, 1838, 1199, - /* 1270 */ 765, 229, 453, 230, 455, 714, 1906, 1832, 1858, 1836, - /* 1280 */ 1212, 1834, 98, 542, 717, 1911, 1909, 1910, 1912, 777, - /* 1290 */ 1402, 775, 384, 571, 1807, 623, 1200, 779, 1672, 1681, - /* 1300 */ 1675, 1684, 1213, 1678, 99, 645, 263, 554, 730, 1953, - /* 1310 */ 1951, 1952, 1954, 231, 781, 1403, 267, 387, 677, 1826, - /* 1320 */ 269, 644, 265, 1587, 1591, 1586, 1590, 1585, 1589, 1201, - /* 1330 */ 1584, 1588, 1822, 1168, 1214, 100, 655, 544, 724, 1935, - /* 1340 */ 1936, 789, 240, 785, 791, 1404, 783, 273, 1811, 271, - /* 1350 */ 626, 1520, 1475, 1505, 1445, 1473, 1232, 1502, 1441, 1557, - /* 1360 */ 787, 1656, 731, 1957, 1955, 1956, 1958, 1663, 1472, 1658, - /* 1370 */ 725, 1937, 1938, 1444, 1474, 1665, 1440, 658, 1661, 667, - /* 1380 */ 449, 404, 101, 232, 463, 537, 233, 277, 465, 545, - /* 1390 */ 1021, 1022, 996, 997, 734, 1969, 1967, 1968, 1970, 801, - /* 1400 */ 275, 793, 795, 935, 797, 799, 1405, 279, 427, 937, - /* 1410 */ 1830, 1632, 1719, 235, 281, 283, 627, 234, 943, 941, - /* 1420 */ 945, 947, 939, 1839, 483, 1831, 1833, 1837, 1840, 445, - /* 1430 */ 102, 562, 737, 1977, 1975, 1976, 1978, 1406, 803, 389, - /* 1440 */ 673, 1810, 642, 1539, 1896, 1899, 1900, 1897, 1898, 103, - /* 1450 */ 656, 451, 287, 543, 721, 1925, 1923, 1924, 1926, 291, - /* 1460 */ 805, 1407, 289, 435, 679, 1815, 437, 625, 285, 1636, - /* 1470 */ 1642, 771, 1638, 1846, 1644, 1640, 104, 548, 743, 2001, - /* 1480 */ 1999, 2000, 2002, 813, 815, 809, 1408, 807, 295, 1817, - /* 1490 */ 811, 643, 293, 767, 1671, 1680, 1428, 1674, 722, 1929, - /* 1500 */ 1927, 1928, 1930, 1683, 1677, 105, 236, 467, 539, 237, - /* 1510 */ 301, 469, 549, 1025, 1026, 1056, 1004, 1057, 1005, 1058, - /* 1520 */ 735, 1973, 1971, 1972, 1974, 299, 951, 817, 1409, 305, - /* 1530 */ 949, 509, 1841, 1628, 1715, 239, 819, 303, 414, 630, - /* 1540 */ 238, 297, 657, 659, 307, 654, 1843, 106, 661, 566, - /* 1550 */ 745, 2005, 2006, 1410, 497, 1818, 446, 631, 309, 653, - /* 1560 */ 651, 652, 107, 821, 550, 739, 1985, 1983, 1984, 1986, - /* 1570 */ 311, 823, 1411, 391, 1888, 1816, 439, 632, 825, 1635, - /* 1580 */ 1641, 1637, 665, 312, 1643, 1639, 108, 314, 551, 740, - /* 1590 */ 1989, 1987, 1988, 1990, 316, 827, 831, 1412, 320, 322, - /* 1600 */ 1814, 318, 633, 1534, 2013, 2014, 2011, 2012, 829, 2017, - /* 1610 */ 2018, 2015, 2016, 662, 407, 109, 833, 552, 741, 1993, - /* 1620 */ 1991, 1992, 1994, 837, 1413, 835, 1887, 1809, 634, 1686, - /* 1630 */ 1689, 1687, 1690, 1688, 110, 324, 553, 742, 1997, 1995, - /* 1640 */ 1996, 1998, 326, 841, 845, 1414, 839, 1813, 1707, 328, - /* 1650 */ 635, 241, 1845, 1145, 843, 1666, 1669, 331, 1667, 663, - /* 1660 */ 410, 1670, 1668, 111, 242, 471, 337, 568, 243, 335, - /* 1670 */ 473, 555, 1027, 1028, 1008, 1009, 333, 851, 853, 953, - /* 1680 */ 1415, 248, 457, 443, 955, 671, 1829, 1634, 1721, 393, - /* 1690 */ 967, 965, 969, 971, 246, 441, 416, 636, 244, 959, - /* 1700 */ 957, 961, 963, 245, 847, 849, 1167, 1169, 339, 395, - /* 1710 */ 1835, 112, 855, 556, 766, 1416, 857, 1889, 1808, 637, - /* 1720 */ 1673, 1682, 1676, 1859, 1685, 1679, 113, 564, 738, 1981, - /* 1730 */ 1979, 1980, 1982, 1417, 1819, 114, 475, 341, 477, 557, - /* 1740 */ 1068, 1069, 726, 1939, 1940, 343, 861, 1418, 859, 482, - /* 1750 */ 1824, 345, 638, 863, 1697, 1700, 1698, 1701, 1699, 115, - /* 1760 */ 646, 347, 869, 559, 728, 1945, 1943, 1944, 1946, 351, - /* 1770 */ 867, 1419, 865, 383, 1827, 353, 871, 639, 349, 1549, - /* 1780 */ 1645, 1113, 647, 1651, 1823, 1647, 729, 1949, 1947, 1948, - /* 1790 */ 1950, 1653, 223, 1902, 1649, 116, 560, 719, 1917, 1915, - /* 1800 */ 1916, 1918, 355, 875, 879, 1420, 873, 359, 1886, 1812, - /* 1810 */ 357, 640, 1659, 877, 1655, 768, 1662, 1576, 254, 1657, - /* 1820 */ 732, 1961, 1959, 1960, 1962, 720, 1921, 1919, 1920, 1922, - /* 1830 */ 718, 1913, 1914, 1664, 664, 1660, 117, 249, 479, 369, - /* 1840 */ 569, 250, 365, 481, 561, 1029, 1030, 1066, 1012, 1067, - /* 1850 */ 1013, 1070, 363, 973, 887, 883, 881, 1421, 367, 975, - /* 1860 */ 540, 1842, 1630, 1717, 398, 979, 977, 981, 983, 252, - /* 1870 */ 426, 422, 420, 424, 371, 418, 641, 251, 361, 885, - /* 1880 */ 1496, 1470, 1462, 1493, 1467, 1459, 1523, 1483, 1511, 1453, - /* 1890 */ 1481, 1508, 1449, 1553, 1480, 1452, 1482, 1448, 118, 666, - /* 1900 */ 567, 770, 891, 1422, 675, 1844, 624, 889, 1526, 1491, - /* 1910 */ 1517, 1465, 1489, 1514, 1457, 1488, 1464, 1490, 1456, 1708, - /* 1920 */ 1430, 119, 893, 570, 895, 565, 1031, 1032, 1015, 1016, - /* 1930 */ 1080, 1079, 744, 2003, 2004, 901, 1423, 899, 897, 373, - /* 1940 */ 1702, 713, 1703, 1705, 1704, 1706, 120, 563, 723, 1933, - /* 1950 */ 1931, 1932, 1934, 1424, 903, 1820, 905, 121, 985, 538, - /* 1960 */ 253, 547, 1023, 1024, 1000, 1001, 1048, 1047, 746, 2009, - /* 1970 */ 2007, 2008, 2010, 987, 1425, 907, 989, 669, 255, 649, - /* 1980 */ 375, 991, 1691, 715, 1695, 1693, 1692, 660, 1696, 396, - /* 1990 */ 1694, 122, 628, 378, 546, 727, 1941, 1942, 911, 1426, - /* 2000 */ 380, 400, 1825, 382, 629, 909, 733, 1965, 1963, 1964, - /* 2010 */ 1966, 913, 1646, 1652, 1821, 1648, 769, 1654, 1650 + /* 630 */ 1290, 1178, 1166, 70, 530, 1381, 802, 388, 672, 610, + /* 640 */ 1232, 1534, 1530, 12, 1240, 28, 1571, 1161, 1892, 1583, + /* 650 */ 71, 578, 450, 286, 512, 682, 290, 804, 1382, 288, + /* 660 */ 434, 678, 436, 593, 284, 153, 29, 1725, 1731, 1727, + /* 670 */ 1733, 1729, 72, 710, 517, 684, 812, 814, 808, 1383, + /* 680 */ 806, 294, 810, 611, 292, 1501, 1430, 1272, 137, 129, + /* 690 */ 136, 9, 1760, 1769, 1763, 1772, 1766, 73, 204, 466, + /* 700 */ 505, 205, 300, 468, 518, 1061, 1062, 1059, 1006, 1060, + /* 710 */ 1007, 298, 950, 816, 1384, 304, 948, 1628, 1717, 207, + /* 720 */ 818, 302, 413, 598, 206, 296, 579, 581, 306, 132, + /* 730 */ 576, 1603, 1570, 1300, 1259, 1261, 1299, 74, 583, 534, + /* 740 */ 689, 1385, 1043, 599, 308, 621, 619, 1607, 620, 75, + /* 750 */ 690, 820, 519, 691, 310, 822, 1386, 390, 574, 438, + /* 760 */ 600, 1798, 1799, 587, 1858, 824, 1724, 1730, 1726, 1732, + /* 770 */ 1728, 76, 313, 520, 692, 315, 826, 830, 1387, 319, + /* 780 */ 321, 317, 601, 1533, 1508, 1448, 10, 584, 405, 1095, + /* 790 */ 1563, 828, 1162, 406, 77, 693, 832, 521, 694, 836, + /* 800 */ 1388, 834, 1596, 1595, 573, 1594, 602, 149, 1599, 1775, + /* 810 */ 1597, 1891, 1593, 1778, 1776, 1584, 1779, 1777, 1598, 181, + /* 820 */ 78, 695, 323, 522, 696, 325, 840, 844, 1389, 838, + /* 830 */ 1171, 1796, 327, 603, 209, 1237, 330, 131, 1295, 585, + /* 840 */ 408, 21, 133, 172, 160, 1165, 0, 842, 1755, 35, + /* 850 */ 1758, 1756, 409, 1759, 1757, 79, 210, 470, 336, 506, + /* 860 */ 211, 334, 472, 524, 1081, 1082, 1010, 1011, 332, 850, + /* 870 */ 852, 952, 1390, 216, 456, 442, 954, 670, 1634, 1723, + /* 880 */ 392, 966, 964, 968, 970, 214, 440, 415, 604, 212, + /* 890 */ 958, 956, 960, 962, 213, 846, 848, 157, 338, 394, + /* 900 */ 1600, 1256, 1541, 1247, 1176, 1552, 80, 699, 854, 525, + /* 910 */ 700, 1391, 856, 145, 146, 575, 605, 128, 139, 182, + /* 920 */ 1560, 158, 1172, 1254, 1556, 140, 1762, 163, 1771, 1765, + /* 930 */ 1774, 1163, 1768, 81, 532, 703, 1392, 82, 474, 340, + /* 940 */ 476, 526, 1075, 704, 342, 860, 1393, 858, 344, 606, + /* 950 */ 1536, 1544, 1546, 141, 1548, 1096, 1542, 30, 1249, 1549, + /* 960 */ 1545, 1547, 862, 1786, 1789, 174, 1787, 1790, 1543, 1788, + /* 970 */ 1173, 83, 614, 346, 868, 527, 697, 350, 866, 1394, + /* 980 */ 864, 142, 143, 352, 870, 607, 348, 134, 26, 154, + /* 990 */ 167, 150, 1, 15, 1174, 14, 32, 1551, 152, 156, + /* 1000 */ 1582, 2, 22, 1734, 1248, 615, 1740, 705, 1736, 1569, + /* 1010 */ 1742, 1893, 1903, 1738, 84, 528, 706, 354, 874, 878, + /* 1020 */ 1395, 872, 358, 572, 356, 608, 1532, 1234, 1576, 222, + /* 1030 */ 1175, 1297, 147, 1748, 876, 1744, 1751, 1884, 1746, 688, + /* 1040 */ 1559, 1753, 1555, 586, 1749, 85, 217, 478, 368, 507, + /* 1050 */ 218, 364, 480, 529, 1073, 1074, 1071, 1072, 1014, 362, + /* 1060 */ 972, 886, 882, 880, 1396, 366, 974, 1630, 1719, 397, + /* 1070 */ 978, 976, 980, 982, 220, 425, 421, 419, 423, 370, + /* 1080 */ 417, 609, 219, 360, 884, 1885, 1886, 1222, 1227, 1526, + /* 1090 */ 1488, 1514, 1456, 1486, 1511, 1452, 31, 1553, 1496, 1470, + /* 1100 */ 1462, 1493, 1467, 1459, 1525, 1485, 1513, 1455, 1487, 1510, + /* 1110 */ 1451, 86, 588, 535, 890, 1397, 674, 592, 888, 1529, + /* 1120 */ 1500, 1520, 1472, 1498, 1517, 1464, 138, 11, 1502, 1432, + /* 1130 */ 1800, 1802, 1528, 1495, 1801, 1519, 1469, 1499, 1803, 1516, + /* 1140 */ 1461, 1303, 1797, 87, 892, 508, 894, 533, 1083, 1084, + /* 1150 */ 1017, 1018, 1085, 685, 900, 1398, 898, 896, 1164, 372, + /* 1160 */ 1791, 1792, 1794, 1793, 1795, 88, 531, 687, 1399, 902, + /* 1170 */ 904, 1601, 89, 984, 504, 221, 516, 1050, 1051, 1002, + /* 1180 */ 1003, 1052, 986, 1400, 906, 988, 668, 376, 617, 374, + /* 1190 */ 990, 1780, 582, 1784, 1782, 1781, 165, 1785, 1783, 90, + /* 1200 */ 596, 377, 515, 686, 910, 1401, 379, 399, 381, 597, + /* 1210 */ 908, 702, 912, 1735, 1741, 1737, 701, 1743, 1739, 95, + /* 1220 */ 1896, 97, 224, 459, 536, 225, 259, 929, 927, 931, + /* 1230 */ 933, 461, 541, 1019, 1020, 1033, 992, 1034, 993, 1036, + /* 1240 */ 1035, 716, 1909, 1910, 1883, 257, 915, 773, 1402, 429, + /* 1250 */ 917, 433, 1829, 1627, 1714, 431, 228, 261, 412, 622, + /* 1260 */ 226, 921, 919, 923, 925, 227, 712, 1907, 711, 1906, + /* 1270 */ 1839, 1200, 765, 229, 453, 230, 455, 714, 1908, 1833, + /* 1280 */ 1859, 1837, 1213, 1835, 98, 542, 717, 1913, 1911, 1912, + /* 1290 */ 1914, 777, 1403, 775, 384, 571, 1808, 623, 1201, 779, + /* 1300 */ 1673, 1682, 1676, 1685, 1214, 1679, 99, 645, 263, 554, + /* 1310 */ 730, 1955, 1953, 1954, 1956, 231, 781, 1404, 267, 387, + /* 1320 */ 677, 1827, 269, 644, 265, 1588, 1592, 1587, 1591, 1586, + /* 1330 */ 1590, 1202, 1585, 1589, 1823, 1169, 1215, 100, 655, 544, + /* 1340 */ 724, 1937, 1938, 789, 240, 785, 791, 1405, 783, 273, + /* 1350 */ 1812, 271, 626, 1521, 1476, 1506, 1446, 1474, 1233, 1503, + /* 1360 */ 1442, 1558, 787, 1657, 731, 1959, 1957, 1958, 1960, 1664, + /* 1370 */ 1473, 1659, 725, 1939, 1940, 1445, 1475, 1666, 1441, 658, + /* 1380 */ 1662, 667, 449, 404, 101, 232, 463, 537, 233, 277, + /* 1390 */ 465, 545, 1021, 1022, 996, 997, 734, 1971, 1969, 1970, + /* 1400 */ 1972, 801, 275, 793, 795, 935, 797, 799, 1406, 279, + /* 1410 */ 427, 937, 1831, 1633, 1720, 235, 281, 283, 627, 234, + /* 1420 */ 943, 941, 945, 947, 939, 1840, 483, 1832, 1834, 1838, + /* 1430 */ 1841, 445, 102, 562, 737, 1979, 1977, 1978, 1980, 1407, + /* 1440 */ 803, 389, 673, 1811, 642, 1540, 1898, 1901, 1902, 1899, + /* 1450 */ 1900, 103, 656, 451, 287, 543, 721, 1927, 1925, 1926, + /* 1460 */ 1928, 291, 805, 1408, 289, 435, 679, 1816, 437, 625, + /* 1470 */ 285, 1637, 1643, 771, 1639, 1847, 1645, 1641, 104, 548, + /* 1480 */ 743, 2003, 2001, 2002, 2004, 813, 815, 809, 1409, 807, + /* 1490 */ 295, 1818, 811, 643, 293, 767, 1672, 1681, 1429, 1675, + /* 1500 */ 722, 1931, 1929, 1930, 1932, 1684, 1678, 105, 236, 467, + /* 1510 */ 539, 237, 301, 469, 549, 1025, 1026, 1056, 1004, 1057, + /* 1520 */ 1005, 1058, 735, 1975, 1973, 1974, 1976, 299, 951, 817, + /* 1530 */ 1410, 305, 949, 509, 1842, 1629, 1716, 239, 819, 303, + /* 1540 */ 414, 630, 238, 297, 657, 659, 307, 654, 1844, 106, + /* 1550 */ 661, 566, 745, 2007, 2008, 1411, 497, 1819, 446, 631, + /* 1560 */ 309, 653, 651, 652, 107, 821, 550, 739, 1987, 1985, + /* 1570 */ 1986, 1988, 311, 823, 1412, 391, 1889, 1817, 439, 632, + /* 1580 */ 825, 1636, 1642, 1638, 665, 312, 1644, 1640, 108, 314, + /* 1590 */ 551, 740, 1991, 1989, 1990, 1992, 316, 827, 831, 1413, + /* 1600 */ 320, 322, 1815, 318, 633, 1535, 2015, 2016, 2013, 2014, + /* 1610 */ 829, 2019, 2020, 2017, 2018, 662, 407, 109, 833, 552, + /* 1620 */ 741, 1995, 1993, 1994, 1996, 837, 1414, 835, 1888, 1810, + /* 1630 */ 634, 1687, 1690, 1688, 1691, 1689, 110, 324, 553, 742, + /* 1640 */ 1999, 1997, 1998, 2000, 326, 841, 845, 1415, 839, 1814, + /* 1650 */ 1708, 328, 635, 241, 1846, 1145, 843, 1667, 1670, 331, + /* 1660 */ 1668, 663, 410, 1671, 1669, 111, 242, 471, 337, 568, + /* 1670 */ 243, 335, 473, 555, 1027, 1028, 1008, 1009, 333, 851, + /* 1680 */ 853, 953, 1416, 248, 457, 443, 955, 671, 1830, 1635, + /* 1690 */ 1722, 393, 967, 965, 969, 971, 246, 441, 416, 636, + /* 1700 */ 244, 959, 957, 961, 963, 245, 847, 849, 1168, 1170, + /* 1710 */ 339, 395, 1836, 112, 855, 556, 766, 1417, 857, 1890, + /* 1720 */ 1809, 637, 1674, 1683, 1677, 1860, 1686, 1680, 113, 564, + /* 1730 */ 738, 1983, 1981, 1982, 1984, 1418, 1820, 114, 475, 341, + /* 1740 */ 477, 557, 1068, 1069, 726, 1941, 1942, 343, 861, 1419, + /* 1750 */ 859, 482, 1825, 345, 638, 863, 1698, 1701, 1699, 1702, + /* 1760 */ 1700, 115, 646, 347, 869, 559, 728, 1947, 1945, 1946, + /* 1770 */ 1948, 351, 867, 1420, 865, 383, 1828, 353, 871, 639, + /* 1780 */ 349, 1550, 1646, 1113, 647, 1652, 1824, 1648, 729, 1951, + /* 1790 */ 1949, 1950, 1952, 1654, 223, 1904, 1650, 116, 560, 719, + /* 1800 */ 1919, 1917, 1918, 1920, 355, 875, 879, 1421, 873, 359, + /* 1810 */ 1887, 1813, 357, 640, 1660, 877, 1656, 768, 1663, 1577, + /* 1820 */ 254, 1658, 732, 1963, 1961, 1962, 1964, 720, 1923, 1921, + /* 1830 */ 1922, 1924, 718, 1915, 1916, 1665, 664, 1661, 117, 249, + /* 1840 */ 479, 369, 569, 250, 365, 481, 561, 1029, 1030, 1066, + /* 1850 */ 1012, 1067, 1013, 1070, 363, 973, 887, 883, 881, 1422, + /* 1860 */ 367, 975, 540, 1843, 1631, 1718, 398, 979, 977, 981, + /* 1870 */ 983, 252, 426, 422, 420, 424, 371, 418, 641, 251, + /* 1880 */ 361, 885, 1497, 1471, 1463, 1494, 1468, 1460, 1524, 1484, + /* 1890 */ 1512, 1454, 1482, 1509, 1450, 1554, 1481, 1453, 1483, 1449, + /* 1900 */ 118, 666, 567, 770, 891, 1423, 675, 1845, 624, 889, + /* 1910 */ 1527, 1492, 1518, 1466, 1490, 1515, 1458, 1489, 1465, 1491, + /* 1920 */ 1457, 1709, 1431, 119, 893, 570, 895, 565, 1031, 1032, + /* 1930 */ 1015, 1016, 1080, 1079, 744, 2005, 2006, 901, 1424, 899, + /* 1940 */ 897, 373, 1703, 713, 1704, 1706, 1705, 1707, 120, 563, + /* 1950 */ 723, 1935, 1933, 1934, 1936, 1425, 903, 1821, 905, 121, + /* 1960 */ 985, 538, 253, 547, 1023, 1024, 1000, 1001, 1048, 1047, + /* 1970 */ 746, 2011, 2009, 2010, 2012, 987, 1426, 907, 989, 669, + /* 1980 */ 255, 649, 375, 991, 1692, 715, 1696, 1694, 1693, 660, + /* 1990 */ 1697, 396, 1695, 122, 628, 378, 546, 727, 1943, 1944, + /* 2000 */ 911, 1427, 380, 400, 1826, 382, 629, 909, 733, 1967, + /* 2010 */ 1965, 1966, 1968, 913, 1647, 1653, 1822, 1649, 769, 1655, + /* 2020 */ 1651 }; diff --git a/src/strip-data.c b/src/strip-data.c index 3d50879..f49ef28 100644 --- a/src/strip-data.c +++ b/src/strip-data.c @@ -4,17 +4,17 @@ Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -697,6 +697,7 @@ static struct strip_data data_43 = iso-ir-100 ISO_8859-1:1987 ISO_8859-1 + ISO8859-1 latin1 l1 IBM819 @@ -718,6 +719,7 @@ static struct strip_data data_44 = iso-ir-101 ISO_8859-2:1987 ISO_8859-2 + ISO8859-2 latin2 l2 IBM912 @@ -753,6 +755,7 @@ static struct strip_data data_46 = iso-ir-109 ISO_8859-3:1988 ISO_8859-3 + ISO8859-3 latin3 l3 */ @@ -771,6 +774,7 @@ static struct strip_data data_47 = iso-ir-110 ISO_8859-4:1988 ISO_8859-4 + ISO8859-4 latin4 l4 */ @@ -852,6 +856,7 @@ static struct strip_data data_52 = iso-ir-126 ISO_8859-7:1987 ISO_8859-7 + ISO8859-7 ELOT_928 ECMA-118 greek @@ -872,6 +877,7 @@ static struct strip_data data_53 = iso-ir-127 ISO_8859-6:1987 ISO_8859-6 + ISO8859-6 ECMA-114 ASMO-708 arabic @@ -891,6 +897,7 @@ static struct strip_data data_54 = iso-ir-138 ISO_8859-8:1988 ISO_8859-8 + ISO8859-8 hebrew */ @@ -955,6 +962,7 @@ static struct strip_data data_58 = iso-ir-144 ISO_8859-5:1988 ISO_8859-5 + ISO8859-5 cyrillic */ @@ -1002,6 +1010,7 @@ static struct strip_data data_61 = iso-ir-148 ISO_8859-9:1989 ISO_8859-9 + ISO8859-9 latin5 l5 */ @@ -1109,7 +1118,8 @@ static struct strip_data data_68 = iso-ir-157 ISO_8859-10:1993 ISO_8859-10 - l6 + ISO8859-10 + L6 latin6 */ @@ -1127,6 +1137,7 @@ static struct strip_data data_69 = iso-ir-179a ISO_8859-13:1998 ISO_8859-13 + ISO8859-13 latin7 iso-baltic l7 @@ -1146,6 +1157,7 @@ static struct strip_data data_70 = iso-ir-199 ISO_8859-14:1998 ISO_8859-14 + ISO8859-14 latin8 iso-celtic l8 @@ -1165,6 +1177,7 @@ static struct strip_data data_71 = iso-ir-203 ISO_8859-15:1998 ISO_8859-15 + ISO8859-15 latin9 l9 */ @@ -1360,8 +1373,8 @@ static struct strip_data data_84 = /* IBM256 EBCDIC-INT1 - 256 CP256 + 256 */ static struct strip_data data_85 = @@ -2453,7 +2466,7 @@ static struct strip_data data_157 = bool module_strips (struct recode_outer *outer) { - RECODE_SYMBOL symbol; + RECODE_ALIAS alias; if (!declare_strip_data (outer, &data_0, "ISO_646.basic")) return false; @@ -2806,17 +2819,17 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "us", "ANSI_X3.4-1968")) return false; - if (symbol = declare_alias (outer, "IBM367", "ANSI_X3.4-1968"), !symbol) + if (alias = declare_alias (outer, "IBM367", "ANSI_X3.4-1968"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP367", "ANSI_X3.4-1968"), !symbol) + if (alias = declare_alias (outer, "CP367", "ANSI_X3.4-1968"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "367", "ANSI_X3.4-1968"), !symbol) + if (alias = declare_alias (outer, "367", "ANSI_X3.4-1968"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "iso-ir-8-1", "NATS-SEFI")) return false; @@ -2980,21 +2993,23 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ISO_8859-1", "ISO-8859-1")) return false; + if (!declare_alias (outer, "ISO8859-1", "ISO-8859-1")) + return false; if (!declare_alias (outer, "latin1", "ISO-8859-1")) return false; if (!declare_alias (outer, "l1", "ISO-8859-1")) return false; - if (symbol = declare_alias (outer, "IBM819", "ISO-8859-1"), !symbol) + if (alias = declare_alias (outer, "IBM819", "ISO-8859-1"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP819", "ISO-8859-1"), !symbol) + if (alias = declare_alias (outer, "CP819", "ISO-8859-1"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "819", "ISO-8859-1"), !symbol) + if (alias = declare_alias (outer, "819", "ISO-8859-1"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "iso-ir-101", "ISO-8859-2")) return false; @@ -3002,21 +3017,23 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ISO_8859-2", "ISO-8859-2")) return false; + if (!declare_alias (outer, "ISO8859-2", "ISO-8859-2")) + return false; if (!declare_alias (outer, "latin2", "ISO-8859-2")) return false; if (!declare_alias (outer, "l2", "ISO-8859-2")) return false; - if (symbol = declare_alias (outer, "IBM912", "ISO-8859-2"), !symbol) + if (alias = declare_alias (outer, "IBM912", "ISO-8859-2"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP912", "ISO-8859-2"), !symbol) + if (alias = declare_alias (outer, "CP912", "ISO-8859-2"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "912", "ISO-8859-2"), !symbol) + if (alias = declare_alias (outer, "912", "ISO-8859-2"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "iso-ir-102", "T.61-7bit")) return false; @@ -3026,6 +3043,8 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ISO_8859-3", "ISO-8859-3")) return false; + if (!declare_alias (outer, "ISO8859-3", "ISO-8859-3")) + return false; if (!declare_alias (outer, "latin3", "ISO-8859-3")) return false; if (!declare_alias (outer, "l3", "ISO-8859-3")) @@ -3036,6 +3055,8 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ISO_8859-4", "ISO-8859-4")) return false; + if (!declare_alias (outer, "ISO8859-4", "ISO-8859-4")) + return false; if (!declare_alias (outer, "latin4", "ISO-8859-4")) return false; if (!declare_alias (outer, "l4", "ISO-8859-4")) @@ -3068,6 +3089,8 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ISO_8859-7", "ISO-8859-7")) return false; + if (!declare_alias (outer, "ISO8859-7", "ISO-8859-7")) + return false; if (!declare_alias (outer, "ELOT_928", "ISO-8859-7")) return false; if (!declare_alias (outer, "ECMA-118", "ISO-8859-7")) @@ -3082,6 +3105,8 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ISO_8859-6", "ISO-8859-6")) return false; + if (!declare_alias (outer, "ISO8859-6", "ISO-8859-6")) + return false; if (!declare_alias (outer, "ECMA-114", "ISO-8859-6")) return false; if (!declare_alias (outer, "ASMO-708", "ISO-8859-6")) @@ -3094,6 +3119,8 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ISO_8859-8", "ISO-8859-8")) return false; + if (!declare_alias (outer, "ISO8859-8", "ISO-8859-8")) + return false; if (!declare_alias (outer, "hebrew", "ISO-8859-8")) return false; if (!declare_alias (outer, "iso-ir-139", "CSN_369103")) @@ -3118,6 +3145,8 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ISO_8859-5", "ISO-8859-5")) return false; + if (!declare_alias (outer, "ISO8859-5", "ISO-8859-5")) + return false; if (!declare_alias (outer, "cyrillic", "ISO-8859-5")) return false; if (!declare_alias (outer, "iso-ir-146", "JUS_I.B1.003-serb")) @@ -3134,6 +3163,8 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ISO_8859-9", "ISO-8859-9")) return false; + if (!declare_alias (outer, "ISO8859-9", "ISO-8859-9")) + return false; if (!declare_alias (outer, "latin5", "ISO-8859-9")) return false; if (!declare_alias (outer, "l5", "ISO-8859-9")) @@ -3166,7 +3197,9 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ISO_8859-10", "ISO-8859-10")) return false; - if (!declare_alias (outer, "l6", "ISO-8859-10")) + if (!declare_alias (outer, "ISO8859-10", "ISO-8859-10")) + return false; + if (!declare_alias (outer, "L6", "ISO-8859-10")) return false; if (!declare_alias (outer, "latin6", "ISO-8859-10")) return false; @@ -3176,6 +3209,8 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ISO_8859-13", "ISO-8859-13")) return false; + if (!declare_alias (outer, "ISO8859-13", "ISO-8859-13")) + return false; if (!declare_alias (outer, "latin7", "ISO-8859-13")) return false; if (!declare_alias (outer, "iso-baltic", "ISO-8859-13")) @@ -3188,6 +3223,8 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ISO_8859-14", "ISO-8859-14")) return false; + if (!declare_alias (outer, "ISO8859-14", "ISO-8859-14")) + return false; if (!declare_alias (outer, "latin8", "ISO-8859-14")) return false; if (!declare_alias (outer, "iso-celtic", "ISO-8859-14")) @@ -3200,6 +3237,8 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ISO_8859-15", "ISO-8859-15")) return false; + if (!declare_alias (outer, "ISO8859-15", "ISO-8859-15")) + return false; if (!declare_alias (outer, "latin9", "ISO-8859-15")) return false; if (!declare_alias (outer, "l9", "ISO-8859-15")) @@ -3230,25 +3269,25 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "next", "NeXTSTEP")) return false; - if (symbol = declare_alias (outer, "macintosh", "macintosh"), !symbol) + if (alias = declare_alias (outer, "macintosh", "macintosh"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->cr_surface)) + if (!declare_implied_surface (outer, alias, outer->cr_surface)) return false; - if (symbol = declare_alias (outer, "mac", "macintosh"), !symbol) + if (alias = declare_alias (outer, "mac", "macintosh"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->cr_surface)) + if (!declare_implied_surface (outer, alias, outer->cr_surface)) return false; - if (symbol = declare_alias (outer, "IBM037", "IBM037"), !symbol) + if (alias = declare_alias (outer, "IBM037", "IBM037"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP037", "IBM037"), !symbol) + if (alias = declare_alias (outer, "CP037", "IBM037"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "037", "IBM037"), !symbol) + if (alias = declare_alias (outer, "037", "IBM037"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-us", "IBM037")) return false; @@ -3258,247 +3297,247 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ebcdic-cp-nl", "IBM037")) return false; - if (symbol = declare_alias (outer, "IBM038", "IBM038"), !symbol) + if (alias = declare_alias (outer, "IBM038", "IBM038"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-INT", "IBM038")) return false; - if (symbol = declare_alias (outer, "CP038", "IBM038"), !symbol) + if (alias = declare_alias (outer, "CP038", "IBM038"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "038", "IBM038"), !symbol) + if (alias = declare_alias (outer, "038", "IBM038"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM256", "IBM256"), !symbol) + if (alias = declare_alias (outer, "IBM256", "IBM256"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-INT1", "IBM256")) return false; - if (symbol = declare_alias (outer, "256", "IBM256"), !symbol) + if (alias = declare_alias (outer, "CP256", "IBM256"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP256", "IBM256"), !symbol) + if (alias = declare_alias (outer, "256", "IBM256"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM273", "IBM273"), !symbol) + if (alias = declare_alias (outer, "IBM273", "IBM273"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP273", "IBM273"), !symbol) + if (alias = declare_alias (outer, "CP273", "IBM273"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "273", "IBM273"), !symbol) + if (alias = declare_alias (outer, "273", "IBM273"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM274", "IBM274"), !symbol) + if (alias = declare_alias (outer, "IBM274", "IBM274"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-BE", "IBM274")) return false; - if (symbol = declare_alias (outer, "CP274", "IBM274"), !symbol) + if (alias = declare_alias (outer, "CP274", "IBM274"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "274", "IBM274"), !symbol) + if (alias = declare_alias (outer, "274", "IBM274"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM275", "IBM275"), !symbol) + if (alias = declare_alias (outer, "IBM275", "IBM275"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-BR", "IBM275")) return false; - if (symbol = declare_alias (outer, "CP275", "IBM275"), !symbol) + if (alias = declare_alias (outer, "CP275", "IBM275"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "275", "IBM275"), !symbol) + if (alias = declare_alias (outer, "275", "IBM275"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM277", "IBM277"), !symbol) + if (alias = declare_alias (outer, "IBM277", "IBM277"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-CP-DK", "IBM277")) return false; if (!declare_alias (outer, "EBCDIC-CP-NO", "IBM277")) return false; - if (symbol = declare_alias (outer, "IBM278", "IBM278"), !symbol) + if (alias = declare_alias (outer, "IBM278", "IBM278"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP278", "IBM278"), !symbol) + if (alias = declare_alias (outer, "CP278", "IBM278"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "278", "IBM278"), !symbol) + if (alias = declare_alias (outer, "278", "IBM278"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-fi", "IBM278")) return false; if (!declare_alias (outer, "ebcdic-cp-se", "IBM278")) return false; - if (symbol = declare_alias (outer, "IBM280", "IBM280"), !symbol) + if (alias = declare_alias (outer, "IBM280", "IBM280"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP280", "IBM280"), !symbol) + if (alias = declare_alias (outer, "CP280", "IBM280"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "280", "IBM280"), !symbol) + if (alias = declare_alias (outer, "280", "IBM280"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-it", "IBM280")) return false; - if (symbol = declare_alias (outer, "IBM281", "IBM281"), !symbol) + if (alias = declare_alias (outer, "IBM281", "IBM281"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-JP-E", "IBM281")) return false; - if (symbol = declare_alias (outer, "CP281", "IBM281"), !symbol) + if (alias = declare_alias (outer, "CP281", "IBM281"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "281", "IBM281"), !symbol) + if (alias = declare_alias (outer, "281", "IBM281"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM284", "IBM284"), !symbol) + if (alias = declare_alias (outer, "IBM284", "IBM284"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP284", "IBM284"), !symbol) + if (alias = declare_alias (outer, "CP284", "IBM284"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "284", "IBM284"), !symbol) + if (alias = declare_alias (outer, "284", "IBM284"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-es", "IBM284")) return false; - if (symbol = declare_alias (outer, "IBM285", "IBM285"), !symbol) + if (alias = declare_alias (outer, "IBM285", "IBM285"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP285", "IBM285"), !symbol) + if (alias = declare_alias (outer, "CP285", "IBM285"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "285", "IBM285"), !symbol) + if (alias = declare_alias (outer, "285", "IBM285"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-gb", "IBM285")) return false; - if (symbol = declare_alias (outer, "IBM290", "IBM290"), !symbol) + if (alias = declare_alias (outer, "IBM290", "IBM290"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP290", "IBM290"), !symbol) + if (alias = declare_alias (outer, "CP290", "IBM290"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "290", "IBM290"), !symbol) + if (alias = declare_alias (outer, "290", "IBM290"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-JP-kana", "IBM290")) return false; - if (symbol = declare_alias (outer, "IBM297", "IBM297"), !symbol) + if (alias = declare_alias (outer, "IBM297", "IBM297"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP297", "IBM297"), !symbol) + if (alias = declare_alias (outer, "CP297", "IBM297"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "297", "IBM297"), !symbol) + if (alias = declare_alias (outer, "297", "IBM297"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-fr", "IBM297")) return false; - if (symbol = declare_alias (outer, "IBM420", "IBM420"), !symbol) + if (alias = declare_alias (outer, "IBM420", "IBM420"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP420", "IBM420"), !symbol) + if (alias = declare_alias (outer, "CP420", "IBM420"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "420", "IBM420"), !symbol) + if (alias = declare_alias (outer, "420", "IBM420"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-ar1", "IBM420")) return false; - if (symbol = declare_alias (outer, "IBM423", "IBM423"), !symbol) + if (alias = declare_alias (outer, "IBM423", "IBM423"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP423", "IBM423"), !symbol) + if (alias = declare_alias (outer, "CP423", "IBM423"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "423", "IBM423"), !symbol) + if (alias = declare_alias (outer, "423", "IBM423"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-gr", "IBM423")) return false; - if (symbol = declare_alias (outer, "IBM424", "IBM424"), !symbol) + if (alias = declare_alias (outer, "IBM424", "IBM424"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP424", "IBM424"), !symbol) + if (alias = declare_alias (outer, "CP424", "IBM424"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "424", "IBM424"), !symbol) + if (alias = declare_alias (outer, "424", "IBM424"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-he", "IBM424")) return false; - if (symbol = declare_alias (outer, "IBM437", "IBM437"), !symbol) + if (alias = declare_alias (outer, "IBM437", "IBM437"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP437", "IBM437"), !symbol) + if (alias = declare_alias (outer, "CP437", "IBM437"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "437", "IBM437"), !symbol) + if (alias = declare_alias (outer, "437", "IBM437"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM500", "IBM500"), !symbol) + if (alias = declare_alias (outer, "IBM500", "IBM500"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP500", "IBM500"), !symbol) + if (alias = declare_alias (outer, "CP500", "IBM500"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "500", "IBM500"), !symbol) + if (alias = declare_alias (outer, "500", "IBM500"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "500V1", "IBM500")) return false; @@ -3506,425 +3545,425 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "ebcdic-cp-ch", "IBM500")) return false; - if (symbol = declare_alias (outer, "IBM850", "IBM850"), !symbol) + if (alias = declare_alias (outer, "IBM850", "IBM850"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP850", "IBM850"), !symbol) + if (alias = declare_alias (outer, "CP850", "IBM850"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "850", "IBM850"), !symbol) + if (alias = declare_alias (outer, "850", "IBM850"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM851", "IBM851"), !symbol) + if (alias = declare_alias (outer, "IBM851", "IBM851"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP851", "IBM851"), !symbol) + if (alias = declare_alias (outer, "CP851", "IBM851"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "851", "IBM851"), !symbol) + if (alias = declare_alias (outer, "851", "IBM851"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM852", "IBM852"), !symbol) + if (alias = declare_alias (outer, "IBM852", "IBM852"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP852", "IBM852"), !symbol) + if (alias = declare_alias (outer, "CP852", "IBM852"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "852", "IBM852"), !symbol) + if (alias = declare_alias (outer, "852", "IBM852"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "pcl2", "IBM852")) return false; if (!declare_alias (outer, "pclatin2", "IBM852")) return false; - if (symbol = declare_alias (outer, "IBM855", "IBM855"), !symbol) + if (alias = declare_alias (outer, "IBM855", "IBM855"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP855", "IBM855"), !symbol) + if (alias = declare_alias (outer, "CP855", "IBM855"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "855", "IBM855"), !symbol) + if (alias = declare_alias (outer, "855", "IBM855"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM857", "IBM857"), !symbol) + if (alias = declare_alias (outer, "IBM857", "IBM857"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP857", "IBM857"), !symbol) + if (alias = declare_alias (outer, "CP857", "IBM857"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "857", "IBM857"), !symbol) + if (alias = declare_alias (outer, "857", "IBM857"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM860", "IBM860"), !symbol) + if (alias = declare_alias (outer, "IBM860", "IBM860"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP860", "IBM860"), !symbol) + if (alias = declare_alias (outer, "CP860", "IBM860"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "860", "IBM860"), !symbol) + if (alias = declare_alias (outer, "860", "IBM860"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM861", "IBM861"), !symbol) + if (alias = declare_alias (outer, "IBM861", "IBM861"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP861", "IBM861"), !symbol) + if (alias = declare_alias (outer, "CP861", "IBM861"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "861", "IBM861"), !symbol) + if (alias = declare_alias (outer, "861", "IBM861"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "cp-is", "IBM861")) return false; - if (symbol = declare_alias (outer, "IBM862", "IBM862"), !symbol) + if (alias = declare_alias (outer, "IBM862", "IBM862"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP862", "IBM862"), !symbol) + if (alias = declare_alias (outer, "CP862", "IBM862"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "862", "IBM862"), !symbol) + if (alias = declare_alias (outer, "862", "IBM862"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM863", "IBM863"), !symbol) + if (alias = declare_alias (outer, "IBM863", "IBM863"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP863", "IBM863"), !symbol) + if (alias = declare_alias (outer, "CP863", "IBM863"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "863", "IBM863"), !symbol) + if (alias = declare_alias (outer, "863", "IBM863"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM864", "IBM864"), !symbol) + if (alias = declare_alias (outer, "IBM864", "IBM864"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP864", "IBM864"), !symbol) + if (alias = declare_alias (outer, "CP864", "IBM864"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "864", "IBM864"), !symbol) + if (alias = declare_alias (outer, "864", "IBM864"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM865", "IBM865"), !symbol) + if (alias = declare_alias (outer, "IBM865", "IBM865"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP865", "IBM865"), !symbol) + if (alias = declare_alias (outer, "CP865", "IBM865"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "865", "IBM865"), !symbol) + if (alias = declare_alias (outer, "865", "IBM865"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM868", "IBM868"), !symbol) + if (alias = declare_alias (outer, "IBM868", "IBM868"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP868", "IBM868"), !symbol) + if (alias = declare_alias (outer, "CP868", "IBM868"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "868", "IBM868"), !symbol) + if (alias = declare_alias (outer, "868", "IBM868"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "cp-ar", "IBM868")) return false; - if (symbol = declare_alias (outer, "IBM869", "IBM869"), !symbol) + if (alias = declare_alias (outer, "IBM869", "IBM869"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP869", "IBM869"), !symbol) + if (alias = declare_alias (outer, "CP869", "IBM869"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "869", "IBM869"), !symbol) + if (alias = declare_alias (outer, "869", "IBM869"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "cp-gr", "IBM869")) return false; - if (symbol = declare_alias (outer, "IBM870", "IBM870"), !symbol) + if (alias = declare_alias (outer, "IBM870", "IBM870"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP870", "IBM870"), !symbol) + if (alias = declare_alias (outer, "CP870", "IBM870"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "870", "IBM870"), !symbol) + if (alias = declare_alias (outer, "870", "IBM870"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-roece", "IBM870")) return false; if (!declare_alias (outer, "ebcdic-cp-yu", "IBM870")) return false; - if (symbol = declare_alias (outer, "IBM871", "IBM871"), !symbol) + if (alias = declare_alias (outer, "IBM871", "IBM871"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP871", "IBM871"), !symbol) + if (alias = declare_alias (outer, "CP871", "IBM871"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "871", "IBM871"), !symbol) + if (alias = declare_alias (outer, "871", "IBM871"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-is", "IBM871")) return false; - if (symbol = declare_alias (outer, "IBM875", "IBM875"), !symbol) + if (alias = declare_alias (outer, "IBM875", "IBM875"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP875", "IBM875"), !symbol) + if (alias = declare_alias (outer, "CP875", "IBM875"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "875", "IBM875"), !symbol) + if (alias = declare_alias (outer, "875", "IBM875"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-Greek", "IBM875")) return false; - if (symbol = declare_alias (outer, "IBM880", "IBM880"), !symbol) + if (alias = declare_alias (outer, "IBM880", "IBM880"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP880", "IBM880"), !symbol) + if (alias = declare_alias (outer, "CP880", "IBM880"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "880", "IBM880"), !symbol) + if (alias = declare_alias (outer, "880", "IBM880"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-Cyrillic", "IBM880")) return false; - if (symbol = declare_alias (outer, "IBM891", "IBM891"), !symbol) + if (alias = declare_alias (outer, "IBM891", "IBM891"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP891", "IBM891"), !symbol) + if (alias = declare_alias (outer, "CP891", "IBM891"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "891", "IBM891"), !symbol) + if (alias = declare_alias (outer, "891", "IBM891"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM903", "IBM903"), !symbol) + if (alias = declare_alias (outer, "IBM903", "IBM903"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP903", "IBM903"), !symbol) + if (alias = declare_alias (outer, "CP903", "IBM903"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "903", "IBM903"), !symbol) + if (alias = declare_alias (outer, "903", "IBM903"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM904", "IBM904"), !symbol) + if (alias = declare_alias (outer, "IBM904", "IBM904"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP904", "IBM904"), !symbol) + if (alias = declare_alias (outer, "CP904", "IBM904"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "904", "IBM904"), !symbol) + if (alias = declare_alias (outer, "904", "IBM904"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM905", "IBM905"), !symbol) + if (alias = declare_alias (outer, "IBM905", "IBM905"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP905", "IBM905"), !symbol) + if (alias = declare_alias (outer, "CP905", "IBM905"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "905", "IBM905"), !symbol) + if (alias = declare_alias (outer, "905", "IBM905"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-tr", "IBM905")) return false; - if (symbol = declare_alias (outer, "IBM918", "IBM918"), !symbol) + if (alias = declare_alias (outer, "IBM918", "IBM918"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP918", "IBM918"), !symbol) + if (alias = declare_alias (outer, "CP918", "IBM918"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "918", "IBM918"), !symbol) + if (alias = declare_alias (outer, "918", "IBM918"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-ar2", "IBM918")) return false; - if (symbol = declare_alias (outer, "IBM1004", "IBM1004"), !symbol) + if (alias = declare_alias (outer, "IBM1004", "IBM1004"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP1004", "IBM1004"), !symbol) + if (alias = declare_alias (outer, "CP1004", "IBM1004"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "1004", "IBM1004"), !symbol) + if (alias = declare_alias (outer, "1004", "IBM1004"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "os2latin1", "IBM1004")) return false; - if (symbol = declare_alias (outer, "IBM1026", "IBM1026"), !symbol) + if (alias = declare_alias (outer, "IBM1026", "IBM1026"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP1026", "IBM1026"), !symbol) + if (alias = declare_alias (outer, "CP1026", "IBM1026"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "1026", "IBM1026"), !symbol) + if (alias = declare_alias (outer, "1026", "IBM1026"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "IBM1047", "IBM1047"), !symbol) + if (alias = declare_alias (outer, "IBM1047", "IBM1047"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP1047", "IBM1047"), !symbol) + if (alias = declare_alias (outer, "CP1047", "IBM1047"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "1047", "IBM1047"), !symbol) + if (alias = declare_alias (outer, "1047", "IBM1047"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; - if (symbol = declare_alias (outer, "CP1250", "CP1250"), !symbol) + if (alias = declare_alias (outer, "CP1250", "CP1250"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-ee", "CP1250")) return false; - if (symbol = declare_alias (outer, "1250", "CP1250"), !symbol) + if (alias = declare_alias (outer, "1250", "CP1250"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1250", "CP1250")) return false; - if (symbol = declare_alias (outer, "CP1251", "CP1251"), !symbol) + if (alias = declare_alias (outer, "CP1251", "CP1251"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-cyrl", "CP1251")) return false; - if (symbol = declare_alias (outer, "1251", "CP1251"), !symbol) + if (alias = declare_alias (outer, "1251", "CP1251"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1251", "CP1251")) return false; - if (symbol = declare_alias (outer, "CP1252", "CP1252"), !symbol) + if (alias = declare_alias (outer, "CP1252", "CP1252"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-ansi", "CP1252")) return false; - if (symbol = declare_alias (outer, "1252", "CP1252"), !symbol) + if (alias = declare_alias (outer, "1252", "CP1252"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1252", "CP1252")) return false; - if (symbol = declare_alias (outer, "CP1253", "CP1253"), !symbol) + if (alias = declare_alias (outer, "CP1253", "CP1253"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-greek", "CP1253")) return false; - if (symbol = declare_alias (outer, "1253", "CP1253"), !symbol) + if (alias = declare_alias (outer, "1253", "CP1253"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1253", "CP1253")) return false; - if (symbol = declare_alias (outer, "CP1254", "CP1254"), !symbol) + if (alias = declare_alias (outer, "CP1254", "CP1254"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-turk", "CP1254")) return false; - if (symbol = declare_alias (outer, "1254", "CP1254"), !symbol) + if (alias = declare_alias (outer, "1254", "CP1254"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1254", "CP1254")) return false; - if (symbol = declare_alias (outer, "CP1255", "CP1255"), !symbol) + if (alias = declare_alias (outer, "CP1255", "CP1255"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-hebr", "CP1255")) return false; - if (symbol = declare_alias (outer, "1255", "CP1255"), !symbol) + if (alias = declare_alias (outer, "1255", "CP1255"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1255", "CP1255")) return false; - if (symbol = declare_alias (outer, "CP1256", "CP1256"), !symbol) + if (alias = declare_alias (outer, "CP1256", "CP1256"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-arab", "CP1256")) return false; - if (symbol = declare_alias (outer, "1256", "CP1256"), !symbol) + if (alias = declare_alias (outer, "1256", "CP1256"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1256", "CP1256")) return false; - if (symbol = declare_alias (outer, "CP1257", "CP1257"), !symbol) + if (alias = declare_alias (outer, "CP1257", "CP1257"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "WinBaltRim", "CP1257")) return false; - if (symbol = declare_alias (outer, "1257", "CP1257"), !symbol) + if (alias = declare_alias (outer, "1257", "CP1257"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->crlf_surface)) + if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1257", "CP1257")) return false; @@ -3936,13 +3975,13 @@ module_strips (struct recode_outer *outer) return false; if (!declare_alias (outer, "cp-hu", "CWI")) return false; - if (symbol = declare_alias (outer, "macintosh_ce", "macintosh_ce"), !symbol) + if (alias = declare_alias (outer, "macintosh_ce", "macintosh_ce"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->cr_surface)) + if (!declare_implied_surface (outer, alias, outer->cr_surface)) return false; - if (symbol = declare_alias (outer, "macce", "macintosh_ce"), !symbol) + if (alias = declare_alias (outer, "macce", "macintosh_ce"), !alias) return false; - if (!declare_implied_surface (outer, symbol, outer->cr_surface)) + if (!declare_implied_surface (outer, alias, outer->cr_surface)) return false; return true; diff --git a/src/strip-pool.c b/src/strip-pool.c index 1eb352f..ca5d503 100644 --- a/src/strip-pool.c +++ b/src/strip-pool.c @@ -4,17 +4,17 @@ Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/task.c b/src/task.c index 09c4d3f..560df04 100644 --- a/src/task.c +++ b/src/task.c @@ -1,24 +1,70 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 92, 93, 94, 96, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990,92,93,94,96,97,98,99,00 Free Software Foundation, Inc. Contributed by François Pinard , 1990. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" +#if HAVE_UNISTD_H +# include +#endif + +#include + +#include +/* Bruno suggests the following, from GNU make 3.79.0.2 in `job.c'. He also + remarks that on Linux, WEXITSTATUS are bits 15..8 and WTERMSIG are bits + 7..0, while BeOS uses the contrary. */ +#if HAVE_UNION_WAIT +# define WAIT_T union wait +# ifndef WTERMSIG +# define WTERMSIG(x) ((x).w_termsig) +# endif +# ifndef WCOREDUMP +# define WCOREDUMP(x) ((x).w_coredump) +# endif +# ifndef WEXITSTATUS +# define WEXITSTATUS(x) ((x).w_retcode) +# endif +# ifndef WIFSIGNALED +# define WIFSIGNALED(x) (WTERMSIG(x) != 0) +# endif +# ifndef WIFEXITED +# define WIFEXITED(x) (WTERMSIG(x) == 0) +# endif +#else +# define WAIT_T int +# ifndef WTERMSIG +# define WTERMSIG(x) ((x) & 0x7f) +# endif +# ifndef WCOREDUMP +# define WCOREDUMP(x) ((x) & 0x80) +# endif +# ifndef WEXITSTATUS +# define WEXITSTATUS(x) (((x) >> 8) & 0xff) +# endif +# ifndef WIFSIGNALED +# define WIFSIGNALED(x) (WTERMSIG (x) != 0) +# endif +# ifndef WIFEXITED +# define WIFEXITED(x) (WTERMSIG (x) == 0) +# endif +#endif + /* Buffer size used in transform_mere_copy. */ #define BUFFER_SIZE (16 * 1024) @@ -89,13 +135,13 @@ put_byte_helper (int byte, RECODE_SUBTASK subtask) `------------------------------------------------------------------------*/ bool -recode_if_nogo (enum recode_error error, RECODE_SUBTASK subtask) +recode_if_nogo (enum recode_error new_error, RECODE_SUBTASK subtask) { RECODE_TASK task = subtask->task; - if (error > task->error_so_far) + if (new_error > task->error_so_far) { - task->error_so_far = error; + task->error_so_far = new_error; task->error_at_step = subtask->step; } return task->error_so_far >= task->abort_level; @@ -247,14 +293,16 @@ perform_memory_sequence (RECODE_TASK task) subtask->input = task->input; if (subtask->input.name) - if (!*subtask->input.name) - subtask->input.file = stdin; - else if (subtask->input.file = fopen (subtask->input.name, "r"), - subtask->input.file == NULL) - { - recode_perror (NULL, "fopen (%s)", subtask->input.name); - return false; - } + { + if (!*subtask->input.name) + subtask->input.file = stdin; + else if (subtask->input.file = fopen (subtask->input.name, "r"), + subtask->input.file == NULL) + { + recode_perror (NULL, "fopen (%s)", subtask->input.name); + return false; + } + } } else { @@ -275,14 +323,17 @@ perform_memory_sequence (RECODE_TASK task) subtask->output = task->output; if (subtask->output.name) - if (!*subtask->output.name) - subtask->output.file = stdout; - else if (subtask->output.file = fopen (subtask->output.name, "w"), - subtask->output.file == NULL) - { - recode_perror (NULL, "fopen (%s)", subtask->output.name); - return false; - } + { + if (!*subtask->output.name) + subtask->output.file = stdout; + else if (subtask->output.file = fopen (subtask->output.name, + "w"), + subtask->output.file == NULL) + { + recode_perror (NULL, "fopen (%s)", subtask->output.name); + return false; + } + } } /* Execute one recoding step. */ @@ -441,14 +492,16 @@ perform_pass_sequence (RECODE_TASK task) subtask->input = task->input; if (subtask->input.name) - if (!*subtask->input.name) - subtask->input.file = stdin; - else if (subtask->input.file = fopen (subtask->input.name, "r"), - subtask->input.file == NULL) - { - recode_perror (NULL, "fopen (%s)", subtask->input.name); - return false; - } + { + if (!*subtask->input.name) + subtask->input.file = stdin; + else if (subtask->input.file = fopen (subtask->input.name, "r"), + subtask->input.file == NULL) + { + recode_perror (NULL, "fopen (%s)", subtask->input.name); + return false; + } + } } else { @@ -499,14 +552,17 @@ perform_pass_sequence (RECODE_TASK task) subtask->output = task->output; if (subtask->output.name) - if (!*subtask->output.name) - subtask->output.file = stdout; - else if (subtask->output.file = fopen (subtask->output.name, "w"), - subtask->output.file == NULL) - { - recode_perror (NULL, "fopen (%s)", subtask->output.name); - return false; - } + { + if (!*subtask->output.name) + subtask->output.file = stdout; + else if (subtask->output.file = fopen (subtask->output.name, + "w"), + subtask->output.file == NULL) + { + recode_perror (NULL, "fopen (%s)", subtask->output.name); + return false; + } + } } /* Execute one recoding step. */ @@ -644,7 +700,7 @@ perform_pipe_sequence (RECODE_TASK task) int pipe_pair[2]; /* pair of file descriptors for a pipe */ int child_process; /* child process number, zero if child */ - int wait_status; /* status returned by wait() */ + WAIT_T wait_status; /* status returned by wait() */ memset (subtask, 0, sizeof (struct recode_subtask)); subtask->task = task; @@ -755,11 +811,15 @@ perform_pipe_sequence (RECODE_TASK task) output file contents, but also to reduce the number of zombie processes in case the user recodes many files at once. */ - /* FIXME: Maybe I should rather use and the macros? */ while (wait (&wait_status) > 0) { /* Diagnose and abort on any abnormally terminating child. */ +#if 0 /* FIXME: Bruno would prefer this. */ + if (!(WIFEXITED (wait_status) + || (WIFSIGNALED (wait_status) + && WTERMSIG (wait_status) == SIGPIPE))) +#endif if ((wait_status & MASK (8)) != 0 && (wait_status & MASK (8)) != SIGPIPE) { @@ -770,7 +830,9 @@ perform_pipe_sequence (RECODE_TASK task) /* Check for a nonzero exit from the terminating child. */ - if (wait_status & MASK (16)) + if (WIFEXITED (wait_status) + ? WEXITSTATUS (wait_status) != 0 + : WTERMSIG (wait_status) != 0) /* FIXME: It is not very clear what happened in sub-processes. */ if (task->error_so_far < task->fail_level) { @@ -806,7 +868,7 @@ perform_pipe_sequence (RECODE_TASK task) int pipe_pair[2]; /* pair of file descriptors for a pipe */ int child_process; /* child process number, zero if child */ - int wait_status; /* status returned by wait() */ + WAIT_T wait_status; /* status returned by wait() */ memset (subtask, 0, sizeof (struct recode_subtask)); subtask->task = task; @@ -933,8 +995,9 @@ perform_pipe_sequence (RECODE_TASK task) { /* Diagnose and abort on any abnormally terminating child. */ - if ((wait_status & MASK (8)) != 0 - && (wait_status & MASK (8)) != SIGPIPE) + if (!(WIFEXITED (wait_status) + || (WIFSIGNALED (wait_status) + && WTERMSIG (wait_status) == SIGPIPE))) { recode_error (outer, _("Child process wait status is 0x%0.2x"), wait_status); @@ -943,7 +1006,9 @@ perform_pipe_sequence (RECODE_TASK task) /* Check for a nonzero exit from the terminating child. */ - if (wait_status & MASK (16)) + if (WIFEXITED (wait_status) + ? WEXITSTATUS (wait_status) != 0 + : WTERMSIG (wait_status) != 0) /* FIXME: It is not very clear what happened in sub-processes. */ if (task->error_so_far < task->fail_level) { @@ -1100,24 +1165,28 @@ recode_perform_task (RECODE_TASK task) subtask->output = task->output; if (subtask->input.name) - if (!*subtask->input.name) - subtask->input.file = stdin; - else if (subtask->input.file = fopen (subtask->input.name, "r"), - subtask->input.file == NULL) - { - recode_perror (NULL, "fopen (%s)", subtask->input.name); - return false; - } + { + if (!*subtask->input.name) + subtask->input.file = stdin; + else if (subtask->input.file = fopen (subtask->input.name, "r"), + subtask->input.file == NULL) + { + recode_perror (NULL, "fopen (%s)", subtask->input.name); + return false; + } + } if (subtask->output.name) - if (!*subtask->output.name) - subtask->output.file = stdout; - else if (subtask->output.file = fopen (subtask->output.name, "w"), - subtask->output.file == NULL) - { - recode_perror (NULL, "fopen (%s)", subtask->output.name); - return false; - } + { + if (!*subtask->output.name) + subtask->output.file = stdout; + else if (subtask->output.file = fopen (subtask->output.name, "w"), + subtask->output.file == NULL) + { + recode_perror (NULL, "fopen (%s)", subtask->output.name); + return false; + } + } if (request->sequence_length == 1) { diff --git a/src/debug.c b/src/testdump.c similarity index 76% rename from src/debug.c rename to src/testdump.c index eb9c308..116a9f2 100644 --- a/src/debug.c +++ b/src/testdump.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1996, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1997. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -149,10 +149,8 @@ produce_count (RECODE_SUBTASK subtask) { RECODE_OUTER outer = subtask->task->request->outer; Hash_table *table; /* hash table for UCS-2 characters */ - unsigned character; /* current character being counted */ size_t size; /* number of different characters */ struct ucs2_to_count **array; /* array into hash table items */ - struct ucs2_to_count **cursor; table = hash_initialize (0, NULL, ucs2_to_count_hash, ucs2_to_count_compare, NULL); @@ -161,25 +159,29 @@ produce_count (RECODE_SUBTASK subtask) /* Count characters. */ - while (get_ucs2 (&character, subtask)) - { - struct ucs2_to_count lookup; - struct ucs2_to_count *entry; + { + unsigned character; /* current character being counted */ - lookup.code = character; - entry = hash_lookup (table, &lookup); - if (entry) - entry->count++; - else - { - if (!ALLOC (entry, 1, struct ucs2_to_count)) - return false; - entry->code = character; - entry->count = 1; - if (!hash_insert (table, entry)) - return false; - } - } + while (get_ucs2 (&character, subtask)) + { + struct ucs2_to_count lookup; + struct ucs2_to_count *entry; + + lookup.code = character; + entry = hash_lookup (table, &lookup); + if (entry) + entry->count++; + else + { + if (!ALLOC (entry, 1, struct ucs2_to_count)) + return false; + entry->code = character; + entry->count = 1; + if (!hash_insert (table, entry)) + return false; + } + } + } /* Sort results. */ @@ -193,6 +195,8 @@ produce_count (RECODE_SUBTASK subtask) /* Produce the report. */ + /* FIXME: Produce it column-wise. (See transp.c). */ + { const unsigned non_count_width = 12; char buffer[50]; @@ -264,56 +268,63 @@ static bool produce_full_dump (RECODE_SUBTASK subtask) { unsigned character; /* character to dump */ - const char *charname; /* charname for code */ - bool french; /* if output should be in French */ - const char *string; /* environment value */ - - /* Decide if we prefer French or English output. */ - - french = false; - string = getenv ("LANGUAGE"); - if (string && string[0] == 'f' && string[1] == 'r') - french = true; - else - { - string = getenv ("LANG"); - if (string && string[0] == 'f' && string[1] == 'r') - french = true; - } /* Dump all characters. */ - fputs (_("UCS2 Mne Description\n\n"), stdout); - - while (get_ucs2 (&character, subtask)) + if (get_ucs2 (&character, subtask)) { - const char *mnemonic = ucs2_to_rfc1345 (character); + const char *charname; /* charname for code */ + bool french; /* if output should be in French */ + const char *string; /* environment value */ - printf ("%.4X", character); - if (mnemonic) - printf (" %-3s", mnemonic); - else - fputs (" ", stdout); + /* Decide if we prefer French or English output. */ - if (french) - { - charname = ucs2_to_french_charname (character); - if (!charname) - charname = ucs2_to_charname (character); - } + french = false; + string = getenv ("LANGUAGE"); + if (string && string[0] == 'f' && string[1] == 'r') + french = true; else { - charname = ucs2_to_charname (character); - if (!charname) - charname = ucs2_to_french_charname (character); + string = getenv ("LANG"); + if (string && string[0] == 'f' && string[1] == 'r') + french = true; } - if (charname) + fputs (_("UCS2 Mne Description\n\n"), stdout); + + while (1) { - fputs (" ", stdout); - fputs (charname, stdout); + const char *mnemonic = ucs2_to_rfc1345 (character); + + printf ("%.4X", character); + if (mnemonic) + printf (" %-3s", mnemonic); + else + fputs (" ", stdout); + + if (french) + { + charname = ucs2_to_french_charname (character); + if (!charname) + charname = ucs2_to_charname (character); + } + else + { + charname = ucs2_to_charname (character); + if (!charname) + charname = ucs2_to_french_charname (character); + } + + if (charname) + { + fputs (" ", stdout); + fputs (charname, stdout); + } + printf ("\n"); + + if (!get_ucs2 (&character, subtask)) + break; } - printf ("\n"); } SUBTASK_RETURN (subtask); @@ -324,7 +335,7 @@ produce_full_dump (RECODE_SUBTASK subtask) `-----------------------------------------*/ bool -module_debug (RECODE_OUTER outer) +module_testdump (RECODE_OUTER outer) { /* Test surfaces. */ diff --git a/src/texinfo.c b/src/texinfo.c new file mode 100644 index 0000000..d3f926d --- /dev/null +++ b/src/texinfo.c @@ -0,0 +1,84 @@ +/* Conversion of files between different charsets and surfaces. + Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. + Contributed by François Pinard , 1988. + + This library is free software; you can redistribute 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 library is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty + of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the `recode' Library; see the file `COPYING.LIB'. + If not, write to the Free Software Foundation, Inc., 59 Temple Place - + Suite 330, Boston, MA 02111-1307, USA. */ + +#include "common.h" + +static const unsigned short texinfo_data[] = + { + 160, '@', ' ', DONE, + 161, '@', 'e', 'x', 'c', 'l', 'a', 'm', 'd', 'o', 'w', 'n', '{', '}', + DONE, + 171, '`', '`', DONE, + 187, '\'', '\'', DONE, + 191, '@', 'q', 'u', 'e', 's', 't', 'i', 'o', 'n', 'd', 'o', 'w', 'n', + '{', '}', + DONE, + 192, '@', '`', 'A', DONE, + 194, '@', '^', 'A', DONE, + 196, '@', '"', 'A', DONE, + 197, '@', 'A', 'A', '{', '}', DONE, + 199, '@', ',', '{', 'C', '}', DONE, + 200, '@', '`', 'E', DONE, + 201, '@', '\'', 'E', DONE, + 202, '@', '^', 'E', DONE, + 203, '@', '"', 'E', DONE, + 206, '@', '^', 'I', DONE, + 207, '@', '"', 'I', DONE, + 210, '@', '`', 'O', DONE, + 212, '@', '^', 'O', DONE, + 214, '@', '"', 'O', DONE, + 216, '@', 'O', '{', '}', DONE, + 217, '@', '`', 'U', DONE, + 219, '@', '^', 'U', DONE, + 220, '@', '"', 'U', DONE, + 223, '@', 's', 's', '{', '}', DONE, + 224, '@', '`', 'a', DONE, + 226, '@', '^', 'a', DONE, + 228, '@', '"', 'a', DONE, + 229, '@', 'a', 'a', '{', '}', DONE, + 231, '@', ',', '{', 'c', '}', DONE, + 232, '@', '`', 'e', DONE, + 233, '@', '\'', 'e', DONE, + 234, '@', '^', 'e', DONE, + 235, '@', '"', 'e', DONE, + 236, '@', '`', 'i', DONE, + 237, '@', '\'', 'i', DONE, + 238, '@', '^', '{', '@', 'd', 'o', 't', 'l', 'e', 's', 's', '{', 'i', + '}', '}', + DONE, + 239, '@', '"', '{', '@', 'd', 'o', 't', 'l', 'e', 's', 's', '{', 'i', + '}', '}', + DONE, + 242, '@', '`', 'o', DONE, + 244, '@', '^', 'o', DONE, + 246, '@', '"', 'o', DONE, + 249, '@', '`', 'u', DONE, + 251, '@', '^', 'u', DONE, + 252, '@', '"', 'u', DONE, + DONE + }; + +bool +module_texinfo (RECODE_OUTER outer) +{ + return + declare_explode_data (outer, texinfo_data, "Latin-1", "Texinfo") + && declare_alias (outer, "texi", "Texinfo") + && declare_alias (outer, "ti", "Texinfo"); +} diff --git a/src/txtelat1.l b/src/txtelat1.l index 721b1a9..19c0dd0 100644 --- a/src/txtelat1.l +++ b/src/txtelat1.l @@ -1,13 +1,13 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1990, 93, 94, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1989. - The `recode' Library is free software; you can redistribute it and/or + This library 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 of the License, or (at your option) any later version. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. diff --git a/src/ucs.c b/src/ucs.c index 2aea93e..9e817e5 100644 --- a/src/ucs.c +++ b/src/ucs.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1996, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -395,7 +395,7 @@ get_ucs2 (unsigned *value, RECODE_SUBTASK subtask) switch (subtask->task->swap_input) { case RECODE_SWAP_UNDECIDED: - chunk = (MASK (8) & character1) << 8 | MASK (8) & character2; + chunk = ((MASK (8) & character1) << 8) | (MASK (8) & character2); switch (chunk) { case BYTE_ORDER_MARK: @@ -416,7 +416,7 @@ get_ucs2 (unsigned *value, RECODE_SUBTASK subtask) break; case RECODE_SWAP_NO: - chunk = (MASK (8) & character1) << 8 | MASK (8) & character2; + chunk = ((MASK (8) & character1) << 8) | (MASK (8) & character2); switch (chunk) { case BYTE_ORDER_MARK: @@ -435,7 +435,7 @@ get_ucs2 (unsigned *value, RECODE_SUBTASK subtask) break; case RECODE_SWAP_YES: - chunk = (MASK (8) & character2) << 8 | MASK (8) & character1; + chunk = ((MASK (8) & character2) << 8) | (MASK (8) & character1); switch (chunk) { case BYTE_ORDER_MARK: @@ -539,8 +539,8 @@ init_combined_ucs2 (RECODE_STEP step, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { - step->before->charset_type = RECODE_EXPLODE_DATA; - step->before->charset_data = (void *) combining_data; + step->before->data_type = RECODE_EXPLODE_DATA; + step->before->data = (void *) combining_data; return init_explode (step, request, before_options, after_options); } @@ -550,8 +550,8 @@ init_ucs2_combined (RECODE_STEP step, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { - step->after->charset_type = RECODE_EXPLODE_DATA; - step->after->charset_data = (void *) combining_data; + step->after->data_type = RECODE_EXPLODE_DATA; + step->after->data = (void *) combining_data; return init_combine (step, request, before_options, after_options); } diff --git a/src/utf16.c b/src/utf16.c index d167e07..507ce6d 100644 --- a/src/utf16.c +++ b/src/utf16.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1996, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -22,9 +22,7 @@ static bool transform_ucs4_utf16 (RECODE_SUBTASK subtask) { - int character; unsigned value; - unsigned chunk; if (get_ucs4 (&value, subtask)) { @@ -70,46 +68,47 @@ transform_utf16_ucs4 (RECODE_SUBTASK subtask) unsigned value; if (get_ucs2 (&value, subtask)) + { + while (true) + if (value >= 0xD800 && value < 0xE000) + if (value < 0xDC00) + { + unsigned chunk; - while (true) - if (value >= 0xD800 && value < 0xE000) - if (value < 0xDC00) - { - unsigned chunk; + if (!get_ucs2 (&chunk, subtask)) + break; - if (!get_ucs2 (&chunk, subtask)) - break; + if (chunk >= 0xDC00 && chunk < 0xE000) + { + put_ucs4 ((((1 << 16) + ((value - 0xD800) << 10)) + | (chunk - 0xDC00)), + subtask); + if (!get_ucs2 (&value, subtask)) + break; + } + else + { + /* Discard the first chunk if the pair is invalid. */ - if (chunk >= 0xDC00 && chunk < 0xE000) - { - put_ucs4 ((((1 << 16) + ((value - 0xD800) << 10)) - | (chunk - 0xDC00)), - subtask); - if (!get_ucs2 (&value, subtask)) - break; - } - else - { - /* Discard the first chunk if the pair is invalid. */ + RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); + value = chunk; + } + } + else + { + /* Discard a second chunk when presented first. */ - RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); - value = chunk; - } - } + RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); + if (!get_ucs2 (&value, subtask)) + break; + } else { - /* Discard a second chunk when presented first. */ - - RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); + put_ucs4 (value, subtask); if (!get_ucs2 (&value, subtask)) break; } - else - { - put_ucs4 (value, subtask); - if (!get_ucs2 (&value, subtask)) - break; - } + } SUBTASK_RETURN (subtask); } diff --git a/src/utf7.c b/src/utf7.c index b503331..d130fdb 100644 --- a/src/utf7.c +++ b/src/utf7.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1996, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -72,7 +72,6 @@ static char classification[128] = static bool transform_utf16_utf7 (RECODE_SUBTASK subtask) { - int character; unsigned value; if (!get_ucs2 (&value, subtask)) diff --git a/src/utf8.c b/src/utf8.c index ed60331..d427e37 100644 --- a/src/utf8.c +++ b/src/utf8.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1996, 97, 98, 99 Free Software Foundation, Inc. + Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/varia.c b/src/varia.c index 889f593..e827e52 100644 --- a/src/varia.c +++ b/src/varia.c @@ -1,18 +1,18 @@ /* Conversion of files between different charsets and surfaces. - Copyright © 1999 Free Software Foundation, Inc. + Copyright © 1999, 2000 Free Software Foundation, Inc. Contributed by François Pinard , 1993. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --git a/src/vn.c b/src/vn.c index 18c4ec5..91d9d22 100644 --- a/src/vn.c +++ b/src/vn.c @@ -1,18 +1,18 @@ /* Vietnamese charset processing. - Copyright © 1999 Progiciels Bourbeau-Pinard inc. + Copyright © 1999, 2000 Progiciels Bourbeau-Pinard inc. Contributed by François Pinard , 1999. - The `recode' Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License + This library is free software; you can redistribute 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. - The `recode' Library is distributed in the hope that it will be + This library is distributed in the hope that 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. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public + You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -451,4 +451,5 @@ module_vietnamese (RECODE_OUTER outer) return false; if (!declare_explode_data (outer, viscii_vni_data, "VISCII", "VNI")) return false; + return true; } diff --git a/tests/ChangeLog b/tests/ChangeLog index e02bbc1..8485283 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,7 +1,26 @@ +2000-06-28 François Pinard + + * testdump.m4: New name for debug.m4. + * suite.m4: Adjusted. + * Makefile.am (SUITE): Adjusted. + + * lists.m4: Use At instead of @ in expected results. + * names.m4: Adjused for new libiconv. + +2000-04-26 François Pinard + + * bigauto.py: New file. + * bigauto.sh, bigauto.pl: Deleted. + * Makefile.am: Adjusted. + +2000-02-05 François Pinard + + * names.m4: Adjusted for tree, a special charset like data. + 1999-12-24 François Pinard * names.m4: Adjusted for defaulted libiconv. - + 1999-12-23 François Pinard * names.m4: Adjusted for :libiconv:. diff --git a/tests/Makefile.am b/tests/Makefile.am index e2841e8..edd6d48 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,5 +1,5 @@ # Makefile for `recode' regression tests. -# Copyright © 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +# Copyright © 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. # François Pinard , 1988. # This program is free software; you can redistribute it and/or modify @@ -19,13 +19,13 @@ AUTOMAKE_OPTIONS = gnits -SUITE = african.m4 base64.m4 combine.m4 debug.m4 dumps.m4 lists.m4 \ -methods.m4 names.m4 quoted.m4 utf7.m4 utf8.m4 +SUITE = african.m4 base64.m4 combine.m4 dumps.m4 lists.m4 methods.m4 \ +names.m4 quoted.m4 testdump.m4 utf7.m4 utf8.m4 EXTRA_DIST = atgeneral.m4 suite.m4 testsuite $(SUITE) \ -bigauto.sh bigauto.pl dumps-data quoted-data utf7-data +bigauto.py dumps-data quoted-data utf7-data -PERL = perl +PYTHON = python all-local: atconfig testsuite @@ -45,13 +45,16 @@ $(srcdir)/testsuite: atgeneral.m4 suite.m4 $(SUITE) m4 -I $(srcdir) atgeneral.m4 suite.m4 | cat -s > $@-tmp mv $@-tmp $@ -bigtest: - PATH=../src:$$PATH $(srcdir)/bigauto.sh > big-s-off.res - $(PERL) $(srcdir)/bigauto.pl big-s-off.res +bigtest: warning + PATH=../src:$$PATH $(PYTHON) $(srcdir)/bigauto.py -bigtest-strict: - PATH=../src:$$PATH $(srcdir)/bigauto.sh -s > big-s-on.res - $(PERL) $(srcdir)/bigauto.pl big-s-on.res +bigtest-strict: warning + PATH=../src:$$PATH $(PYTHON) $(srcdir)/bigauto.py -s + +warning: + echo 1>&2 '===============================================' + echo 1>&2 "The \`bigauto' test may take hours. Be patient." + echo 1>&2 '===============================================' clean-local: rm -f at-check-line debug-*.sh stderr stdout diff --git a/tests/Makefile.in b/tests/Makefile.in index 697307b..25ddf14 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -11,7 +11,7 @@ # PARTICULAR PURPOSE. # Makefile for `recode' regression tests. -# Copyright © 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +# Copyright © 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. # François Pinard , 1988. # This program is free software; you can redistribute it and/or modify @@ -83,54 +83,35 @@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ CC = @CC@ CPP = @CPP@ -DATADIRNAME = @DATADIRNAME@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ LEX = @LEX@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ MOFILES = @MOFILES@ -MSGFMT = @MSGFMT@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ RANLIB = @RANLIB@ U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ VERSION = @VERSION@ -l = @l@ AUTOMAKE_OPTIONS = gnits -SUITE = african.m4 base64.m4 combine.m4 debug.m4 dumps.m4 lists.m4 methods.m4 names.m4 quoted.m4 utf7.m4 utf8.m4 +SUITE = african.m4 base64.m4 combine.m4 dumps.m4 lists.m4 methods.m4 names.m4 quoted.m4 testdump.m4 utf7.m4 utf8.m4 -EXTRA_DIST = atgeneral.m4 suite.m4 testsuite $(SUITE) bigauto.sh bigauto.pl dumps-data quoted-data utf7-data +EXTRA_DIST = atgeneral.m4 suite.m4 testsuite $(SUITE) bigauto.py dumps-data quoted-data utf7-data -PERL = perl +PYTHON = python mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = atconfig @@ -252,13 +233,16 @@ $(srcdir)/testsuite: atgeneral.m4 suite.m4 $(SUITE) m4 -I $(srcdir) atgeneral.m4 suite.m4 | cat -s > $@-tmp mv $@-tmp $@ -bigtest: - PATH=../src:$$PATH $(srcdir)/bigauto.sh > big-s-off.res - $(PERL) $(srcdir)/bigauto.pl big-s-off.res +bigtest: warning + PATH=../src:$$PATH $(PYTHON) $(srcdir)/bigauto.py -bigtest-strict: - PATH=../src:$$PATH $(srcdir)/bigauto.sh -s > big-s-on.res - $(PERL) $(srcdir)/bigauto.pl big-s-on.res +bigtest-strict: warning + PATH=../src:$$PATH $(PYTHON) $(srcdir)/bigauto.py -s + +warning: + echo 1>&2 '===============================================' + echo 1>&2 "The \`bigauto' test may take hours. Be patient." + echo 1>&2 '===============================================' clean-local: rm -f at-check-line debug-*.sh stderr stdout diff --git a/tests/atgeneral.m4 b/tests/atgeneral.m4 index 74752fe..3677571 100644 --- a/tests/atgeneral.m4 +++ b/tests/atgeneral.m4 @@ -1,6 +1,6 @@ divert(-1) -*- Autoconf -*- # `m4' macros used in building test suites. -# Copyright © 1998, 1999 Progiciels Bourbeau-Pinard inc. +# Copyright © 1998, 1999, 2000 Progiciels Bourbeau-Pinard inc. # François Pinard , 1998. # This program is free software; you can redistribute it and/or modify @@ -355,7 +355,7 @@ ifelse([$2],,, [at_status=$? if test $at_status != $2; then dnl Maybe there was an important message to read before it died. - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 dnl Exit with the same code, at least to preserve 77. exit $at_status fi diff --git a/tests/bigauto.pl b/tests/bigauto.pl deleted file mode 100644 index de1723c..0000000 --- a/tests/bigauto.pl +++ /dev/null @@ -1,145 +0,0 @@ -# Produce statistics from the results of the bigauto check. -# Copyright © 1997 Progiciels Bourbeau-Pinard inc. -# François Pinard , 1997. - -# This script makes a simple analysis for the connectivity of -# the various charsets and produce a report on standard output. -# The reports include statistics about the number of steps before -# and after optimisation. - -# The option @code{-h@var{name}} would affect the resulting output, -# because there are more merging rules when this option is in effect. -# Other options affect the result: @code{-d}, @code{-g} and, -# notably, @code{-s}. These options may be given as arguments to -# `bigauto.sh'. - -# FIXME: There might be one non-option argument, in which case it -# could be interpreted as a charset name, possibly abbreviated to -# any non ambiguous prefix. @code{recode} would then study all -# recodings having the given charset as a starting or ending point. -# If there is no such non-option argument, @code{recode} would -# study @emph{all} possible recodings. - -$before_minimum = 1000; -$after_minimum = 1000; - -$_ = <>; -while ($_) -{ - if (/^Request: (.*)/) - { - $_ = $1; - &study_sequence; - $sequence = $_; - &before_optimisation; - - $_ = <>; - if (/^Shrunk to: (.*)/) - { - $_ = $1; - &study_sequence; - $sequence = $_; - &after_optimisation; - - $_ = <>; - } - else - { - &after_optimisation; - } - } - else - { - warn "Line $. not recognised: $_"; - $_ = <>; - } -} -&produce_report; -exit 0; - -# ---------------------------------------------------------------------- - -sub study_sequence -{ - if ($_ eq '*mere copy*') - { - $steps = 0; - } - else - { - s/\/$//; - s/\/\.\./../g; - $steps = (split /\/|\.\./) - 1; - } -} - -# ---------------------------------------------------------------------- - -sub before_optimisation -{ - $recode_calls++; - - $before_minimum = $steps if $steps < $before_minimum; - $before_maximum = $steps if $steps > $before_maximum; - $before_total += $steps; - - $before_example[$steps] = $sequence if $before_count[$steps] == 0; - $before_count[$steps]++; -} - -# ---------------------------------------------------------------------- - -sub after_optimisation -{ - $after_minimum = $steps if $steps < $after_minimum; - $after_maximum = $steps if $steps > $after_maximum; - $after_total += $steps; - - $after_example[$steps] = $sequence if $after_count[$steps] == 0; - $after_count[$steps]++; -} - -# ---------------------------------------------------------------------- - -sub produce_report -{ - local $before_mean, $after_mean, $steps; - - if ($recode_calls == 0) - { - warn "No call to report\n"; - return; - } - - $before_mean = $before_total / $recode_calls; - $after_mean = $after_total / $recode_calls; - - print "\n"; - print "Optimisation Before After\n"; - print " .-------------------\n"; - printf "Minimum | %2d %2d\n", $before_minimum, $after_minimum; - printf "Maximum | %2d %2d\n", $before_maximum, $after_maximum; - printf "Average | %4.1f %4.1f\n", $before_mean, $after_mean; - - print "\n"; - print "\`Before' histogram\n"; - for ($steps = $before_minimum; $steps <= $before_maximum; $steps++) - { - if ($before_count[$steps]) - { - printf "%5d steps, %5d times (%s)\n", - $steps, $before_count[$steps], $before_example[$steps]; - } - } - - print "\n"; - print "\`After' histogram\n"; - for ($steps = $after_minimum; $steps <= $after_maximum; $steps++) - { - if ($after_count[$steps]) - { - printf "%5d steps, %5d times (%s)\n", - $steps, $after_count[$steps], $after_example[$steps]; - } - } -} diff --git a/tests/bigauto.py b/tests/bigauto.py new file mode 100755 index 0000000..ebe4832 --- /dev/null +++ b/tests/bigauto.py @@ -0,0 +1,177 @@ +#!/usr/bin/env python +# Copyright © 1997, 1999, 2000 Progiciels Bourbeau-Pinard inc. +# François Pinard , 1997. + +"""\ +Produce statistics from the results of the bigauto check. + +Usage: bigauto [RECODE_OPTION]... [CHARSET_OPTION]... + +This script makes a simple analysis for the connectivity of the various +charsets and produce a report on standard output. The reports include +statistics about the number of steps before and after optimisation. + +The option `-hNAME' would affect the resulting output, because there are +more merging rules when this option is in effect. Other options affect +the result: `-d', `-g' and, notably, `-s'. + +All non-option arguments are interpreted as charset names. If any is given, +the study is limited to those recodings having any of the given charsets +both as a starting and ending points. If there is no such non-option +argument, all possible possible recodings are considered. +""" + +import os, string, sys + +def main(*arguments): + recode_options = [] + charset_options = [] + for argument in arguments: + if arguments[0] == '-': + recode_options.append(argument) + else: + charset_options.append(argument) + work_name = '/tmp/bigauto-data' + if os.path.exists(work_name): + os.remove(work_name) + create_data(work_name, recode_options, charset_options) + report = Report() + report.digest_data(open(work_name).readline) + report.produce_report(sys.stdout.write) + os.remove(work_name) + +def create_data(name, recode_options, charset_options): + # Get the list of charsets. + if charset_options: + charsets = charset_options + else: + charsets = [] + for line in os.popen('recode -l').readlines(): + charset = string.split(line)[0] + if charset[0] in ':/': + continue + charsets.append(charset) + # Do the work, calling a subshell once per `before' value. + recode_call = 'recode >%s 2>&1' % name, 'w').write + write('export LANGUAGE; LANGUAGE=C\n' + 'export LANG; LANG=C\n' + 'export LC_ALL; LC_ALL=C\n') + for after in charsets: + if after != before: + write("%s '%s..%s'\n" % (recode_call, before, after)) + +class Report: + + def __init__(self): + self.recode_calls = 0 + self.original_count = {} + self.original_example = {} + self.original_total = 0 + self.shrunk_count = {} + self.shrunk_example = {} + self.shrunk_total = 0 + + def digest_data(self, readline): + lensep = len(os.linesep) + line = readline() + while line: + type, request = string.split(line[:-lensep], ':', 1) + if type == 'Request': + steps = self.get_steps(request) + self.count_original_request(steps, request) + line = readline() + if line: + if len(string.split(line[:-lensep], ':', 1)) != 2: + print '*', line, + type, shrunk_to = string.split(line[:-lensep], ':', 1) + if type == 'Shrunk to': + steps = self.get_steps(shrunk_to) + self.count_shrunk_request(steps, shrunk_to) + line = readline() + else: + self.count_shrunk_request(steps, request) + else: + self.count_shrunk_request(steps, request) + else: + sys.stderr.write('Unrecognized line: ' + line) + line = readline() + + def get_steps(self, text): + if text == '*mere copy*': + return 0 + if text[-1] == '/': + text = text[:-1] + text = string.replace(text, '/..', '..') + count = 0 + for fragment in string.split(text, '..'): + count = count + len(string.split(fragment, '/')) + return count - 1 + + def count_original_request(self, steps, text): + self.recode_calls = self.recode_calls + 1 + if self.original_count.has_key(steps): + self.original_count[steps] = self.original_count[steps] + 1 + else: + self.original_count[steps] = 1 + self.original_example[steps] = string.strip(text) + if self.original_total == 0: + self.original_minimum = self.original_maximum = steps + else: + if steps < self.original_minimum: + self.original_minimum = steps + if steps > self.original_maximum: + self.original_maximum = steps + self.original_total = self.original_total + steps + + def count_shrunk_request(self, steps, text): + if self.shrunk_count.has_key(steps): + self.shrunk_count[steps] = self.shrunk_count[steps] + 1 + else: + self.shrunk_count[steps] = 1 + self.shrunk_example[steps] = string.strip(text) + if self.shrunk_total == 0: + self.shrunk_minimum = self.shrunk_maximum = steps + else: + if steps < self.shrunk_minimum: + self.shrunk_minimum = steps + if steps > self.shrunk_maximum: + self.shrunk_maximum = steps + self.shrunk_total = self.shrunk_total + steps + + def produce_report(self, write): + if self.recode_calls == 0: + sys.stderr.write("No call to report\n") + return + write("\n" + "Optimisation Original Shrunk\n" + " .-------------------\n" + "Minimum | %2d %2d\n" + "Maximum | %2d %2d\n" + "Average | %4.1f %4.1f\n" + % (self.original_minimum, self.shrunk_minimum, + self.original_maximum, self.shrunk_maximum, + float(self.original_total) / float(self.recode_calls), + float(self.shrunk_total) / float(self.recode_calls))) + write("\n" + "Histogram for original requests\n") + for steps in range(self.original_minimum, self.original_maximum+1): + if self.original_count.has_key(steps): + write("%5d steps, %5d times %s\n" + % (steps, self.original_count[steps], + self.original_example[steps])) + write("\n" + "Histogram for shrunk requests\n") + for steps in range(self.shrunk_minimum, self.shrunk_maximum+1): + if self.shrunk_count.has_key(steps): + write("%5d steps, %5d times %s\n" + % (steps, self.shrunk_count[steps], + self.shrunk_example[steps])) + +if __name__ == '__main__': + apply(main, tuple(sys.argv[1:])) diff --git a/tests/bigauto.sh b/tests/bigauto.sh deleted file mode 100755 index 00bfc93..0000000 --- a/tests/bigauto.sh +++ /dev/null @@ -1,22 +0,0 @@ -#! /bin/sh -# Let recode do its huge autoconsistency check. - -echo 1>&2 '===============================================' -echo 1>&2 "The \`bigauto' test may take hours. Be patient." -echo 1>&2 '===============================================' - -export LANGUAGE; LANGUAGE=C -export LANG; LANG=C -export LC_ALL; LC_ALL=C - -recode -l | sed 's/ .*//' | egrep -v '^(/|flat)' > namelist - -while read before; do - test "$before" = Texinfo || - while read after; do - test "$before" = "$after" || - echo "recode &1 - -rm namelist diff --git a/tests/lists.m4 b/tests/lists.m4 index c708d79..5c66498 100644 --- a/tests/lists.m4 +++ b/tests/lists.m4 @@ -6,7 +6,7 @@ dnl ---------------------------- cat > expect <<'EOF' ISO-8859-1 - 0 NU 16 DL 32 SP 48 0 64 @ 80 P 96 '! 112 p + 0 NU 16 DL 32 SP 48 0 64 At 80 P 96 '! 112 p 1 SH 17 D1 33 ! 49 1 65 A 81 Q 97 a 113 q 2 SX 18 D2 34 " 50 2 66 B 82 R 98 b 114 r 3 EX 19 D3 35 Nb 51 3 67 C 83 S 99 c 115 s @@ -51,7 +51,7 @@ dnl -------------------------------- cat > expect <<'EOF' ISO-8859-1 -00 NU 10 DL 20 SP 30 0 40 @ 50 P 60 '! 70 p +00 NU 10 DL 20 SP 30 0 40 At 50 P 60 '! 70 p 01 SH 11 D1 21 ! 31 1 41 A 51 Q 61 a 71 q 02 SX 12 D2 22 " 32 2 42 B 52 R 62 b 72 r 03 EX 13 D3 23 Nb 33 3 43 C 53 S 63 c 73 s @@ -96,7 +96,7 @@ dnl -------------------------- cat > expect <<'EOF' ISO-8859-1 -000 NU 020 DL 040 SP 060 0 100 @ 120 P 140 '! 160 p +000 NU 020 DL 040 SP 060 0 100 At 120 P 140 '! 160 p 001 SH 021 D1 041 ! 061 1 101 A 121 Q 141 a 161 q 002 SX 022 D2 042 " 062 2 102 B 122 R 142 b 162 r 003 EX 023 D3 043 Nb 063 3 103 C 123 S 143 c 163 s @@ -205,7 +205,7 @@ Dec Oct Hex UCS2 Mne ISO-8859-1 61 075 3d 003D = equals sign 62 076 3e 003E > greater-than sign 63 077 3f 003F ? question mark - 64 100 40 0040 @ commercial at + 64 100 40 0040 At commercial at 65 101 41 0041 A latin capital letter a 66 102 42 0042 B latin capital letter b 67 103 43 0043 C latin capital letter c diff --git a/tests/names.m4 b/tests/names.m4 index 657c1dd..0614912 100644 --- a/tests/names.m4 +++ b/tests/names.m4 @@ -9,7 +9,6 @@ cat >expout <<'EOF' /Base64 64 b64 /CR /CR-LF cl -/data /Decimal-1 d d1 /Decimal-2 d2 /Decimal-4 d4 @@ -30,7 +29,7 @@ AFRFUL-103-BPI_OCIL t-bambara t-bra t-ewondo t-fulfulde AFRL1-101-BPI_OCIL t-fra t-francais AFRLIN-104-BPI_OCIL lin lingala sango wolof AFRLIN-105-BPI_OCIL t-lin t-lingala t-sango t-wolof -ANSI_X3.4-1968 367/CR-LF ANSI_X3.4-1986 ASCII CP367/CR-LF CSASCII IBM367/CR-LF ISO646-US iso-ir-6 ISO_646.irv:1991 us US-ASCII +ANSI_X3.4-1968 367/CR-LF ANSI_X3.4-1986 ASCII CP367/CR-LF csASCII IBM367/CR-LF ISO646-US ISO646.1991-IRV iso-ir-6 ISO_646.irv:1991 us US-ASCII Apple-Mac/CR ARMSCII-8 ASCII-BS BS @@ -38,16 +37,17 @@ ASMO_449 arabic7 iso-ir-89 ISO_9036 AtariST baltic iso-ir-179 Bang-Bang -BIG5 BIG-5 BIG-FIVE BIGFIVE CSBIG5 +BIG5 BIG-5 BIG-FIVE BIGFIVE CN-BIG5 csBig5 BS_4730 gb ISO646-GB iso-ir-4 uk BS_viewdata iso-ir-47 CDC-NOS NOS combined-UCS-2 co CORK T1 count-characters -CP866 866 CSIBM866 IBM866 +CP866 866 csIBM866 IBM866 CP874 WINDOWS-874 CP932 +CP949 UHC CP950 CP1133 IBM-CP1133 CP1250/CR-LF 1250/CR-LF ms-ee windows-1250 @@ -64,6 +64,7 @@ CSA_Z243.4-1985-2 csa7-2 ISO646-CA2 iso-ir-122 CSA_Z243.4-1985-gr iso-ir-123 CSN_369103 iso-ir-139 koi8l2 KOI-8_L2 CWI cp-hu CWI-2 +data DEC-MCS dec DIN_66003 de ISO646-DE iso-ir-21 DS_2089 dk DS2089 ISO646-DK @@ -90,20 +91,21 @@ EBCDIC-US ECMA-cyrillic ECMA-113 ECMA-113:1986 iso-ir-111 ES ISO646-ES iso-ir-17 ES2 ISO646-ES2 iso-ir-85 -EUC-CN CSGB2312 EUCCN GB2312 -EUC-JP CSEUCPKDFMTJAPANESE EUCJP EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE -EUC-KR CSEUCKR EUCKR -EUC-TW CSEUCTW EUCTW +EUC-CN CN-GB csGB2312 EUCCN EUC_CN GB2312 +EUC-JP csEUCPkdFmtJapanese EUCJP EUC_JP Extended_UNIX_Code_Packed_Format_for_Japanese +EUC-KR csEUCKR EUCKR EUC_KR +EUC-TW csEUCTW EUCTW EUC_TW flat GBK CP936 -GB_1988-80 cn ISO646-CN iso-ir-57 +GB_1988-80 cn csISO57GB1988 ISO646-CN iso-ir-57 +GB_2312-80 CHINESE csISO58GB231280 GB2312.1980-0 ISO-IR-58 Georgian-Academy Georgian-PS GOST_19768-87 iso-ir-153 ST_SEV_358-88 greek7 iso-ir-88 greek7-old iso-ir-18 greek-ccitt iso-ir-150 -hp-roman8 CSHPROMAN8 r8 roman8 +hp-roman8 csHPRoman8 r8 roman8 HTML-i18n 2070 RFC2070 HTML_1.1 h1 HTML_2.0 1866 h2 RFC1866 @@ -129,7 +131,7 @@ IBM423/CR-LF 423/CR-LF CP423/CR-LF ebcdic-cp-gr IBM424/CR-LF 424/CR-LF CP424/CR-LF ebcdic-cp-he IBM437/CR-LF 437/CR-LF CP437/CR-LF IBM500/CR-LF 500/CR-LF 500V1 CP500/CR-LF ebcdic-cp-be ebcdic-cp-ch -IBM850/CR-LF 850/CR-LF CP850/CR-LF CSPC850MULTILINGUAL +IBM850/CR-LF 850/CR-LF CP850/CR-LF csPC850Multilingual IBM851/CR-LF 851/CR-LF CP851/CR-LF IBM852/CR-LF 852/CR-LF CP852/CR-LF pcl2 pclatin2 IBM855/CR-LF 855/CR-LF CP855/CR-LF @@ -161,27 +163,29 @@ INIS iso-ir-49 INIS-8 iso-ir-50 INIS-cyrillic iso-ir-51 INVARIANT iso-ir-170 -ISO-2022-CN CSISO2022CN +ISO-2022-CN csISO2022CN ISO2022CN ISO-2022-CN-EXT -ISO-2022-JP CSISO2022JP +ISO-2022-JP csISO2022JP ISO2022JP ISO-2022-JP-1 -ISO-2022-JP-2 CSISO2022JP2 -ISO-2022-KR CSISO2022KR -ISO-8859-1 819/CR-LF CP819/CR-LF CSISOLATIN1 IBM819/CR-LF iso-ir-100 ISO_8859-1 ISO_8859-1:1987 l1 lat1 latin1 Latin-1 -ISO-8859-2 912/CR-LF CP912/CR-LF CSISOLATIN2 IBM912/CR-LF iso-ir-101 ISO_8859-2 ISO_8859-2:1987 l2 latin2 -ISO-8859-3 CSISOLATIN3 iso-ir-109 ISO_8859-3 ISO_8859-3:1988 l3 latin3 -ISO-8859-4 CSISOLATIN4 iso-ir-110 ISO_8859-4 ISO_8859-4:1988 l4 latin4 -ISO-8859-5 CSISOLATINCYRILLIC cyrillic iso-ir-144 ISO_8859-5 ISO_8859-5:1988 -ISO-8859-6 arabic ASMO-708 CSISOLATINARABIC ECMA-114 iso-ir-127 ISO_8859-6 ISO_8859-6:1987 -ISO-8859-7 CSISOLATINGREEK ECMA-118 ELOT_928 greek greek8 iso-ir-126 ISO_8859-7 ISO_8859-7:1987 -ISO-8859-8 CSISOLATINHEBREW hebrew iso-ir-138 ISO_8859-8 ISO_8859-8:1988 -ISO-8859-9 CSISOLATIN5 iso-ir-148 ISO_8859-9 ISO_8859-9:1989 l5 latin5 -ISO-8859-10 CSISOLATIN6 iso-ir-157 ISO_8859-10 ISO_8859-10:1992 ISO_8859-10:1993 l6 latin6 -ISO-8859-13 iso-baltic ISO-IR-179 iso-ir-179a ISO_8859-13 ISO_8859-13:1998 l7 latin7 -ISO-8859-14 iso-celtic iso-ir-199 ISO_8859-14 ISO_8859-14:1998 l8 latin8 -ISO-8859-15 iso-ir-203 ISO_8859-15 ISO_8859-15:1998 l9 latin9 -ISO-10646-UCS-2 BMP CSUNICODE rune u2 UCS-2 UNICODE-1-1 -ISO-10646-UCS-4 10646 CSUCS4 ISO_10646 u4 UCS UCS-4 +ISO-2022-JP-2 csISO2022JP2 +ISO-2022-KR csISO2022KR ISO2022KR +ISO-8859-1 819/CR-LF CP819/CR-LF csISOLatin1 IBM819/CR-LF ISO8859-1 iso-ir-100 ISO_8859-1 ISO_8859-1:1987 l1 lat1 latin1 Latin-1 +ISO-8859-2 912/CR-LF CP912/CR-LF csISOLatin2 IBM912/CR-LF ISO8859-2 iso-ir-101 ISO_8859-2 ISO_8859-2:1987 l2 latin2 +ISO-8859-3 csISOLatin3 ISO8859-3 iso-ir-109 ISO_8859-3 ISO_8859-3:1988 l3 latin3 +ISO-8859-4 csISOLatin4 ISO8859-4 iso-ir-110 ISO_8859-4 ISO_8859-4:1988 l4 latin4 +ISO-8859-5 csISOLatinCyrillic cyrillic ISO8859-5 iso-ir-144 ISO_8859-5 ISO_8859-5:1988 +ISO-8859-6 arabic ASMO-708 csISOLatinArabic ECMA-114 ISO8859-6 iso-ir-127 ISO_8859-6 ISO_8859-6:1987 +ISO-8859-7 csISOLatinGreek ECMA-118 ELOT_928 greek greek8 ISO8859-7 iso-ir-126 ISO_8859-7 ISO_8859-7:1987 +ISO-8859-8 csISOLatinHebrew hebrew ISO8859-8 iso-ir-138 ISO_8859-8 ISO_8859-8:1988 +ISO-8859-9 csISOLatin5 ISO8859-9 iso-ir-148 ISO_8859-9 ISO_8859-9:1989 l5 latin5 +ISO-8859-10 csISOLatin6 ISO8859-10 iso-ir-157 ISO_8859-10 ISO_8859-10:1992 ISO_8859-10:1993 L6 latin6 +ISO-8859-13 ISO8859-13 iso-baltic ISO-IR-179 iso-ir-179a ISO_8859-13 ISO_8859-13:1998 l7 latin7 +ISO-8859-14 ISO8859-14 iso-celtic iso-ir-199 ISO_8859-14 ISO_8859-14:1998 l8 latin8 +ISO-8859-15 ISO8859-15 iso-ir-203 ISO_8859-15 ISO_8859-15:1998 l9 latin9 +ISO-8859-16 ISO-IR-226 ISO_8859-16 ISO_8859-16:2000 +ISO-10646-UCS-2 BMP csUnicode csUnicode11 rune u2 UCS-2 UCS-2BE UNICODE-1-1 UNICODEBIG +ISO-10646-UCS-4 10646 csUCS4 ISO_10646 u4 UCS UCS-4 +ISO-IR-165 CN-GB-ISOIR165 ISO_646.basic ISO_646.basic:1983 ref ISO_646.irv irv iso-ir-2 ISO_646.irv:1983 ISO_2033-1983 e13b iso-ir-98 @@ -194,29 +198,29 @@ ISO_10367-box iso-ir-155 IT ISO646-IT iso-ir-15 JAVA JIS_C6220-1969-jp iso-ir-13 JIS_C6220-1969 katakana x0201-7 -JIS_C6220-1969-ro ISO646-JP iso-ir-14 jp +JIS_C6220-1969-ro csISO14JISC6220ro ISO646-JP iso-ir-14 jp JIS_C6229-1984-a jp-ocr-a JIS_C6229-1984-b ISO646-JP-OCR-B jp-ocr-b JIS_C6229-1984-b-add iso-ir-93 jp-ocr-b-add JIS_C6229-1984-hand iso-ir-94 jp-ocr-hand JIS_C6229-1984-hand-add iso-ir-95 jp-ocr-hand-add JIS_C6229-1984-kana iso-ir-96 -JIS_X0201 CSHALFWIDTHKATAKANA JISX0201-1976 JISX0201.1976-0 X0201 -JIS_X0208 JIS0208 JIS_X0208-1983 JIS_X0208-1990 JIS_X0208.1983-0 JIS_X0208.1983-1 -JIS_X0212 CSISO159JISX02121990 ISO-IR-159 JIS_X0212-1990 JIS_X0212.1990-0 X0212 +JIS_X0201 csHalfWidthKatakana JIS0201 JISX0201-1976 JISX0201.1976-0 X0201 +JIS_X0208 csISO87JISX0208 ISO-IR-87 JIS0208 JISX0208.1983-0 JISX0208.1990-0 JIS_X0208-1983 JIS_X0208-1990 X0208 +JIS_X0212 csISO159JISX02121990 ISO-IR-159 JIS0212 JISX0212.1990-0 JIS_X0212-1990 JIS_X0212.1990-0 X0212 JOHAB CP1361 JUS_I.B1.002 ISO646-YU iso-ir-141 js yu JUS_I.B1.003-mac iso-ir-147 macedonian JUS_I.B1.003-serb iso-ir-146 serbian KEYBCS2 Kamenicky -KOI8-R CSKOI8R +KOI8-R csKOI8R KOI8-RU KOI8-U KOI-7 KOI-8 GOST_19768-74 KOI-8_CS2 KSC5636 ISO646-KR -KSC_5601 CP949 CSKSC56011987 ISO-IR-149 KOREAN KSC5601.1987-0 KS_C_5601-1987 KS_C_5601-1989 +KSC_5601 csKSC56011987 ISO-IR-149 KOREAN KSC5601.1987-0 KSX1001:1992 KS_C_5601-1987 KS_C_5601-1989 LaTeX ltex TeX latin-greek iso-ir-19 Latin-greek-1 iso-ir-27 @@ -228,7 +232,7 @@ MacCyrillic MacGreek MacHebrew MacIceland -macintosh/CR mac/CR MacRoman +macintosh/CR csMacintosh mac/CR MacRoman macintosh_ce/CR macce/CR MacRomania MacThai @@ -253,25 +257,27 @@ RFC1345 1345 mnemonic sami iso-ir-158 lap latin-lap SEN_850200_B FI ISO646-FI ISO646-SE iso-ir-10 se SS636127 SEN_850200_C ISO646-SE2 iso-ir-11 se2 -SJIS CSSHIFTJIS MS_KANJI SHIFT-JIS SHIFT_JIS +SJIS csShiftJIS MS_KANJI SHIFT-JIS SHIFT_JIS T.61-7bit iso-ir-102 TCVN TCVN5712-1 TCVN5712-1:1993 TCVN-5712 Texinfo texi ti Texte txte TIS-620 ISO-IR-166 TIS620 TIS620-0 TIS620.2529-1 TIS620.2533-0 TIS620.2533-1 -UCS-2-BE UNICODEBIG +tree UCS-2-INTERNAL -UCS-2-LE UNICODELITTLE UCS-2-SWAPPED -UCS-4-BE +UCS-2LE UNICODELITTLE UCS-4-INTERNAL -UCS-4-LE UCS-4-SWAPPED -UNICODE-1-1-UTF-7 CSUNICODE11UTF7 TF-7 u7 UTF-7 +UCS-4BE +UCS-4LE +UNICODE-1-1-UTF-7 csUnicode11UTF7 TF-7 u7 UTF-7 UTF-8 FSS_UTF TF-8 u8 UTF-2 UTF-FSS UTF-16 TF-16 u6 Unicode +UTF-16BE +UTF-16LE VIQR -VISCII CSVISCII VISCII1.1-1 +VISCII csVISCII VISCII1.1-1 VNI VPS EOF diff --git a/tests/suite.m4 b/tests/suite.m4 index 9cdf425..243b419 100644 --- a/tests/suite.m4 +++ b/tests/suite.m4 @@ -1,7 +1,7 @@ #!/bin/sh # -*- coding: latin-1 -*- # Validation suite for the Free `recode' program and library. -# Copyright © 1998, 1999 Progiciels Bourbeau-Pinard inc. +# Copyright © 1998, 1999, 2000 Progiciels Bourbeau-Pinard inc. # François Pinard , 1998. # Still many parts of `recode' are not exercised by the test suite. A few @@ -44,7 +44,7 @@ echo AT_INCLUDE(african.m4) AT_INCLUDE(combine.m4) -AT_INCLUDE(debug.m4) +AT_INCLUDE(testdump.m4) AT_INCLUDE(utf7.m4) AT_INCLUDE(utf8.m4) diff --git a/tests/debug.m4 b/tests/testdump.m4 similarity index 100% rename from tests/debug.m4 rename to tests/testdump.m4 diff --git a/tests/testsuite b/tests/testsuite index 2e1ce3a..6b1bf06 100644 --- a/tests/testsuite +++ b/tests/testsuite @@ -1,7 +1,7 @@ #!/bin/sh # -*- coding: latin-1 -*- # Validation suite for the Free `recode' program and library. -# Copyright © 1998, 1999 Progiciels Bourbeau-Pinard inc. +# Copyright © 1998, 1999, 2000 Progiciels Bourbeau-Pinard inc. # François Pinard , 1998. # Still many parts of `recode' are not exercised by the test suite. A few @@ -112,7 +112,6 @@ cat >expout <<'EOF' /Base64 64 b64 /CR /CR-LF cl -/data /Decimal-1 d d1 /Decimal-2 d2 /Decimal-4 d4 @@ -133,7 +132,7 @@ AFRFUL-103-BPI_OCIL t-bambara t-bra t-ewondo t-fulfulde AFRL1-101-BPI_OCIL t-fra t-francais AFRLIN-104-BPI_OCIL lin lingala sango wolof AFRLIN-105-BPI_OCIL t-lin t-lingala t-sango t-wolof -ANSI_X3.4-1968 367/CR-LF ANSI_X3.4-1986 ASCII CP367/CR-LF CSASCII IBM367/CR-LF ISO646-US iso-ir-6 ISO_646.irv:1991 us US-ASCII +ANSI_X3.4-1968 367/CR-LF ANSI_X3.4-1986 ASCII CP367/CR-LF csASCII IBM367/CR-LF ISO646-US ISO646.1991-IRV iso-ir-6 ISO_646.irv:1991 us US-ASCII Apple-Mac/CR ARMSCII-8 ASCII-BS BS @@ -141,16 +140,17 @@ ASMO_449 arabic7 iso-ir-89 ISO_9036 AtariST baltic iso-ir-179 Bang-Bang -BIG5 BIG-5 BIG-FIVE BIGFIVE CSBIG5 +BIG5 BIG-5 BIG-FIVE BIGFIVE CN-BIG5 csBig5 BS_4730 gb ISO646-GB iso-ir-4 uk BS_viewdata iso-ir-47 CDC-NOS NOS combined-UCS-2 co CORK T1 count-characters -CP866 866 CSIBM866 IBM866 +CP866 866 csIBM866 IBM866 CP874 WINDOWS-874 CP932 +CP949 UHC CP950 CP1133 IBM-CP1133 CP1250/CR-LF 1250/CR-LF ms-ee windows-1250 @@ -167,6 +167,7 @@ CSA_Z243.4-1985-2 csa7-2 ISO646-CA2 iso-ir-122 CSA_Z243.4-1985-gr iso-ir-123 CSN_369103 iso-ir-139 koi8l2 KOI-8_L2 CWI cp-hu CWI-2 +data DEC-MCS dec DIN_66003 de ISO646-DE iso-ir-21 DS_2089 dk DS2089 ISO646-DK @@ -193,20 +194,21 @@ EBCDIC-US ECMA-cyrillic ECMA-113 ECMA-113:1986 iso-ir-111 ES ISO646-ES iso-ir-17 ES2 ISO646-ES2 iso-ir-85 -EUC-CN CSGB2312 EUCCN GB2312 -EUC-JP CSEUCPKDFMTJAPANESE EUCJP EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE -EUC-KR CSEUCKR EUCKR -EUC-TW CSEUCTW EUCTW +EUC-CN CN-GB csGB2312 EUCCN EUC_CN GB2312 +EUC-JP csEUCPkdFmtJapanese EUCJP EUC_JP Extended_UNIX_Code_Packed_Format_for_Japanese +EUC-KR csEUCKR EUCKR EUC_KR +EUC-TW csEUCTW EUCTW EUC_TW flat GBK CP936 -GB_1988-80 cn ISO646-CN iso-ir-57 +GB_1988-80 cn csISO57GB1988 ISO646-CN iso-ir-57 +GB_2312-80 CHINESE csISO58GB231280 GB2312.1980-0 ISO-IR-58 Georgian-Academy Georgian-PS GOST_19768-87 iso-ir-153 ST_SEV_358-88 greek7 iso-ir-88 greek7-old iso-ir-18 greek-ccitt iso-ir-150 -hp-roman8 CSHPROMAN8 r8 roman8 +hp-roman8 csHPRoman8 r8 roman8 HTML-i18n 2070 RFC2070 HTML_1.1 h1 HTML_2.0 1866 h2 RFC1866 @@ -232,7 +234,7 @@ IBM423/CR-LF 423/CR-LF CP423/CR-LF ebcdic-cp-gr IBM424/CR-LF 424/CR-LF CP424/CR-LF ebcdic-cp-he IBM437/CR-LF 437/CR-LF CP437/CR-LF IBM500/CR-LF 500/CR-LF 500V1 CP500/CR-LF ebcdic-cp-be ebcdic-cp-ch -IBM850/CR-LF 850/CR-LF CP850/CR-LF CSPC850MULTILINGUAL +IBM850/CR-LF 850/CR-LF CP850/CR-LF csPC850Multilingual IBM851/CR-LF 851/CR-LF CP851/CR-LF IBM852/CR-LF 852/CR-LF CP852/CR-LF pcl2 pclatin2 IBM855/CR-LF 855/CR-LF CP855/CR-LF @@ -264,27 +266,29 @@ INIS iso-ir-49 INIS-8 iso-ir-50 INIS-cyrillic iso-ir-51 INVARIANT iso-ir-170 -ISO-2022-CN CSISO2022CN +ISO-2022-CN csISO2022CN ISO2022CN ISO-2022-CN-EXT -ISO-2022-JP CSISO2022JP +ISO-2022-JP csISO2022JP ISO2022JP ISO-2022-JP-1 -ISO-2022-JP-2 CSISO2022JP2 -ISO-2022-KR CSISO2022KR -ISO-8859-1 819/CR-LF CP819/CR-LF CSISOLATIN1 IBM819/CR-LF iso-ir-100 ISO_8859-1 ISO_8859-1:1987 l1 lat1 latin1 Latin-1 -ISO-8859-2 912/CR-LF CP912/CR-LF CSISOLATIN2 IBM912/CR-LF iso-ir-101 ISO_8859-2 ISO_8859-2:1987 l2 latin2 -ISO-8859-3 CSISOLATIN3 iso-ir-109 ISO_8859-3 ISO_8859-3:1988 l3 latin3 -ISO-8859-4 CSISOLATIN4 iso-ir-110 ISO_8859-4 ISO_8859-4:1988 l4 latin4 -ISO-8859-5 CSISOLATINCYRILLIC cyrillic iso-ir-144 ISO_8859-5 ISO_8859-5:1988 -ISO-8859-6 arabic ASMO-708 CSISOLATINARABIC ECMA-114 iso-ir-127 ISO_8859-6 ISO_8859-6:1987 -ISO-8859-7 CSISOLATINGREEK ECMA-118 ELOT_928 greek greek8 iso-ir-126 ISO_8859-7 ISO_8859-7:1987 -ISO-8859-8 CSISOLATINHEBREW hebrew iso-ir-138 ISO_8859-8 ISO_8859-8:1988 -ISO-8859-9 CSISOLATIN5 iso-ir-148 ISO_8859-9 ISO_8859-9:1989 l5 latin5 -ISO-8859-10 CSISOLATIN6 iso-ir-157 ISO_8859-10 ISO_8859-10:1992 ISO_8859-10:1993 l6 latin6 -ISO-8859-13 iso-baltic ISO-IR-179 iso-ir-179a ISO_8859-13 ISO_8859-13:1998 l7 latin7 -ISO-8859-14 iso-celtic iso-ir-199 ISO_8859-14 ISO_8859-14:1998 l8 latin8 -ISO-8859-15 iso-ir-203 ISO_8859-15 ISO_8859-15:1998 l9 latin9 -ISO-10646-UCS-2 BMP CSUNICODE rune u2 UCS-2 UNICODE-1-1 -ISO-10646-UCS-4 10646 CSUCS4 ISO_10646 u4 UCS UCS-4 +ISO-2022-JP-2 csISO2022JP2 +ISO-2022-KR csISO2022KR ISO2022KR +ISO-8859-1 819/CR-LF CP819/CR-LF csISOLatin1 IBM819/CR-LF ISO8859-1 iso-ir-100 ISO_8859-1 ISO_8859-1:1987 l1 lat1 latin1 Latin-1 +ISO-8859-2 912/CR-LF CP912/CR-LF csISOLatin2 IBM912/CR-LF ISO8859-2 iso-ir-101 ISO_8859-2 ISO_8859-2:1987 l2 latin2 +ISO-8859-3 csISOLatin3 ISO8859-3 iso-ir-109 ISO_8859-3 ISO_8859-3:1988 l3 latin3 +ISO-8859-4 csISOLatin4 ISO8859-4 iso-ir-110 ISO_8859-4 ISO_8859-4:1988 l4 latin4 +ISO-8859-5 csISOLatinCyrillic cyrillic ISO8859-5 iso-ir-144 ISO_8859-5 ISO_8859-5:1988 +ISO-8859-6 arabic ASMO-708 csISOLatinArabic ECMA-114 ISO8859-6 iso-ir-127 ISO_8859-6 ISO_8859-6:1987 +ISO-8859-7 csISOLatinGreek ECMA-118 ELOT_928 greek greek8 ISO8859-7 iso-ir-126 ISO_8859-7 ISO_8859-7:1987 +ISO-8859-8 csISOLatinHebrew hebrew ISO8859-8 iso-ir-138 ISO_8859-8 ISO_8859-8:1988 +ISO-8859-9 csISOLatin5 ISO8859-9 iso-ir-148 ISO_8859-9 ISO_8859-9:1989 l5 latin5 +ISO-8859-10 csISOLatin6 ISO8859-10 iso-ir-157 ISO_8859-10 ISO_8859-10:1992 ISO_8859-10:1993 L6 latin6 +ISO-8859-13 ISO8859-13 iso-baltic ISO-IR-179 iso-ir-179a ISO_8859-13 ISO_8859-13:1998 l7 latin7 +ISO-8859-14 ISO8859-14 iso-celtic iso-ir-199 ISO_8859-14 ISO_8859-14:1998 l8 latin8 +ISO-8859-15 ISO8859-15 iso-ir-203 ISO_8859-15 ISO_8859-15:1998 l9 latin9 +ISO-8859-16 ISO-IR-226 ISO_8859-16 ISO_8859-16:2000 +ISO-10646-UCS-2 BMP csUnicode csUnicode11 rune u2 UCS-2 UCS-2BE UNICODE-1-1 UNICODEBIG +ISO-10646-UCS-4 10646 csUCS4 ISO_10646 u4 UCS UCS-4 +ISO-IR-165 CN-GB-ISOIR165 ISO_646.basic ISO_646.basic:1983 ref ISO_646.irv irv iso-ir-2 ISO_646.irv:1983 ISO_2033-1983 e13b iso-ir-98 @@ -297,29 +301,29 @@ ISO_10367-box iso-ir-155 IT ISO646-IT iso-ir-15 JAVA JIS_C6220-1969-jp iso-ir-13 JIS_C6220-1969 katakana x0201-7 -JIS_C6220-1969-ro ISO646-JP iso-ir-14 jp +JIS_C6220-1969-ro csISO14JISC6220ro ISO646-JP iso-ir-14 jp JIS_C6229-1984-a jp-ocr-a JIS_C6229-1984-b ISO646-JP-OCR-B jp-ocr-b JIS_C6229-1984-b-add iso-ir-93 jp-ocr-b-add JIS_C6229-1984-hand iso-ir-94 jp-ocr-hand JIS_C6229-1984-hand-add iso-ir-95 jp-ocr-hand-add JIS_C6229-1984-kana iso-ir-96 -JIS_X0201 CSHALFWIDTHKATAKANA JISX0201-1976 JISX0201.1976-0 X0201 -JIS_X0208 JIS0208 JIS_X0208-1983 JIS_X0208-1990 JIS_X0208.1983-0 JIS_X0208.1983-1 -JIS_X0212 CSISO159JISX02121990 ISO-IR-159 JIS_X0212-1990 JIS_X0212.1990-0 X0212 +JIS_X0201 csHalfWidthKatakana JIS0201 JISX0201-1976 JISX0201.1976-0 X0201 +JIS_X0208 csISO87JISX0208 ISO-IR-87 JIS0208 JISX0208.1983-0 JISX0208.1990-0 JIS_X0208-1983 JIS_X0208-1990 X0208 +JIS_X0212 csISO159JISX02121990 ISO-IR-159 JIS0212 JISX0212.1990-0 JIS_X0212-1990 JIS_X0212.1990-0 X0212 JOHAB CP1361 JUS_I.B1.002 ISO646-YU iso-ir-141 js yu JUS_I.B1.003-mac iso-ir-147 macedonian JUS_I.B1.003-serb iso-ir-146 serbian KEYBCS2 Kamenicky -KOI8-R CSKOI8R +KOI8-R csKOI8R KOI8-RU KOI8-U KOI-7 KOI-8 GOST_19768-74 KOI-8_CS2 KSC5636 ISO646-KR -KSC_5601 CP949 CSKSC56011987 ISO-IR-149 KOREAN KSC5601.1987-0 KS_C_5601-1987 KS_C_5601-1989 +KSC_5601 csKSC56011987 ISO-IR-149 KOREAN KSC5601.1987-0 KSX1001:1992 KS_C_5601-1987 KS_C_5601-1989 LaTeX ltex TeX latin-greek iso-ir-19 Latin-greek-1 iso-ir-27 @@ -331,7 +335,7 @@ MacCyrillic MacGreek MacHebrew MacIceland -macintosh/CR mac/CR MacRoman +macintosh/CR csMacintosh mac/CR MacRoman macintosh_ce/CR macce/CR MacRomania MacThai @@ -356,39 +360,41 @@ RFC1345 1345 mnemonic sami iso-ir-158 lap latin-lap SEN_850200_B FI ISO646-FI ISO646-SE iso-ir-10 se SS636127 SEN_850200_C ISO646-SE2 iso-ir-11 se2 -SJIS CSSHIFTJIS MS_KANJI SHIFT-JIS SHIFT_JIS +SJIS csShiftJIS MS_KANJI SHIFT-JIS SHIFT_JIS T.61-7bit iso-ir-102 TCVN TCVN5712-1 TCVN5712-1:1993 TCVN-5712 Texinfo texi ti Texte txte TIS-620 ISO-IR-166 TIS620 TIS620-0 TIS620.2529-1 TIS620.2533-0 TIS620.2533-1 -UCS-2-BE UNICODEBIG +tree UCS-2-INTERNAL -UCS-2-LE UNICODELITTLE UCS-2-SWAPPED -UCS-4-BE +UCS-2LE UNICODELITTLE UCS-4-INTERNAL -UCS-4-LE UCS-4-SWAPPED -UNICODE-1-1-UTF-7 CSUNICODE11UTF7 TF-7 u7 UTF-7 +UCS-4BE +UCS-4LE +UNICODE-1-1-UTF-7 csUnicode11UTF7 TF-7 u7 UTF-7 UTF-8 FSS_UTF TF-8 u8 UTF-2 UTF-FSS UTF-16 TF-16 u6 Unicode +UTF-16BE +UTF-16LE VIQR -VISCII CSVISCII VISCII1.1-1 +VISCII csVISCII VISCII1.1-1 VNI VPS EOF $at_traceoff test -n "$at_verbose" \ - && echo "$srcdir/names.m4:279: testing..." -echo names.m4:279 > at-check-line + && echo "$srcdir/names.m4:285: testing..." +echo names.m4:285 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode -l at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -427,19 +433,19 @@ if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf stdout stderr expout # Snippet )c2) - echo names.m4:283 > at-check-line + echo names.m4:289 > at-check-line if test -n "$at_verbose"; then echo 'testing the --find-subsets option' echo $at_n " $at_c" fi - echo $at_n "2. $srcdir/names.m4:283 $at_c" + echo $at_n "2. $srcdir/names.m4:289 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d2( # Testing the --find-subsets option # Snippet )d2) # Snippet (s2( -# starting from `names.m4:283'. +# starting from `names.m4:289'. $at_traceon cat >expout <<'EOF' @@ -890,14 +896,14 @@ EOF $at_traceoff test -n "$at_verbose" \ - && echo "$srcdir/names.m4:734: testing..." -echo names.m4:734 > at-check-line + && echo "$srcdir/names.m4:740: testing..." +echo names.m4:740 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode -T | sort at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -956,7 +962,7 @@ $at_traceon cat > expect <<'EOF' ISO-8859-1 - 0 NU 16 DL 32 SP 48 0 64 @ 80 P 96 '! 112 p + 0 NU 16 DL 32 SP 48 0 64 At 80 P 96 '! 112 p 1 SH 17 D1 33 ! 49 1 65 A 81 Q 97 a 113 q 2 SX 18 D2 34 " 50 2 66 B 82 R 98 b 114 r 3 EX 19 D3 35 Nb 51 3 67 C 83 S 99 c 115 s @@ -1000,7 +1006,7 @@ $at_traceon recode -ld latin-1 | cmp -s - expect at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -1057,7 +1063,7 @@ $at_traceon cat > expect <<'EOF' ISO-8859-1 -00 NU 10 DL 20 SP 30 0 40 @ 50 P 60 '! 70 p +00 NU 10 DL 20 SP 30 0 40 At 50 P 60 '! 70 p 01 SH 11 D1 21 ! 31 1 41 A 51 Q 61 a 71 q 02 SX 12 D2 22 " 32 2 42 B 52 R 62 b 72 r 03 EX 13 D3 23 Nb 33 3 43 C 53 S 63 c 73 s @@ -1101,7 +1107,7 @@ $at_traceon recode -lh latin-1 | cmp -s - expect at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -1158,7 +1164,7 @@ $at_traceon cat > expect <<'EOF' ISO-8859-1 -000 NU 020 DL 040 SP 060 0 100 @ 120 P 140 '! 160 p +000 NU 020 DL 040 SP 060 0 100 At 120 P 140 '! 160 p 001 SH 021 D1 041 ! 061 1 101 A 121 Q 141 a 161 q 002 SX 022 D2 042 " 062 2 102 B 122 R 142 b 162 r 003 EX 023 D3 043 Nb 063 3 103 C 123 S 143 c 163 s @@ -1202,7 +1208,7 @@ $at_traceon recode -lo latin-1 | cmp -s - expect at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -1323,7 +1329,7 @@ Dec Oct Hex UCS2 Mne ISO-8859-1 61 075 3d 003D = equals sign 62 076 3e 003E > greater-than sign 63 077 3f 003F ? question mark - 64 100 40 0040 @ commercial at + 64 100 40 0040 At commercial at 65 101 41 0041 A latin capital letter a 66 102 42 0042 B latin capital letter b 67 103 43 0043 C latin capital letter c @@ -1526,7 +1532,7 @@ $at_traceon recode -lf latin-1 | cmp -s - expect at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -1599,7 +1605,7 @@ $at_traceon at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -1684,7 +1690,7 @@ recode /../d1 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -1896,7 +1902,7 @@ $at_traceon at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -1977,7 +1983,7 @@ recode /../d2 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -2186,7 +2192,7 @@ $at_traceon at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -2267,7 +2273,7 @@ recode /../d4 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -2476,7 +2482,7 @@ $at_traceon at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -2565,7 +2571,7 @@ recode /../x1 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -2781,7 +2787,7 @@ $at_traceon at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -2866,7 +2872,7 @@ recode /../x2 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -3078,7 +3084,7 @@ $at_traceon at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -3159,7 +3165,7 @@ recode /../x4 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -3366,7 +3372,7 @@ $at_traceon at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -3455,7 +3461,7 @@ recode /../o1 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -3671,7 +3677,7 @@ $at_traceon at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -3756,7 +3762,7 @@ recode /../o2 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -3968,7 +3974,7 @@ $at_traceon at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -4053,7 +4059,7 @@ recode /../o4 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -4267,7 +4273,7 @@ $at_traceon at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -4343,7 +4349,7 @@ recode /../64 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -4545,7 +4551,7 @@ recode qp..x1 < $at_srcdir/quoted-data at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -4721,7 +4727,7 @@ recode ../,bambara/qp..t-bambara/64 < example at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -4743,7 +4749,7 @@ recode ../,t-bambara/64..bambara/qp < transcript at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -4824,7 +4830,7 @@ recode ../,fulfulde/qp..t-fulfulde/64 < example at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -4846,7 +4852,7 @@ recode ../,t-fulfulde/64..fulfulde/qp < transcript at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -4935,7 +4941,7 @@ recode ../,lingala/qp..t-lingala/64 < example at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -4957,7 +4963,7 @@ recode ../,t-lingala/64..lingala/qp < transcript at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -5040,7 +5046,7 @@ recode ../,sango/qp..t-sango/64 < example at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -5062,7 +5068,7 @@ recode ../,t-sango/64..sango/qp < transcript at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -5140,7 +5146,7 @@ recode ../,wolof/qp..t-wolof/64 < example at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -5162,7 +5168,7 @@ recode ../,t-wolof/64..wolof/qp < transcript at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -5227,7 +5233,7 @@ $at_traceon recode co..l1 < /dev/null at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -5268,31 +5274,31 @@ if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf stdout stderr # Snippet )c55) - echo debug.m4:3 > at-check-line + echo testdump.m4:3 > at-check-line if test -n "$at_verbose"; then echo 'testing testing and counting' echo $at_n " $at_c" fi - echo $at_n "55. $srcdir/debug.m4:3 $at_c" + echo $at_n "55. $srcdir/testdump.m4:3 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d55( # Testing testing and counting # Snippet )d55) # Snippet (s55( -# starting from `debug.m4:3'. +# starting from `testdump.m4:3'. $at_traceon $at_traceoff test -n "$at_verbose" \ - && echo "$srcdir/debug.m4:11: testing..." -echo debug.m4:11 > at-check-line + && echo "$srcdir/testdump.m4:11: testing..." +echo testdump.m4:11 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode test7..x,us..count < /dev/null at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -5309,14 +5315,14 @@ $at_traceon $at_traceoff test -n "$at_verbose" \ - && echo "$srcdir/debug.m4:18: testing..." -echo debug.m4:18 > at-check-line + && echo "$srcdir/testdump.m4:18: testing..." +echo testdump.m4:18 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode test8..x,us..count < /dev/null at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -5333,14 +5339,14 @@ $at_traceon $at_traceoff test -n "$at_verbose" \ - && echo "$srcdir/debug.m4:26: testing..." -echo debug.m4:26 > at-check-line + && echo "$srcdir/testdump.m4:26: testing..." +echo testdump.m4:26 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode test15..x2,us..count < /dev/null at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -5358,14 +5364,14 @@ $at_traceon $at_traceoff test -n "$at_verbose" \ - && echo "$srcdir/debug.m4:34: testing..." -echo debug.m4:34 > at-check-line + && echo "$srcdir/testdump.m4:34: testing..." +echo testdump.m4:34 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode test16..x2,us..count < /dev/null at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff @@ -5575,7 +5581,7 @@ recode l1/qp..u8/x < $at_srcdir/quoted-data at_status=$? if test $at_status != 0; then - test -n "$at_verbose" && cat stderr >&6 + test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff -- 2.40.0