summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changes521
-rwxr-xr-xConfigure20
-rw-r--r--INSTALL78
-rw-r--r--MANIFEST20
-rw-r--r--NetWare/nw5.c2
-rw-r--r--Porting/check83.pl14
-rw-r--r--cygwin/cygwin.c2
-rw-r--r--djgpp/djgpp.c2
-rw-r--r--embed.fnc2
-rw-r--r--embed.h4
-rw-r--r--embedvar.h3
-rw-r--r--ext/B/t/xref.t11
-rw-r--r--ext/Encode/AUTHORS17
-rw-r--r--ext/Encode/CN/CN.pm26
-rw-r--r--ext/Encode/Changes57
-rw-r--r--ext/Encode/Encode.pm473
-rw-r--r--ext/Encode/Encode.xs8
-rw-r--r--ext/Encode/Encode/euc-jp-0212.enc7
-rw-r--r--ext/Encode/Encode/euc-jp.ucm6121
-rw-r--r--ext/Encode/JP/JP.pm35
-rw-r--r--ext/Encode/JP/Makefile.PL3
-rw-r--r--ext/Encode/KR/KR.pm20
-rw-r--r--ext/Encode/MANIFEST347
-rw-r--r--ext/Encode/README4
-rw-r--r--ext/Encode/TW/TW.pm19
-rw-r--r--ext/Encode/lib/Encode/CN/HZ.pm2
-rw-r--r--ext/Encode/lib/Encode/Description.pod821
-rw-r--r--ext/Encode/lib/Encode/Encoding.pm177
-rw-r--r--ext/Encode/lib/Encode/Internal.pm3
-rw-r--r--ext/Encode/lib/Encode/JP/Constants.pm6
-rw-r--r--ext/Encode/lib/Encode/JP/H2Z.pm6
-rw-r--r--ext/Encode/lib/Encode/JP/ISO_2022_JP.pm4
-rw-r--r--ext/Encode/lib/Encode/JP/JIS.pm4
-rw-r--r--ext/Encode/lib/Encode/Tcl.pm6
-rw-r--r--ext/Encode/lib/Encode/Tcl/Escape.pm11
-rw-r--r--ext/Encode/lib/Encode/Tcl/Extended.pm170
-rw-r--r--ext/Encode/lib/Encode/Tcl/Table.pm6
-rw-r--r--ext/Encode/lib/Encode/Unicode.pm3
-rw-r--r--ext/Encode/lib/Encode/XS.pm4
-rw-r--r--ext/Encode/lib/Encode/iso10646_1.pm3
-rw-r--r--ext/Encode/lib/Encode/ucs2_le.pm3
-rw-r--r--ext/Encode/lib/Encode/utf8.pm3
-rw-r--r--ext/Encode/t/CJKalias.t35
-rw-r--r--ext/Encode/t/CN.t2
-rw-r--r--ext/Encode/t/Encode.t2
-rw-r--r--ext/Encode/t/JP.t55
-rw-r--r--ext/Encode/t/TW.t2
-rw-r--r--ext/Encode/t/Tcl.t29
-rw-r--r--ext/Encode/t/japanese.pl6
-rw-r--r--ext/Encode/t/jisx0208.euc (renamed from ext/Encode/t/table.euc)0
-rw-r--r--ext/Encode/t/jisx0208.ref (renamed from ext/Encode/t/table.ref)0
-rw-r--r--ext/Encode/t/jisx0212.euc288
-rw-r--r--ext/Encode/t/jisx0212.ref288
-rw-r--r--ext/Fcntl/Makefile.PL1
-rw-r--r--ext/File/Glob/Makefile.PL1
-rw-r--r--ext/GDBM_File/Makefile.PL1
-rw-r--r--ext/I18N/Langinfo/Makefile.PL1
-rw-r--r--ext/I18N/Langinfo/fallback/const-c.inc780
-rw-r--r--ext/I18N/Langinfo/fallback/const-xs.inc (renamed from ext/I18N/Langinfo/fallback.xs)0
-rw-r--r--ext/POSIX/Makefile.PL3
-rw-r--r--ext/Socket/Makefile.PL1
-rw-r--r--ext/Sys/Syslog/Makefile.PL1
-rw-r--r--ext/Sys/Syslog/Syslog.pm377
-rw-r--r--ext/Unicode/Normalize/Changes10
-rw-r--r--ext/Unicode/Normalize/Normalize.pm206
-rw-r--r--ext/Unicode/Normalize/Normalize.xs290
-rw-r--r--ext/Unicode/Normalize/README56
-rw-r--r--ext/Unicode/Normalize/mkheader407
-rw-r--r--ext/Unicode/Normalize/t/func.t61
-rw-r--r--ext/attrs/attrs.xs2
-rw-r--r--gv.c2
-rw-r--r--hints/hpux.sh71
-rw-r--r--hints/linux.sh8
-rw-r--r--hints/solaris_2.sh2
-rw-r--r--intrpvar.h2
-rw-r--r--lib/ExtUtils/t/Constant.t (renamed from lib/ExtUtils/t/ExtUtils.t)3
-rw-r--r--lib/Getopt/Long.pm40
-rw-r--r--lib/Getopt/Long/CHANGES9
-rw-r--r--lib/Pod/Html.pm2
-rw-r--r--lib/Tie/File/t/30_defer.t1
-rw-r--r--lib/dumpvar.pl37
-rw-r--r--lib/open.pm12
-rw-r--r--lib/perl5db.pl12
-rw-r--r--locale.c39
-rw-r--r--os2/os2.c12
-rw-r--r--patchlevel.h2
-rw-r--r--perl.c16
-rw-r--r--perlapi.h2
-rw-r--r--pod/perldebguts.pod10
-rw-r--r--pod/perldebug.pod10
-rw-r--r--pod/perldelta.pod48
-rw-r--r--pod/perlebcdic.pod18
-rw-r--r--pod/perlfaq5.pod1
-rw-r--r--pod/perlfaq6.pod2
-rw-r--r--pod/perlfunc.pod4
-rw-r--r--pod/perlguts.pod2
-rw-r--r--pod/perllocale.pod12
-rw-r--r--pod/perlport.pod3
-rw-r--r--pod/perltoc.pod390
-rw-r--r--pod/perltodo.pod4
-rw-r--r--pod/perlunicode.pod40
-rw-r--r--pod/perluniintro.pod11
-rw-r--r--proto.h2
-rw-r--r--reentr.h146
-rw-r--r--reentr.pl19
-rw-r--r--regcomp.c76
-rw-r--r--regcomp.h6
-rw-r--r--regexec.c308
-rw-r--r--sv.c1
-rwxr-xr-xt/io/fs.t28
-rw-r--r--t/lib/1_compile.t26
-rwxr-xr-xt/op/exec.t2
-rwxr-xr-xt/op/magic.t4
-rwxr-xr-xt/op/pat.t43
-rw-r--r--vms/vms.c26
-rw-r--r--win32/Makefile8
-rw-r--r--win32/Makefile.win648
-rw-r--r--win32/win32.c4
118 files changed, 11615 insertions, 1872 deletions
diff --git a/Changes b/Changes
index cb1c4c4b26..ff6663cc48 100644
--- a/Changes
+++ b/Changes
@@ -28,6 +28,527 @@ example from http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/
Version v5.7.X Development release working toward v5.8
--------------
____________________________________________________________________________
+[ 15372] By: jhi on 2002/03/20 16:54:35
+ Log: Reapply #15336.
+ Branch: perl
+ ! ext/Encode/lib/Encode/Tcl.pm
+____________________________________________________________________________
+[ 15371] By: jhi on 2002/03/20 15:28:44
+ Log: Upgrade to Encode 0.93, from Dan Kogai.
+ Branch: perl
+ + ext/Encode/AUTHORS ext/Encode/Changes ext/Encode/t/CJKalias.t
+ ! MANIFEST ext/Encode/CN/CN.pm ext/Encode/Encode.pm
+ ! ext/Encode/JP/JP.pm ext/Encode/KR/KR.pm ext/Encode/MANIFEST
+ ! ext/Encode/README ext/Encode/TW/TW.pm
+ ! ext/Encode/lib/Encode/CN/HZ.pm
+ ! ext/Encode/lib/Encode/Encoding.pm
+ ! ext/Encode/lib/Encode/Internal.pm
+ ! ext/Encode/lib/Encode/JP/Constants.pm
+ ! ext/Encode/lib/Encode/JP/H2Z.pm
+ ! ext/Encode/lib/Encode/JP/ISO_2022_JP.pm
+ ! ext/Encode/lib/Encode/JP/JIS.pm ext/Encode/lib/Encode/Tcl.pm
+ ! ext/Encode/lib/Encode/Tcl/Escape.pm
+ ! ext/Encode/lib/Encode/Tcl/Table.pm
+ ! ext/Encode/lib/Encode/Unicode.pm ext/Encode/lib/Encode/XS.pm
+ ! ext/Encode/lib/Encode/iso10646_1.pm
+ ! ext/Encode/lib/Encode/ucs2_le.pm ext/Encode/lib/Encode/utf8.pm
+ ! ext/Encode/t/JP.t
+____________________________________________________________________________
+[ 15370] By: jhi on 2002/03/20 15:13:42
+ Log: Subject: patch for syslog
+ From: <Nick.Williams@morganstanley.com>
+ Date: Wed, 20 Mar 2002 15:54:14 +0000 (GMT)
+ Message-ID: <Pine.GSO.4.33.0203201548300.14623-200000@cwit119>
+ Branch: perl
+ ! ext/Sys/Syslog/Syslog.pm
+____________________________________________________________________________
+[ 15369] By: jhi on 2002/03/20 15:10:17
+ Log: Some failure updates.
+ Branch: perl
+ ! pod/perldelta.pod
+____________________________________________________________________________
+[ 15368] By: jhi on 2002/03/20 15:02:04
+ Log: Getopt::Long 2.29 from Johan Vromans.
+ Branch: perl
+ ! lib/Getopt/Long.pm lib/Getopt/Long/CHANGES
+____________________________________________________________________________
+[ 15367] By: jhi on 2002/03/20 14:58:56
+ Log: Rename ExtUtils.t to Constant.t, as suggested by
+ Nicholas Clark.
+ Branch: perl
+ + lib/ExtUtils/t/Constant.t
+ - lib/ExtUtils/t/ExtUtils.t
+ ! MANIFEST
+____________________________________________________________________________
+[ 15366] By: jhi on 2002/03/20 14:56:27
+ Log: Subject: [PATCH] TODO - Make Schwern Poorer
+ From: Nicholas Clark <nick@unfortu.net>
+ Date: Tue, 19 Mar 2002 22:50:28 +0000
+ Message-ID: <20020319225027.GF311@Bagpuss.unfortu.net>
+ Branch: perl
+ ! t/lib/1_compile.t
+____________________________________________________________________________
+[ 15365] By: jhi on 2002/03/20 14:47:15
+ Log: Subject: Re: The story of O [PATCH]
+ From: Richard.Foley@t-online.de (Richard Foley)
+ Date: Sun, 17 Mar 2002 08:37:26 +0100
+ Message-ID: <16mUNX-293TDkC@fwd08.sul.t-online.com>
+ Branch: perl
+ ! lib/perl5db.pl
+____________________________________________________________________________
+[ 15364] By: jhi on 2002/03/20 14:43:11
+ Log: Mention the external modules Encode::HanExtra and
+ PadWalker.
+ Branch: perl
+ ! pod/perldelta.pod
+____________________________________________________________________________
+[ 15363] By: jhi on 2002/03/20 14:38:23
+ Log: Subject: [PATCH] List lexicals from debugger
+ From: Peter Scott <Peter@PSDT.com>
+ Date: Tue, 19 Mar 2002 12:28:52 -0800
+ Message-id: <4.3.2.7.2.20020319101746.00aa7aa0@shell2.webquarry.com>
+ Branch: perl
+ ! lib/dumpvar.pl lib/perl5db.pl pod/perldebug.pod
+____________________________________________________________________________
+[ 15362] By: jhi on 2002/03/20 14:37:05
+ Log: Tweaks from Autrijus Tang: should use euc-tw for Taiwan,
+ and :encoding(xxx) was errorneously parsed.
+ Branch: perl
+ ! lib/open.pm
+____________________________________________________________________________
+[ 15361] By: jhi on 2002/03/20 14:34:38
+ Log: Subject: [PATCH bleadperl] exec.t tweak
+ From: Nikola Knezevic <indy@tesla.rcub.bg.ac.yu>
+ Date: Wed, 20 Mar 2002 01:21:40 +0100
+ Message-ID: <18918217607.20020320012140@tesla.rcub.bg.ac.yu>
+
+ 4NT returns 2 as error-code for nonexistant file.
+ Branch: perl
+ ! t/op/exec.t
+____________________________________________________________________________
+[ 15360] By: jhi on 2002/03/20 14:33:09
+ Log: minor Tie::File test patch to make win32 happier, from mjd.
+ Branch: perl
+ ! lib/Tie/File/t/30_defer.t
+____________________________________________________________________________
+[ 15359] By: jhi on 2002/03/20 14:31:53
+ Log: Subject: [PATCH bleadperl] magic.t tweak
+ From: Nikola Knezevic <indy@tesla.rcub.bg.ac.yu>
+ Date: Wed, 20 Mar 2002 00:39:16 +0100
+ Message-ID: <14415673404.20020320003916@tesla.rcub.bg.ac.yu>
+ Branch: perl
+ ! t/op/magic.t
+____________________________________________________________________________
+[ 15358] By: jhi on 2002/03/20 14:23:46
+ Log: Typo fix from Andreas Koenig, plus a tweak.
+ Branch: perl
+ ! pod/perlunicode.pod
+____________________________________________________________________________
+[ 15357] By: jhi on 2002/03/20 14:21:33
+ Log: Sigh. The _GNU_SOURCE is needed for the struct crypt_data
+ in Mandrake 8.2. Now we need to figure out a way not to
+ unbreak Apache.
+ Branch: perl
+ ! hints/linux.sh
+____________________________________________________________________________
+[ 15356] By: jhi on 2002/03/20 13:59:58
+ Log: Fix for "UTF-8 bug with s///" from Hugo.
+ Branch: perl
+ ! embed.fnc embed.h proto.h regcomp.c regcomp.h regexec.c sv.c
+ ! t/op/pat.t
+____________________________________________________________________________
+[ 15355] By: jhi on 2002/03/20 02:23:23
+ Log: metaconfig unit change for #15354.
+ Branch: metaconfig
+ ! U/threads/usethreads.U
+____________________________________________________________________________
+[ 15354] By: jhi on 2002/03/20 02:23:01
+ Log: Installation updates on threads and perlio.
+ Branch: perl
+ ! Configure INSTALL
+____________________________________________________________________________
+[ 15353] By: jhi on 2002/03/20 01:17:27
+ Log: Tpo.
+ Branch: perl
+ ! pod/perlfaq6.pod
+____________________________________________________________________________
+[ 15352] By: jhi on 2002/03/20 01:15:54
+ Log: Regen modlib and toc.
+ Branch: perl
+ ! pod/perlmodlib.pod pod/perltoc.pod
+____________________________________________________________________________
+[ 15351] By: jhi on 2002/03/20 01:12:28
+ Log: Whitespace tweaks.
+ Branch: perl
+ ! pod/perldebguts.pod pod/perlfaq5.pod pod/perlfunc.pod
+ ! pod/perltodo.pod pod/perlunicode.pod
+____________________________________________________________________________
+[ 15350] By: jhi on 2002/03/20 00:55:54
+ Log: If it looks like UTF-8 (either nl_langinfo or locale variables),
+ think UTF-8, embrace your inner UTF-8, as suggested by Larry.
+ (And as suggested by Markus Kuhn.)
+
+ While we are at it, document also the case of
+ mixed hash keys as a known potential troublemaker.
+ (Since it's locale-related, sometimes.)
+ Branch: perl
+ ! embedvar.h intrpvar.h lib/open.pm locale.c perl.c perlapi.h
+ ! pod/perldelta.pod pod/perllocale.pod pod/perlunicode.pod
+ ! pod/perluniintro.pod
+____________________________________________________________________________
+[ 15349] By: jhi on 2002/03/20 00:47:17
+ Log: Surely a typo.
+ Branch: perl
+ ! gv.c
+____________________________________________________________________________
+[ 15348] By: jhi on 2002/03/19 22:05:29
+ Log: Take two.
+ Branch: perl
+ + ext/Encode/t/jisx0208.euc ext/Encode/t/jisx0208.ref
+ + ext/Encode/t/jisx0212.euc ext/Encode/t/jisx0212.ref
+____________________________________________________________________________
+[ 15347] By: jhi on 2002/03/19 22:04:45
+ Log: Let's try this from scratch.
+ Branch: perl
+ - ext/Encode/t/jisx0208.euc ext/Encode/t/jisx0208.ref
+ - ext/Encode/t/jisx0212.euc ext/Encode/t/jisx0212.ref
+____________________________________________________________________________
+[ 15346] By: jhi on 2002/03/19 21:59:14
+ Log: I could do this all day...
+ Branch: perl
+ ! ext/Encode/t/jisx0208.euc ext/Encode/t/jisx0208.ref
+ ! ext/Encode/t/jisx0212.euc ext/Encode/t/jisx0212.ref
+____________________________________________________________________________
+[ 15345] By: jhi on 2002/03/19 21:54:20
+ Log: Grrr.
+ Branch: perl
+ ! ext/Encode/t/jisx0208.euc ext/Encode/t/jisx0208.ref
+ ! ext/Encode/t/jisx0212.euc ext/Encode/t/jisx0212.ref
+____________________________________________________________________________
+[ 15344] By: jhi on 2002/03/19 21:49:47
+ Log: Subject: Re: Nearly OK for cygwin@15318
+ From: John Peacock <jpeacock@rowman.com>
+ Date: Tue, 19 Mar 2002 15:58:08 -0500
+ Message-ID: <3C97A660.3060302@rowman.com>
+ Branch: perl
+ ! pod/perlport.pod
+____________________________________________________________________________
+[ 15343] By: jhi on 2002/03/19 21:47:02
+ Log: Subject: Re: Nearly OK for cygwin@15318
+ From: <slaven.rezic@berlin.de>
+ Date: Tue, 19 Mar 2002 21:47:49 +0100
+ Message-Id: <20020319204958.PTWF27460.mailoutvl21@[192.168.139.30]>
+
+ Subject: Re: Nearly OK for cygwin@15318
+ From: <slaven.rezic@berlin.de>
+ Date: Tue, 19 Mar 2002 21:37:18 +0100
+ Message-Id: <20020319203927.PTPI27460.mailoutvl21@[192.168.139.30]>
+ Branch: perl
+ ! pod/perlport.pod t/io/fs.t
+____________________________________________________________________________
+[ 15342] By: jhi on 2002/03/19 21:41:12
+ Log: D'oh.
+ Branch: perl
+ + ext/I18N/Langinfo/fallback/const-c.inc
+ + ext/I18N/Langinfo/fallback/const-xs.inc
+____________________________________________________________________________
+[ 15341] By: jhi on 2002/03/19 21:40:49
+ Log: Subject: [PATCH] proper fallback for I18N::Langinfo
+ From: Nicholas Clark <nick@unfortu.net>
+ Date: Tue, 19 Mar 2002 22:37:08 +0000
+ Message-ID: <20020319223707.GE311@Bagpuss.unfortu.net>
+
+ Subject: Re: [PATCH] proper fallback for I18N::Langinfo
+ From: Nicholas Clark <nick@ccl4.org>
+ Date: Tue, 19 Mar 2002 22:39:55 +0000
+ Message-ID: <20020319223954.G94831@plum.flirble.org>
+ Branch: perl
+ - ext/I18N/Langinfo/fallback.xs
+ ! MANIFEST
+____________________________________________________________________________
+[ 15340] By: jhi on 2002/03/19 21:31:16
+ Log: Text, not binary.
+ Branch: perl
+ ! ext/Encode/t/jisx0208.euc ext/Encode/t/jisx0208.ref
+ ! ext/Encode/t/jisx0212.euc ext/Encode/t/jisx0212.ref
+____________________________________________________________________________
+[ 15339] By: jhi on 2002/03/19 21:26:10
+ Log: Subject: Re: perl@15244
+ From: "H.Merijn Brand" <h.m.brand@hccnet.nl>
+ Date: Mon, 18 Mar 2002 17:37:31 +0100
+ Message-Id: <20020318173508.8D96.H.M.BRAND@hccnet.nl>
+
+ (Goedendag: Dutch whitespace police)
+ Branch: perl
+ ! hints/hpux.sh
+____________________________________________________________________________
+[ 15338] By: jhi on 2002/03/19 21:10:29
+ Log: Subject: [PATCH] Re: [ID 20020305.026] Not OK: perl v5.7.3 +DEVEL15046 on sun4-solaris 2.7
+ From: Nicholas Clark <nick@unfortu.net>
+ Date: Tue, 19 Mar 2002 21:52:47 +0000
+ Message-ID: <20020319215246.GC311@Bagpuss.unfortu.net>
+ Branch: perl
+ ! ext/Fcntl/Makefile.PL ext/File/Glob/Makefile.PL
+ ! ext/GDBM_File/Makefile.PL ext/I18N/Langinfo/Makefile.PL
+ ! ext/POSIX/Makefile.PL ext/Socket/Makefile.PL
+ ! ext/Sys/Syslog/Makefile.PL
+____________________________________________________________________________
+[ 15337] By: jhi on 2002/03/19 20:09:22
+ Log: More pathname portability checks.
+ Branch: perl
+ ! Porting/check83.pl
+____________________________________________________________________________
+[ 15336] By: jhi on 2002/03/19 18:41:50
+ Log: Begone, Encode::Tcl::Extended.
+ Branch: perl
+ ! ext/Encode/lib/Encode/Tcl.pm
+____________________________________________________________________________
+[ 15335] By: jhi on 2002/03/19 18:40:10
+ Log: This is like trying to put the shaving cream
+ back to the can...
+ Branch: perl
+ ! hints/linux.sh
+____________________________________________________________________________
+[ 15334] By: jhi on 2002/03/19 18:31:59
+ Log: With the -D_SVID_SOURCE Debian 2.2 dies on conflicting
+ types of usleep(). Fun, fun. fun.
+ Branch: perl
+ ! hints/linux.sh
+____________________________________________________________________________
+[ 15333] By: jhi on 2002/03/19 18:25:21
+ Log: Sarathy's new suggestion for Linux threading flags.
+ Branch: perl
+ ! hints/linux.sh
+____________________________________________________________________________
+[ 15332] By: jhi on 2002/03/19 18:23:30
+ Log: Rename euc-jp-012 as euc-jp, as suggested by Dan Kogai.
+ Branch: perl
+ - ext/Encode/Encode/euc-jp-0212.ucm
+ ! MANIFEST ext/Encode/Encode/euc-jp.ucm
+ ! ext/Encode/JP/Makefile.PL ext/Encode/MANIFEST
+____________________________________________________________________________
+[ 15331] By: jhi on 2002/03/19 18:18:21
+ Log: Subject: [PATCH bleadperl] Add targer _test to win32 makefiles
+ From: Nikola Knezevic <indy@tesla.rcub.bg.ac.yu>
+ Date: Tue, 19 Mar 2002 00:42:22 +0100
+ Message-ID: <1199171923.20020319004222@tesla.rcub.bg.ac.yu>
+ Branch: perl
+ ! win32/Makefile win32/Makefile.win64 win32/makefile.mk
+____________________________________________________________________________
+[ 15330] By: jhi on 2002/03/19 18:00:48
+ Log: "+" is not a valid filename character in VMS.
+ Branch: perl
+ + ext/Encode/Encode/euc-jp-0212.ucm
+ - ext/Encode/Encode/euc-jp+0212.ucm
+ ! ext/Encode/JP/Makefile.PL ext/Encode/MANIFEST
+____________________________________________________________________________
+[ 15329] By: jhi on 2002/03/19 15:49:12
+ Log: Update Changes.
+ Branch: perl
+ ! Changes patchlevel.h
+____________________________________________________________________________
+[ 15328] By: jhi on 2002/03/19 15:25:58
+ Log: Take away _GNU_SOURCE since that does not seem
+ to play well with other software (like Apache),
+ just hint away the WHOAs.
+ Branch: perl
+ ! hints/linux.sh
+____________________________________________________________________________
+[ 15327] By: jhi on 2002/03/19 15:17:12
+ Log: metaconfig unit change for #15326.
+ Branch: metaconfig
+ ! U/threads/d_crypt_r.U
+____________________________________________________________________________
+[ 15326] By: jhi on 2002/03/19 15:16:43
+ Log: Support crypt_r(const char*,const char*, CRYPTD*).
+ Branch: perl
+ ! Configure reentr.h reentr.pl
+____________________________________________________________________________
+[ 15325] By: jhi on 2002/03/19 14:54:21
+ Log: VMS acrobatics from Peter Prymmer.
+ Branch: perl
+ ! lib/ExtUtils/t/ExtUtils.t
+____________________________________________________________________________
+[ 15324] By: jhi on 2002/03/19 14:51:56
+ Log: Subject: [PATCH lib/Pod/Html.pm] remove warning
+ From: Stas Bekman <stas@stason.org>
+ Date: Tue, 19 Mar 2002 13:14:53 +0800 (SGT)
+ Message-ID: <Pine.LNX.4.44.0203191311530.14113-100000@hope.stason.org>
+ Branch: perl
+ ! lib/Pod/Html.pm
+____________________________________________________________________________
+[ 15323] By: jhi on 2002/03/19 14:51:09
+ Log: Subject: [PATCH] Re: ext/B/t/xref.t @15300 on VMS
+ From: Rafael Garcia-Suarez <rgarciasuarez@free.fr>
+ Date: Tue, 19 Mar 2002 10:49:27 +0100
+ Message-ID: <20020319104927.C705@rafael>
+ Branch: perl
+ ! ext/B/t/xref.t
+____________________________________________________________________________
+[ 15322] By: jhi on 2002/03/19 14:50:02
+ Log: Integrate perlio;
+
+ Move docs for Encode::valid_utf8 (which does not exist)
+ to be docs for utf8::valid() (which does).
+ Branch: perl
+ !> ext/Encode/Encode.pm lib/utf8.pm
+____________________________________________________________________________
+[ 15321] By: jhi on 2002/03/19 14:48:57
+ Log: Remove Encode::Tcl::Extended, suggested by
+ SADAHIRO Tomoyuki.
+ Branch: perl
+ - ext/Encode/Encode/euc-jp-0212.enc
+ - ext/Encode/lib/Encode/Tcl/Extended.pm
+ ! MANIFEST ext/Encode/MANIFEST
+ ! ext/Encode/lib/Encode/Tcl/Escape.pm
+ ! ext/Encode/lib/Encode/Tcl/Table.pm ext/Encode/t/Tcl.t
+____________________________________________________________________________
+[ 15320] By: jhi on 2002/03/19 14:44:18
+ Log: Encode 0.90 (the one with jisx0212-1990) from Dan Kogai.
+ Branch: perl
+ + ext/Encode/Encode/euc-jp+0212.ucm ext/Encode/t/jisx0208.euc
+ + ext/Encode/t/jisx0208.ref ext/Encode/t/jisx0212.euc
+ + ext/Encode/t/jisx0212.ref
+ - ext/Encode/t/japanese.pl ext/Encode/t/table.euc
+ - ext/Encode/t/table.ref
+ ! MANIFEST ext/Encode/CN/CN.pm ext/Encode/Encode.pm
+ ! ext/Encode/Encode.xs ext/Encode/JP/JP.pm
+ ! ext/Encode/JP/Makefile.PL ext/Encode/KR/KR.pm
+ ! ext/Encode/MANIFEST ext/Encode/TW/TW.pm
+ ! ext/Encode/lib/Encode/CN/HZ.pm
+ ! ext/Encode/lib/Encode/Encoding.pm
+ ! ext/Encode/lib/Encode/Internal.pm
+ ! ext/Encode/lib/Encode/JP/Constants.pm
+ ! ext/Encode/lib/Encode/JP/H2Z.pm
+ ! ext/Encode/lib/Encode/JP/ISO_2022_JP.pm
+ ! ext/Encode/lib/Encode/JP/JIS.pm ext/Encode/lib/Encode/Tcl.pm
+ ! ext/Encode/lib/Encode/Tcl/Escape.pm
+ ! ext/Encode/lib/Encode/Tcl/Extended.pm
+ ! ext/Encode/lib/Encode/Tcl/Table.pm
+ ! ext/Encode/lib/Encode/Unicode.pm ext/Encode/lib/Encode/XS.pm
+ ! ext/Encode/lib/Encode/iso10646_1.pm
+ ! ext/Encode/lib/Encode/ucs2_le.pm ext/Encode/lib/Encode/utf8.pm
+ ! ext/Encode/t/CN.t ext/Encode/t/Encode.t ext/Encode/t/JP.t
+ ! ext/Encode/t/TW.t ext/Encode/t/Tcl.t
+____________________________________________________________________________
+[ 15319] By: jhi on 2002/03/19 14:36:41
+ Log: constness+signedness nit.
+ Branch: perl
+ ! ext/Unicode/Normalize/Normalize.xs
+____________________________________________________________________________
+[ 15318] By: jhi on 2002/03/19 14:04:55
+ Log: Update to Unicode::Normalize 0.15 (+ the EBCDIC guards)
+ Branch: perl
+ ! ext/Unicode/Normalize/Changes
+ ! ext/Unicode/Normalize/Normalize.pm
+ ! ext/Unicode/Normalize/Normalize.xs
+ ! ext/Unicode/Normalize/README ext/Unicode/Normalize/mkheader
+ ! ext/Unicode/Normalize/t/func.t
+____________________________________________________________________________
+[ 15317] By: jhi on 2002/03/19 13:56:27
+ Log: Split the ebcdic details to perlebcdic.
+ Branch: perl
+ ! pod/perlebcdic.pod pod/perluniintro.pod
+____________________________________________________________________________
+[ 15316] By: jhi on 2002/03/19 13:31:55
+ Log: Be explicit.
+ Branch: perl
+ ! pod/perluniintro.pod
+____________________________________________________________________________
+[ 15315] By: nick on 2002/03/19 09:24:18
+ Log: Integrate mainline
+ Branch: perlio
+ +> ext/List/Util/t/openhan.t
+ !> (integrate 53 files)
+____________________________________________________________________________
+[ 15314] By: nick on 2002/03/19 07:39:07
+ Log: Move docs for Encode::valid_utf8 (which does not exist)
+ to be docs for utf8::valid() (which does).
+ Branch: perlio
+ ! ext/Encode/Encode.pm lib/utf8.pm
+____________________________________________________________________________
+[ 15313] By: jhi on 2002/03/19 04:58:22
+ Log: Update the Unicode vs EBCDIC situation.
+ Branch: perl
+ ! pod/perlebcdic.pod pod/perluniintro.pod
+____________________________________________________________________________
+[ 15312] By: jhi on 2002/03/19 04:01:39
+ Log: Subject: [DOC PATCH] end.t (was RE: perl@15300 )
+ From: Robert Spier <rspier@pobox.com>
+ Date: Mon, 18 Mar 2002 19:22:55 -0800
+ Message-ID: <15510.44815.383439.823671@rls.cx>
+ Branch: perl
+ ! ext/threads/t/end.t
+____________________________________________________________________________
+[ 15311] By: jhi on 2002/03/19 04:00:38
+ Log: UTF-8 walk errors that become visible in EBCDIC.
+ Branch: perl
+ ! regexec.c
+____________________________________________________________________________
+[ 15310] By: jhi on 2002/03/19 03:48:27
+ Log: s/regcinclasslen/reginclass/ and remove the old
+ reginclass since nothing is using it.
+ Branch: perl
+ ! embed.fnc embed.h proto.h regexec.c
+____________________________________________________________________________
+[ 15309] By: jhi on 2002/03/18 22:18:37
+ Log: Close the file so it can be (a) removed (b) reopened.
+ Branch: perl
+ ! ext/B/t/xref.t
+____________________________________________________________________________
+[ 15308] By: jhi on 2002/03/18 22:17:25
+ Log: Subject: [PATCH utf8.c B.xs] B::perlstring and unicode
+ From: Rafael Garcia-Suarez <rgarciasuarez@free.fr>
+ Date: Mon, 18 Mar 2002 23:14:31 +0100
+ Message-ID: <20020318231431.A699@rafael>
+ Branch: perl
+ ! ext/B/B.xs utf8.c
+____________________________________________________________________________
+[ 15307] By: jhi on 2002/03/18 20:54:07
+ Log: Failed patch hunk reapplied.
+ Branch: perl
+ ! lib/Tie/File/t/32_defer_misc.t
+____________________________________________________________________________
+[ 15306] By: jhi on 2002/03/18 20:18:25
+ Log: For DEBUGGING threaded builds.
+ Branch: perl
+ ! sv.c
+____________________________________________________________________________
+[ 15305] By: jhi on 2002/03/18 19:11:43
+ Log: AUTHORS update.
+ Branch: perl
+ ! AUTHORS
+____________________________________________________________________________
+[ 15304] By: jhi on 2002/03/18 19:08:32
+ Log: Someone (*cough* *cough*) stole VMS' getpwent prototype.
+ (Fix from Craig Berry)
+ Branch: perl
+ ! pp_sys.c
+____________________________________________________________________________
+[ 15303] By: jhi on 2002/03/18 18:54:27
+ Log: Subject: [PATCH] configure.com home-grown kill() check
+ From: "Craig A. Berry" <craigberry@mac.com>
+ Date: Mon, 18 Mar 2002 13:52:59 -0600
+ Message-Id: <5.1.0.14.2.20020318134016.01c5ee00@exchi01>
+ Branch: perl
+ ! configure.com
+____________________________________________________________________________
+[ 15302] By: jhi on 2002/03/18 15:58:00
+ Log: Upgrade to Tie::File 0.50.
+ Branch: perl
+ ! lib/Tie/File.pm lib/Tie/File/t/00_version.t
+ ! lib/Tie/File/t/32_defer_misc.t
+____________________________________________________________________________
+[ 15301] By: jhi on 2002/03/18 15:54:52
+ Log: AUTHORS updates.
+ Branch: perl
+ ! AUTHORS
+____________________________________________________________________________
+[ 15300] By: jhi on 2002/03/18 14:58:27
+ Log: Update Changes.
+ Branch: perl
+ ! Changes patchlevel.h
+____________________________________________________________________________
[ 15299] By: jhi on 2002/03/18 14:53:11
Log: OS/390 update.
Branch: perl
diff --git a/Configure b/Configure
index 9678a6ee91..4cdd0c2c4f 100755
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
#
-# Generated on Mon Mar 18 16:52:30 EET 2002 [metaconfig 3.0 PL70]
+# Generated on Wed Mar 20 05:22:55 EET 2002 [metaconfig 3.0 PL70]
# (with additional metaconfig patches by perlbug@perl.org)
cat >c1$$ <<EOF
@@ -3440,16 +3440,12 @@ case "$usethreads" in
$define)
$cat <<EOM
-As of 5.5.640, Perl has two different internal threading implementations,
-the 5.005 version (5005threads) and an interpreter-based version
-(ithreads) that has one interpreter per thread. Both are very
-experimental. This arrangement exists to help developers work out
-which one is better.
+As of release 5.6, Perl has two different threading implementations,
+an interpreter-based version (ithreads) with one interpreter per
+thread, and the 5.005 version (5005threads). Both implementations
+are considered experimental, but since 5.8 ithreads somewhat less so.
+The 5005threads is effectively unmaintained.
-If you're a casual user, you probably don't want interpreter-threads
-at this time. But if you do, the 'threads' module allows their use,
-and the 'Thread' module offers an interface to both 5005threads and
-ithreads (whichever has been configured).
EOM
: Default to ithreads unless overridden on command line or with
: old config.sh
@@ -9949,6 +9945,10 @@ case "$d_crypt_r" in
./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
esac
case "$crypt_r_proto" in
+ ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
+ ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
+ esac
+ case "$crypt_r_proto" in
'') d_crypt_r=undef
crypt_r_proto=0
echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
diff --git a/INSTALL b/INSTALL
index 45064a6db2..dbb757afc2 100644
--- a/INSTALL
+++ b/INSTALL
@@ -719,19 +719,23 @@ line so that the hint files can make appropriate adjustments.
The default is to compile without thread support.
-As of v5.5.64, perl has two different internal threads implementations.
-The 5.005 version (5005threads) and an interpreter-based implementation
-(ithreads) with one interpreter per thread. By default, Configure selects
-ithreads if -Dusethreads is specified. However, you can select the old
-5005threads behavior instead by either
+Perl has two different internal threads implementations. The current
+model (available internally since 5.6, and as a user-level module
+since 5.8) is called interpreter-based implementation (ithreads),
+with one interpreter per thread, and explicit sharing of data.
- sh Configure -Dusethreads -Duse5005threads
+The 5.005 version (5005threads) is considered obsolete, buggy, and
+unmaintained.
+
+By default, Configure selects ithreads if -Dusethreads is specified.
-or by
- sh Configure -Dusethreads -Uuseithreads
+However, you can select the old 5005threads behavior
-Eventually (by perl v5.6.0) this internal confusion ought to disappear,
-and these options may disappear as well.
+ sh Configure -Dusethreads -Duse5005threads
+
+If you decide to use ithreads, the 'threads' module allows their use,
+and the 'Thread' module offers an interface to both 5005threads and
+ithreads (whichever has been configured).
=head2 Large file support.
@@ -801,32 +805,30 @@ and the long double support.
=head2 Selecting File IO mechanisms
Previous versions of perl used the standard IO mechanisms as defined in
-stdio.h. Versions 5.003_02 and later of perl allow alternate IO
+stdio.h. Versions 5.003_02 and later of perl allowed alternate IO
mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
the default and is the only supported mechanism.
-This PerlIO abstraction can be enabled either on the Configure command
-line with
+Starting from Perl 5.8 the default mechanism is to use the PerlIO
+abstraction, because it allows better control of I/O mechanisms,
+instead of having to work with (often, work around) vendors' I/O
+implementations.
- sh Configure -Duseperlio
+This PerlIO abstraction can be disabled either on the Configure
+command line with
-or interactively at the appropriate Configure prompt.
+ sh Configure -Uuseperlio
-If you choose to use the PerlIO abstraction layer, there are two
-(experimental) possibilities for the underlying IO calls. These have been
-tested to some extent on some platforms, but are not guaranteed to work
-everywhere.
-
-=over 4
-
-=item 1.
+or interactively at the appropriate Configure prompt.
-AT&T's "sfio". This has superior performance to stdio.h in many
-cases, and is extensible by the use of "discipline" modules. Sfio
-currently only builds on a subset of the UNIX platforms perl supports.
-Because the data structures are completely different from stdio, perl
-extension modules or external libraries may not work. This
-configuration exists to allow these issues to be worked on.
+With the PerlIO abstraction layer, there is another possibility for
+the underlying IO calls, AT&T's "sfio". This has superior performance
+to stdio.h in many cases, and is extensible by the use of "discipline"
+modules ("Native" PerlIO has them too). Sfio currently only builds on
+a subset of the UNIX platforms perl supports. Because the data
+structures are completely different from stdio, perl extension modules
+or external libraries may not work. This configuration exists to
+allow these issues to be worked on.
This option requires the 'sfio' package to have been built and installed.
The latest sfio is available from http://www.research.att.com/sw/tools/sfio/
@@ -846,24 +848,6 @@ Configure should detect this problem and warn you about problems with
_exit vs. exit. If you have this problem, the fix is to go back to
your sfio sources and correct iffe's guess about atexit.
-=item 2.
-
-Normal stdio IO, but with all IO going through calls to the PerlIO
-abstraction layer. This configuration can be used to check that perl and
-extension modules have been correctly converted to use the PerlIO
-abstraction.
-
-This configuration should work on all platforms (but might not).
-
-You select this option via:
-
- sh Configure -Duseperlio -Uusesfio
-
-If you have already selected -Duseperlio, and if Configure does not
-detect sfio, then this will be the default suggested by Configure.
-
-=back
-
=head2 SOCKS
Perl can be configured to be 'socksified', that is, to use the SOCKS
diff --git a/MANIFEST b/MANIFEST
index 07ee1a336a..04a4628435 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -196,13 +196,15 @@ ext/DynaLoader/hints/openbsd.pl Hint for DynaLoader for named architecture
ext/DynaLoader/Makefile.PL Dynamic Loader makefile writer
ext/DynaLoader/README Dynamic Loader notes and intro
ext/DynaLoader/XSLoader_pm.PL Simple XS Loader perl module
+ext/Encode/AUTHORS Encode extension
+ext/Encode/Changes Encode extension
ext/Encode/CN/CN.pm Encode extension
ext/Encode/CN/Makefile.PL Encode extension
ext/Encode/compile Encode extension
ext/Encode/encengine.c Encode extension
ext/Encode/encode.h Encode extension
ext/Encode/Encode.pm Encode extension
-ext/Encode/Encode.xs Encode extension
+ext/Encode/Encode.xs Encode extension
ext/Encode/Encode/11643-1.enc Encode table
ext/Encode/Encode/11643-2.enc Encode table
ext/Encode/Encode/2022-cn.enc Encode table
@@ -289,7 +291,6 @@ ext/Encode/Encode/cp950.enc Encode table
ext/Encode/Encode/dingbats.enc Encode table
ext/Encode/Encode/dingbats.ucm Encode table
ext/Encode/Encode/euc-cn.enc Encode table
-ext/Encode/Encode/euc-jp-0212.enc Encode table
ext/Encode/Encode/euc-jp.enc Encode table
ext/Encode/Encode/euc-jp.ucm Encode table
ext/Encode/Encode/euc-kr.enc Encode table
@@ -339,6 +340,7 @@ ext/Encode/JP/Makefile.PL Encode extension
ext/Encode/KR/KR.pm Encode extension
ext/Encode/KR/Makefile.PL Encode extension
ext/Encode/lib/Encode/CN/HZ.pm Encode extension
+ext/Encode/lib/Encode/Description.pod Encode extension
ext/Encode/lib/Encode/Encoding.pm Encode extension
ext/Encode/lib/Encode/Internal.pm Encode extension
ext/Encode/lib/Encode/iso10646_1.pm Encode extension
@@ -348,7 +350,6 @@ ext/Encode/lib/Encode/JP/ISO_2022_JP.pm Encode extension
ext/Encode/lib/Encode/JP/JIS.pm Encode extension
ext/Encode/lib/Encode/Tcl.pm Encode extension
ext/Encode/lib/Encode/Tcl/Escape.pm Encode extension
-ext/Encode/lib/Encode/Tcl/Extended.pm Encode extension
ext/Encode/lib/Encode/Tcl/Table.pm Encode extension
ext/Encode/lib/Encode/ucs2_le.pm Encode extension
ext/Encode/lib/Encode/Unicode.pm Encode extension
@@ -358,12 +359,14 @@ ext/Encode/lib/EncodeFormat.pod Encode extension
ext/Encode/Makefile.PL Encode extension makefile writer
ext/Encode/MANIFEST Encode extension
ext/Encode/README Encode extension
+ext/Encode/t/CJKalias.t Encode extension
ext/Encode/t/CN.t Encode extension test
ext/Encode/t/Encode.t Encode extension test
-ext/Encode/t/japanese.pl Encode extension
+ext/Encode/t/jisx0208.euc Encode extension test
+ext/Encode/t/jisx0208.ref Encode extension test
+ext/Encode/t/jisx0212.euc Encode extension test
+ext/Encode/t/jisx0212.ref Encode extension test
ext/Encode/t/JP.t Encode extension test
-ext/Encode/t/table.euc Encode extension test
-ext/Encode/t/table.ref Encode extension test
ext/Encode/t/Tcl.t Encode extension test
ext/Encode/t/TW.t Encode extension test
ext/Encode/TW/Makefile.PL Encode extension
@@ -398,7 +401,8 @@ ext/GDBM_File/GDBM_File.xs GDBM extension external subroutines
ext/GDBM_File/hints/sco.pl Hint for GDBM_File for named architecture
ext/GDBM_File/Makefile.PL GDBM extension makefile writer
ext/GDBM_File/typemap GDBM extension interface types
-ext/I18N/Langinfo/fallback.xs I18N::Langinfo
+ext/I18N/Langinfo/fallback/const-c.inc I18N::Langinfo
+ext/I18N/Langinfo/fallback/const-xs.inc I18N::Langinfo
ext/I18N/Langinfo/Langinfo.pm I18N::Langinfo
ext/I18N/Langinfo/Langinfo.t I18N::Langinfo
ext/I18N/Langinfo/Langinfo.xs I18N::Langinfo
@@ -992,8 +996,8 @@ lib/ExtUtils/MM_VMS.pm MakeMaker methods for VMS
lib/ExtUtils/MM_Win32.pm MakeMaker methods for Win32
lib/ExtUtils/Packlist.pm Manipulates .packlist files
lib/ExtUtils/t/Command.t See if ExtUtils::Command works (Win32 only)
+lib/ExtUtils/t/Constant.t See if ExtUtils::Constant works
lib/ExtUtils/t/Embed.t See if ExtUtils::Embed and embedding works
-lib/ExtUtils/t/ExtUtils.t See if extutils work
lib/ExtUtils/t/hints.t See if hint files are honored.
lib/ExtUtils/t/Installed.t See if ExtUtils::Installed works
lib/ExtUtils/t/Manifest.t See if ExtUtils::Manifest works
diff --git a/NetWare/nw5.c b/NetWare/nw5.c
index 743fd34fd9..66ca348c1e 100644
--- a/NetWare/nw5.c
+++ b/NetWare/nw5.c
@@ -935,7 +935,7 @@ do_aspawn(void *vreally, void **vmark, void **vsp)
if (status < 0) {
dTHR;
if (ckWARN(WARN_EXEC))
- Perl_warner(aTHX_ WARN_EXEC, "Can't spawn \"%s\": %s", argv[0], strerror(errno));
+ Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't spawn \"%s\": %s", argv[0], strerror(errno));
status = 255 * 256;
}
else
diff --git a/Porting/check83.pl b/Porting/check83.pl
index 51b2b11b8a..0522bc0d33 100644
--- a/Porting/check83.pl
+++ b/Porting/check83.pl
@@ -1,12 +1,22 @@
#!/usr/local/bin/perl
-# Check whether there are naming conflicts when names are truncated
-# to the DOSish case-ignoring 8.3 format
+# Check whether there are naming conflicts when names are truncated to
+# the DOSish case-ignoring 8.3 format, plus other portability no-nos.
sub eight_dot_three {
my ($dir, $base, $ext) = ($_[0] =~ m!^(?:(.+)/)?([^/.]+)(?:\.([^/.]+))?$!);
+ my $file = $base . defined $ext ? ".$ext" : "";
$base = substr($base, 0, 8);
$ext = substr($ext, 0, 3) if defined $ext;
+ if ($dir =~ /\./) {
+ warn "$dir: directory name contains '.'\n";
+ }
+ if ($file =~ /[^A-Za-z0-9\._-]/) {
+ warn "$file: filename contains non-portable characters\n";
+ }
+ if (length $file > 30) {
+ warn "$file: filename longer than 30 characters\n";
+ }
if (defined $dir) {
return ($dir, defined $ext ? "$dir/$base.$ext" : "$dir/$base");
} else {
diff --git a/cygwin/cygwin.c b/cygwin/cygwin.c
index 0b4dcc8ef7..0e9d07d35e 100644
--- a/cygwin/cygwin.c
+++ b/cygwin/cygwin.c
@@ -28,7 +28,7 @@ do_spawnvp (const char *path, const char * const *argv)
if (childpid < 0) {
status = -1;
if(ckWARN(WARN_EXEC))
- Perl_warner(aTHX_ WARN_EXEC,"Can't spawn \"%s\": %s",
+ Perl_warner(aTHX_ packWARN(WARN_EXEC),"Can't spawn \"%s\": %s",
path,Strerror (errno));
} else {
do {
diff --git a/djgpp/djgpp.c b/djgpp/djgpp.c
index 6aa290ec53..d770cefb96 100644
--- a/djgpp/djgpp.c
+++ b/djgpp/djgpp.c
@@ -106,7 +106,7 @@ static int
convretcode (pTHX_ int rc,char *prog,int fl)
{
if (rc < 0 && ckWARN(WARN_EXEC))
- Perl_warner(aTHX_ WARN_EXEC,"Can't %s \"%s\": %s",
+ Perl_warner(aTHX_ packWARN(WARN_EXEC),"Can't %s \"%s\": %s",
fl ? "exec" : "spawn",prog,Strerror (errno));
if (rc >= 0)
return rc << 8;
diff --git a/embed.fnc b/embed.fnc
index 16c006616e..e9841dd852 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -1167,6 +1167,8 @@ s |U8* |reghop3 |U8 *pos|I32 off|U8 *lim
s |U8* |reghopmaybe |U8 *pos|I32 off
s |U8* |reghopmaybe3 |U8 *pos|I32 off|U8 *lim
s |char* |find_byclass |regexp * prog|regnode *c|char *s|char *strend|char *startpos|I32 norun
+s |void |to_utf8_substr |regexp * prog
+s |void |to_byte_substr |regexp * prog
#endif
#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
diff --git a/embed.h b/embed.h
index 787a045d1c..10c6a534c0 100644
--- a/embed.h
+++ b/embed.h
@@ -1088,6 +1088,8 @@
#define reghopmaybe S_reghopmaybe
#define reghopmaybe3 S_reghopmaybe3
#define find_byclass S_find_byclass
+#define to_utf8_substr S_to_utf8_substr
+#define to_byte_substr S_to_byte_substr
#endif
#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
#define deb_curcv S_deb_curcv
@@ -2639,6 +2641,8 @@
#define reghopmaybe(a,b) S_reghopmaybe(aTHX_ a,b)
#define reghopmaybe3(a,b,c) S_reghopmaybe3(aTHX_ a,b,c)
#define find_byclass(a,b,c,d,e,f) S_find_byclass(aTHX_ a,b,c,d,e,f)
+#define to_utf8_substr(a) S_to_utf8_substr(aTHX_ a)
+#define to_byte_substr(a) S_to_byte_substr(aTHX_ a)
#endif
#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
#define deb_curcv(a) S_deb_curcv(aTHX_ a)
diff --git a/embedvar.h b/embedvar.h
index 965f265280..8eccfa2e72 100644
--- a/embedvar.h
+++ b/embedvar.h
@@ -439,6 +439,7 @@
#define PL_utf8_upper (PERL_GET_INTERP->Iutf8_upper)
#define PL_utf8_xdigit (PERL_GET_INTERP->Iutf8_xdigit)
#define PL_uudmap (PERL_GET_INTERP->Iuudmap)
+#define PL_wantutf8 (PERL_GET_INTERP->Iwantutf8)
#define PL_warnhook (PERL_GET_INTERP->Iwarnhook)
#define PL_widesyscalls (PERL_GET_INTERP->Iwidesyscalls)
#define PL_xiv_arenaroot (PERL_GET_INTERP->Ixiv_arenaroot)
@@ -737,6 +738,7 @@
#define PL_utf8_upper (vTHX->Iutf8_upper)
#define PL_utf8_xdigit (vTHX->Iutf8_xdigit)
#define PL_uudmap (vTHX->Iuudmap)
+#define PL_wantutf8 (vTHX->Iwantutf8)
#define PL_warnhook (vTHX->Iwarnhook)
#define PL_widesyscalls (vTHX->Iwidesyscalls)
#define PL_xiv_arenaroot (vTHX->Ixiv_arenaroot)
@@ -1038,6 +1040,7 @@
#define PL_Iutf8_upper PL_utf8_upper
#define PL_Iutf8_xdigit PL_utf8_xdigit
#define PL_Iuudmap PL_uudmap
+#define PL_Iwantutf8 PL_wantutf8
#define PL_Iwarnhook PL_warnhook
#define PL_Iwidesyscalls PL_widesyscalls
#define PL_Ixiv_arenaroot PL_xiv_arenaroot
diff --git a/ext/B/t/xref.t b/ext/B/t/xref.t
index 8b143556e3..b1d0bc0406 100644
--- a/ext/B/t/xref.t
+++ b/ext/B/t/xref.t
@@ -1,4 +1,4 @@
-#!./perl -w
+#!./perl
BEGIN {
chdir 't' if -d 't';
@@ -6,6 +6,8 @@ BEGIN {
}
use strict;
+use warnings;
+no warnings 'once';
use Test::More tests => 14;
# line 50
@@ -13,12 +15,14 @@ use_ok( 'B::Xref' );
my $file = 'xreftest.out';
+open SAVEOUT, ">&STDOUT" or diag $!;
+close STDOUT;
# line 100
our $compilesub = B::Xref::compile("-o$file");
ok( ref $compilesub eq 'CODE', "compile() returns a coderef ($compilesub)" );
$compilesub->(); # Compile this test script
-
-#END { unlink $file or diag "END block failed: $!" }
+close STDOUT;
+open STDOUT, ">&SAVEOUT" or diag $!;
# Now parse the output
# line 200
@@ -94,7 +98,6 @@ is(
);
END {
- close XREF;
1 while unlink $file;
}
diff --git a/ext/Encode/AUTHORS b/ext/Encode/AUTHORS
new file mode 100644
index 0000000000..a131c51105
--- /dev/null
+++ b/ext/Encode/AUTHORS
@@ -0,0 +1,17 @@
+# To give due honor to those who have made Encode module what is is today,
+# here are easily-from-changelogs-extractable people and their
+# (hopefully) current and preferred email addresses (as of early 2001,
+# if known).
+#
+# The use of this database for anything else than Encode and/or Perl
+# development is strictly forbidden. (Passive distribution with the Perl
+# source code kit is naturally allowed.)
+#
+# This list is in alphabetical order.
+--
+Anton Tagunov <tagunov@motor.ru>
+Autrijus Tang <autrijus@autrijus.org>
+Dan Kogai <dankogai@dan.co.jp>
+Jarkko Hietaniemi <jhi@iki.fi>
+Nick Ing-Simmons <nick@ing-simmons.net>
+SADAHIRO Tomoyuki <SADAHIRO@cpan.org>
diff --git a/ext/Encode/CN/CN.pm b/ext/Encode/CN/CN.pm
index 185c0cf297..12a9fd3919 100644
--- a/ext/Encode/CN/CN.pm
+++ b/ext/Encode/CN/CN.pm
@@ -1,11 +1,14 @@
package Encode::CN;
-our $VERSION = '0.02';
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
use Encode;
use Encode::CN::HZ;
use XSLoader;
XSLoader::load('Encode::CN',$VERSION);
+Encode::define_alias( qr/euc.*cn$/i => '"euc-cn"' );
+Encode::define_alias( qr/cn.*euc/i => '"euc-cn"' );
+
1;
__END__
=head1 NAME
@@ -14,21 +17,26 @@ Encode::CN - China-based Chinese Encodings
=head1 SYNOPSIS
- use Encode 'encode';
+ use Encode qw/encode decode/;
$euc_cn = encode("euc-cn", $utf8); # loads Encode::CN implicitly
- $utf8 = encode("euc-cn", $euc_cn); # ditto
+ $utf8 = decode("euc-cn", $euc_cn); # ditto
=head1 DESCRIPTION
This module implements China-based Chinese charset encodings.
Encodings supported are as follows.
- euc-cn EUC (Extended Unix Character)
- gb2312 The raw (low-bit) GB2312 character map
- gb12345 Traditional chinese counterpart to GB2312 (raw)
- iso-ir-165 GB2312 + GB6345 + GB8565 + additions
- cp936 Code Page 936, also known as GBK (Extended GuoBiao)
- hz 7-bit escaped GB2312 encoding
+ Canonical Alias Description
+ --------------------------------------------------------------------
+ euc-cn /euc.*cn$/i EUC (Extended Unix Character)
+ /cn.*euc$/i
+ gb2312 The raw (low-bit) GB2312 character map
+ gb12345 Traditional chinese counterpart to
+ GB2312 (raw)
+ iso-ir-165 GB2312 + GB6345 + GB8565 + additions
+ cp936 Code Page 936, also known as GBK
+ (Extended GuoBiao)
+ hz 7-bit escaped GB2312 encoding
To find how to use this module in detail, see L<Encode>.
diff --git a/ext/Encode/Changes b/ext/Encode/Changes
new file mode 100644
index 0000000000..b48001e668
--- /dev/null
+++ b/ext/Encode/Changes
@@ -0,0 +1,57 @@
+# Revision history for Perl extension Encode.
+#
+# $Id: Changes,v 0.94 2002/03/20 19:59:38 dankogai Exp dankogai $
+#
+
+0.94 Thu Mar 21 2002
++ lib/Encode/Description.pod
+! lib/Encode/Encoding.pm
+ Now the pod in Encode.pm is abridged as programming references.
+ lib/Encode/Description.pod contains the original, detailed description
+ and Encode::Encoding explains how to write your own module to
+ add new encodings. So far, lib/Encode/Description.pod contains
+ the whole pod once in Encode.pm. This is intentional.
+! Encode.pm
+ Pod revisions by Anton Tagunov
+ Message-Id: <517178431.20020320174824@motor.ru>
+! lib/Encode/Tcl.pm
+ all occrance of Encode::Tcl::Extended removed including pod
+! t/CJKalias.t
+ test now checks $encoding->name only; $encoding->{name} are
+ no longer check to find the canonical name.
+! lib/Encode/JP/JIS.pm
+! lib/Encode/JP/ISO_2022_JP.pm
+ ->name() added to be more compliant with API
+! CN/CN.pm
+! JP/JP.pm
+! KR/KR.pm
+! TW/TW.pm
+! t/CJKalias.t
+ Patch by Autrijus to add aliases to TW and fixes to POD
+ Message-Id: <20020320090619.GA24774@not.autrijus.org>
+! AUTHORS
+ SADAHIRO Tomoyuki added as should. My apologies.
+
+0.93 Wed Mar 20 2002
+* First release to be uploaded to CPAN. For prehistoric changes,
+ please see Changes file of perl distibution as well as
+ perl-unicode@perl.org archive, available at:
+ http://archive.develooper.com/perl-unicode@perl.org/
+
+ Changes Since 0.92 includes;
++ Changes
++ AUTHORS
+! Encode.pm
+! README
+ + Mention to perl-unicode@perl.org added
+! JP/JP.pm
+ + Encoding aliases added so you can feed locale names
+ and MIME Charset="" directly.
+ - Mention to JISX0212 removed because it's fixed
+! CN/CN.pm
+! KR/KR.pm
+ + Encoding aliases added. Note TW is left untouched because
+ euc-tw is not implemented in TW but in Encode::HanExtra.
+ Autrijus, you may fix Encode::HanExtra.
++ t/CJKalias.t
+ + to test encode aliases added
diff --git a/ext/Encode/Encode.pm b/ext/Encode/Encode.pm
index 6a86673c27..8dc14c3b0f 100644
--- a/ext/Encode/Encode.pm
+++ b/ext/Encode/Encode.pm
@@ -1,6 +1,6 @@
package Encode;
use strict;
-our $VERSION = '0.40';
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
require DynaLoader;
require Exporter;
@@ -66,6 +66,8 @@ our %external_tables =
cp936 => 'Encode/CN.pm',
'iso-ir-165' => 'Encode/CN.pm',
'euc-jp' => 'Encode/JP.pm',
+ 'iso-2022-jp' => 'Encode/JP.pm',
+ '7bit-jis' => 'Encode/JP.pm',
shiftjis => 'Encode/JP.pm',
macjapan => 'Encode/JP.pm',
cp932 => 'Encode/JP.pm',
@@ -201,7 +203,6 @@ define_alias( qr/^gbk$/i => '"cp936"');
# TODO: Thai encoding TCVN
# TODO: Korean encoding Johab
# TODO: Vietnamese encodings VPS
-# TODO: Japanese encoding JIS (not the same as SJIS)
# TODO: Mac Asian+African encodings: Arabic Armenian Bengali Burmese
# ChineseSimp ChineseTrad Devanagari Ethiopic ExtArabic
# Farsi Georgian Gujarati Gurmukhi Hebrew Japanese
@@ -338,239 +339,8 @@ Encode - character encodings
The C<Encode> module provides the interfaces between Perl's strings
and the rest of the system. Perl strings are sequences of B<characters>.
-The repertoire of characters that Perl can represent is at least that
-defined by the Unicode Consortium. On most platforms the ordinal
-values of the characters (as returned by C<ord(ch)>) is the "Unicode
-codepoint" for the character (the exceptions are those platforms where
-the legacy encoding is some variant of EBCDIC rather than a super-set
-of ASCII - see L<perlebcdic>).
-
-Traditionaly computer data has been moved around in 8-bit chunks
-often called "bytes". These chunks are also known as "octets" in
-networking standards. Perl is widely used to manipulate data of
-many types - not only strings of characters representing human or
-computer languages but also "binary" data being the machines representation
-of numbers, pixels in an image - or just about anything.
-
-When Perl is processing "binary data" the programmer wants Perl to process
-"sequences of bytes". This is not a problem for Perl - as a byte has 256
-possible values it easily fits in Perl's much larger "logical character".
-
-Due to size concerns, each of B<CJK> (Chinese, Japanese & Korean) modules
-are not loaded in memory until the first time they're used. Although you
-don't have to C<use> the corresponding B<Encode::>(B<TW>|B<CN>|B<JP>|B<KR>)
-modules first, be aware that those encodings will not be in C<%encodings>
-until their module is loaded (either implicitly through using encodings
-contained in the same module, or via an explicit C<use>).
-
-=head2 TERMINOLOGY
-
-=over 4
-
-=item *
-
-I<character>: a character in the range 0..(2**32-1) (or more).
-(What Perl's strings are made of.)
-
-=item *
-
-I<byte>: a character in the range 0..255
-(A special case of a Perl character.)
-
-=item *
-
-I<octet>: 8 bits of data, with ordinal values 0..255
-(Term for bytes passed to or from a non-Perl context, e.g. disk file.)
-
-=back
-
-The marker [INTERNAL] marks Internal Implementation Details, in
-general meant only for those who think they know what they are doing,
-and such details may change in future releases.
-
-=head1 ENCODINGS
-
-=head2 Characteristics of an Encoding
-
-An encoding has a "repertoire" of characters that it can represent,
-and for each representable character there is at least one sequence of
-octets that represents it.
-
-=head2 Types of Encodings
-
-Encodings can be divided into the following types:
-
-=over 4
-
-=item * Fixed length 8-bit (or less) encodings.
-
-Each character is a single octet so may have a repertoire of up to
-256 characters. ASCII and iso-8859-* are typical examples.
-
-=item * Fixed length 16-bit encodings
-
-Each character is two octets so may have a repertoire of up to
-65 536 characters. Unicode's UCS-2 is an example. Also used for
-encodings for East Asian languages.
-
-=item * Fixed length 32-bit encodings.
-
-Not really very "encoded" encodings. The Unicode code points
-are just represented as 4-octet integers. None the less because
-different architectures use different representations of integers
-(so called "endian") there at least two disctinct encodings.
-
-=item * Multi-byte encodings
-
-The number of octets needed to represent a character varies.
-UTF-8 is a particularly complex but regular case of a multi-byte
-encoding. Several East Asian countries use a multi-byte encoding
-where 1-octet is used to cover western roman characters and Asian
-characters get 2-octets.
-(UTF-16 is strictly a multi-byte encoding taking either 2 or 4 octets
-to represent a Unicode code point.)
-
-=item * "Escape" encodings.
-
-These encodings embed "escape sequences" into the octet sequence
-which describe how the following octets are to be interpreted.
-The iso-2022-* family is typical. Following the escape sequence
-octets are encoded by an "embedded" encoding (which will be one
-of the above types) until another escape sequence switches to
-a different "embedded" encoding.
-
-These schemes are very flexible and can handle mixed languages but are
-very complex to process (and have state). No escape encodings are
-implemented for Perl yet.
-
-=back
-
-=head2 Specifying Encodings
-
-Encodings can be specified to the API described below in two ways:
-
-=over 4
-
-=item 1. By name
-
-Encoding names are strings with characters taken from a restricted
-repertoire. See L</"Encoding Names">.
-
-=item 2. As an object
-
-Encoding objects are returned by C<find_encoding($name, [$skip_external])>.
-If the second parameter is true, Encode will refrain from loading external
-modules for CJK encodings.
-
-=back
-
-=head2 Encoding Names
-
-Encoding names are case insensitive. White space in names is ignored.
-In addition an encoding may have aliases. Each encoding has one
-"canonical" name. The "canonical" name is chosen from the names of
-the encoding by picking the first in the following sequence:
-
-=over 4
-
-=item * The MIME name as defined in IETF RFCs.
-
-=item * The name in the IANA registry.
-
-=item * The name used by the organization that defined it.
-
-=back
-
-Because of all the alias issues, and because in the general case
-encodings have state C<Encode> uses the encoding object internally
-once an operation is in progress.
-
-As of Perl 5.8.0, at least the following encodings are recognized
-(the => marks aliases):
-
- ASCII
-
- US-ASCII => ASCII
-
-The Unicode:
-
- UTF-8
- UTF-16
- UCS-2
-
- ISO 10646-1 => UCS-2
-
-The ISO 8859 and KOI:
-
- ISO 8859-1 ISO 8859-6 ISO 8859-11 KOI8-F
- ISO 8859-2 ISO 8859-7 (12 doesn't exist) KOI8-R
- ISO 8859-3 ISO 8859-8 ISO 8859-13 KOI8-U
- ISO 8859-4 ISO 8859-9 ISO 8859-14
- ISO 8859-5 ISO 8859-10 ISO 8859-15
- ISO 8859-16
-
- Latin1 => 8859-1 Latin6 => 8859-10
- Latin2 => 8859-2 Latin7 => 8859-13
- Latin3 => 8859-3 Latin8 => 8859-14
- Latin4 => 8859-4 Latin9 => 8859-15
- Latin5 => 8859-9 Latin10 => 8859-16
-
- Cyrillic => 8859-5
- Arabic => 8859-6
- Greek => 8859-7
- Hebrew => 8859-8
- Thai => 8859-11
- TIS620 => 8859-11
-
-The CJKV: Chinese, Japanese, Korean, Vietnamese:
-
- ISO 2022 ISO 2022 JP-1 JIS 0201 GB 1988 Big5 EUC-CN
- ISO 2022 CN ISO 2022 JP-2 JIS 0208 GB 2312 HZ EUC-JP
- ISO 2022 JP ISO 2022 KR JIS 0210 GB 12345 CNS 11643 EUC-JP-0212
- Shift-JIS GBK Big5-HKSCS EUC-KR
- VISCII ISO-IR-165
-
-(Due to size concerns, additional Chinese encodings including C<GB 18030>,
-C<EUC-TW> and C<BIG5PLUS> are distributed separately on CPAN, under the name
-L<Encode::HanExtra>.)
-
-The PC codepages:
-
- CP37 CP852 CP861 CP866 CP949 CP1251 CP1256
- CP424 CP855 CP862 CP869 CP950 CP1252 CP1257
- CP737 CP856 CP863 CP874 CP1006 CP1253 CP1258
- CP775 CP857 CP864 CP932 CP1047 CP1254
- CP850 CP860 CP865 CP936 CP1250 CP1255
-
- WinLatin1 => CP1252
- WinLatin2 => CP1250
- WinCyrillic => CP1251
- WinGreek => CP1253
- WinTurkiskh => CP1254
- WinHebrew => CP1255
- WinArabic => CP1256
- WinBaltic => CP1257
- WinVietnamese => CP1258
-
-(All the CPI<NNN...> are available also as IBMI<NNN...>.)
-
-The Mac codepages:
-
- MacCentralEuropean MacJapanese
- MacCroatian MacRoman
- MacCyrillic MacRomanian
- MacDingbats MacSami
- MacGreek MacThai
- MacIcelandic MacTurkish
- MacUkraine
-
-Miscellaneous:
-
- 7bit-greek IR-197
- 7bit-kana NeXTstep
- 7bit-latin1 POSIX-BC
- DingBats Roman8
- GSM 0338 Symbol
+To find more about character encodings, please consult
+L<Encode::Description> . This document focuses on programming references.
=head1 PERL ENCODING API
@@ -598,7 +368,7 @@ Decode sequence of octets assumed to be in I<ENCODING> into Perl's
internal form and returns the resulting string. For CHECK see
L</"Handling Malformed Data">.
-For example to convert ISO 8859-1 data to UTF-8:
+For example to convert ISO-8859-1 data to UTF-8:
$utf8 = decode("latin1", $latin1);
@@ -611,7 +381,7 @@ in $string originally get to be in FROM_ENCODING? Either using
encode() or through PerlIO: See L</"Encoding and IO">. For CHECK
see L</"Handling Malformed Data">.
-For example to convert ISO 8859-1 data to UTF-8:
+For example to convert ISO-8859-1 data to UTF-8:
from_to($data, "iso-8859-1", "utf-8");
@@ -712,46 +482,6 @@ For CHECK see L</"Handling Malformed Data">.
=back
-=head2 Other Encodings of Unicode
-
-UTF-16 is similar to UCS-2, 16 bit or 2-byte chunks. UCS-2 can only
-represent 0..0xFFFF, while UTF-16 has a I<surrogate pair> scheme which
-allows it to cover the whole Unicode range.
-
-Surrogates are code points set aside to encode the 0x01000..0x10FFFF
-range of Unicode code points in pairs of 16-bit units. The I<high
-surrogates> are the range 0xD800..0xDBFF, and the I<low surrogates>
-are the range 0xDC00..0xDFFFF. The surrogate encoding is
-
- $hi = ($uni - 0x10000) / 0x400 + 0xD800;
- $lo = ($uni - 0x10000) % 0x400 + 0xDC00;
-
-and the decoding is
-
- $uni = 0x10000 + ($hi - 0xD8000) * 0x400 + ($lo - 0xDC00);
-
-Encode implements big-endian UCS-2 aliased to "iso-10646-1" as that
-happens to be the name used by that representation when used with X11
-fonts.
-
-UTF-32 or UCS-4 is 32-bit or 4-byte chunks. Perl's logical characters
-can be considered as being in this form without encoding. An encoding
-to transfer strings in this form (e.g. to write them to a file) would
-need to
-
- pack('L*', unpack('U*', $string)); # native
- or
- pack('V*', unpack('U*', $string)); # little-endian
- or
- pack('N*', unpack('U*', $string)); # big-endian
-
-depending on the endianness required.
-
-No UTF-32 encodings are implemented yet.
-
-Both UCS-2 and UCS-4 style encodings can have "byte order marks" by
-representing the code point 0xFFFE as the very first thing in a file.
-
=head2 Listing available encodings
use Encode qw(encodings);
@@ -780,7 +510,8 @@ Currently I<newName> can be specified in the following ways:
In this case if I<ENCODING> is not a reference it is C<eval>-ed to
allow C<$1> etc. to be subsituted. The example is one way to names as
used in X11 font names to alias the MIME names for the iso-8859-*
-family.
+family. Note the double quote inside the single quote. If you are
+using regex here, you have to do so or it won't work in this case.
=item As a code reference, e.g.:
@@ -793,13 +524,13 @@ names for the iso-8859-* family.
=back
-=head2 Defining Encodings
+=head1 Defining Encodings
use Encode qw(define_alias);
define_encoding( $object, 'canonicalName' [,alias...]);
Causes I<canonicalName> to be associated with I<$object>. The object
-should provide the interface described in L</"IMPLEMENTATION CLASSES">
+should provide the interface described in L<Encode::Encoding>
below. If more than two arguments are provided then additional
arguments are taken as aliases for I<$object> as for C<define_alias>.
@@ -848,7 +579,7 @@ transform the bytes read from a handle into characters before doing
"character operations" (e.g. C<lc>, C</\W+/>, ...).
You can also use PerlIO to convert larger amounts of data you don't
-want to bring into memory. For example to convert between ISO 8859-1
+want to bring into memory. For example to convert between ISO-8859-1
(Latin 1) and UTF-8 (or UTF-EBCDIC in EBCDIC machines):
open(F, "<:encoding(iso-8859-1)", "data.txt") or die $!;
@@ -869,22 +600,6 @@ See L<PerlIO> for more information.
See also L<encoding> for how to change the default encoding of the
data in your script.
-=head1 Encoding How to ...
-
-To do:
-
-=over 4
-
-=item * IO with mixed content (faking iso-2020-*)
-
-=item * MIME's Content-Length:
-
-=item * UTF-8 strings in binary data.
-
-=item * Perl/Encode wrappers on non-Unicode XS modules.
-
-=back
-
=head1 Messing with Perl's Internals
The following API uses parts of Perl's internals in the current
@@ -919,172 +634,10 @@ not a string.
=back
-=head1 IMPLEMENTATION CLASSES
-
-As mentioned above encodings are (in the current implementation at least)
-defined by objects. The mapping of encoding name to object is via the
-C<%encodings> hash.
-
-The values of the hash can currently be either strings or objects.
-The string form may go away in the future. The string form occurs
-when C<encodings()> has scanned C<@INC> for loadable encodings but has
-not actually loaded the encoding in question. This is because the
-current "loading" process is all Perl and a bit slow.
-
-Once an encoding is loaded then value of the hash is object which
-implements the encoding. The object should provide the following
-interface:
-
-=over 4
-
-=item -E<gt>name
-
-Should return the string representing the canonical name of the encoding.
-
-=item -E<gt>new_sequence
-
-This is a placeholder for encodings with state. It should return an
-object which implements this interface, all current implementations
-return the original object.
-
-=item -E<gt>encode($string,$check)
-
-Should return the octet sequence representing I<$string>. If I<$check>
-is true it should modify I<$string> in place to remove the converted
-part (i.e. the whole string unless there is an error). If an error
-occurs it should return the octet sequence for the fragment of string
-that has been converted, and modify $string in-place to remove the
-converted part leaving it starting with the problem fragment.
-
-If check is is false then C<encode> should make a "best effort" to
-convert the string - for example by using a replacement character.
-
-=item -E<gt>decode($octets,$check)
-
-Should return the string that I<$octets> represents. If I<$check> is
-true it should modify I<$octets> in place to remove the converted part
-(i.e. the whole sequence unless there is an error). If an error
-occurs it should return the fragment of string that has been
-converted, and modify $octets in-place to remove the converted part
-leaving it starting with the problem fragment.
-
-If check is is false then C<decode> should make a "best effort" to
-convert the string - for example by using Unicode's "\x{FFFD}" as a
-replacement character.
-
-=back
-
-It should be noted that the check behaviour is different from the
-outer public API. The logic is that the "unchecked" case is useful
-when encoding is part of a stream which may be reporting errors
-(e.g. STDERR). In such cases it is desirable to get everything
-through somehow without causing additional errors which obscure the
-original one. Also the encoding is best placed to know what the
-correct replacement character is, so if that is the desired behaviour
-then letting low level code do it is the most efficient.
-
-In contrast if check is true, the scheme above allows the encoding to
-do as much as it can and tell layer above how much that was. What is
-lacking at present is a mechanism to report what went wrong. The most
-likely interface will be an additional method call to the object, or
-perhaps (to avoid forcing per-stream objects on otherwise stateless
-encodings) and additional parameter.
-
-It is also highly desirable that encoding classes inherit from
-C<Encode::Encoding> as a base class. This allows that class to define
-additional behaviour for all encoding objects. For example built in
-Unicode, UCS-2 and UTF-8 classes use :
-
- package Encode::MyEncoding;
- use base qw(Encode::Encoding);
-
- __PACKAGE__->Define(qw(myCanonical myAlias));
-
-To create an object with bless {Name => ...},$class, and call
-define_encoding. They inherit their C<name> method from
-C<Encode::Encoding>.
-
-=head2 Compiled Encodings
-
-F<Encode.xs> provides a class C<Encode::XS> which provides the
-interface described above. It calls a generic octet-sequence to
-octet-sequence "engine" that is driven by tables (defined in
-F<encengine.c>). The same engine is used for both encode and
-decode. C<Encode:XS>'s C<encode> forces Perl's characters to their
-UTF-8 form and then treats them as just another multibyte
-encoding. C<Encode:XS>'s C<decode> transforms the sequence and then
-turns the UTF-8-ness flag as that is the form that the tables are
-defined to produce. For details of the engine see the comments in
-F<encengine.c>.
-
-The tables are produced by the Perl script F<compile> (the name needs
-to change so we can eventually install it somewhere). F<compile> can
-currently read two formats:
-
-=over 4
-
-=item *.enc
-
-This is a coined format used by Tcl. It is documented in
-Encode/EncodeFormat.pod.
-
-=item *.ucm
-
-This is the semi-standard format used by IBM's ICU package.
-
-=back
-
-F<compile> can write the following forms:
-
-=over 4
-
-=item *.ucm
-
-See above - the F<Encode/*.ucm> files provided with the distribution have
-been created from the original Tcl .enc files using this approach.
-
-=item *.c
-
-Produces tables as C data structures - this is used to build in encodings
-into F<Encode.so>/F<Encode.dll>.
-
-=item *.xs
-
-In theory this allows encodings to be stand-alone loadable Perl
-extensions. The process has not yet been tested. The plan is to use
-this approach for large East Asian encodings.
-
-=back
-
-The set of encodings built-in to F<Encode.so>/F<Encode.dll> is
-determined by F<Makefile.PL>. The current set is as follows:
-
-=over 4
-
-=item ascii and iso-8859-*
-
-That is all the common 8-bit "western" encodings.
-
-=item IBM-1047 and two other variants of EBCDIC.
-
-These are the same variants that are supported by EBCDIC Perl as
-"native" encodings. They are included to prove "reversibility" of
-some constructs in EBCDIC Perl.
-
-=item symbol and dingbats as used by Tk on X11.
-
-(The reason Encode got started was to support Perl/Tk.)
-
-=back
-
-That set is rather ad hoc and has been driven by the needs of the
-tests rather than the needs of typical applications. It is likely
-to be rationalized.
-
=head1 SEE ALSO
L<perlunicode>, L<perlebcdic>, L<perlfunc/open>, L<PerlIO>, L<encoding>,
-L<utf8>
+L<utf8>, L<Encode::Description>, L<Encode::Encoding> the Perl Unicode Mailing List E<lt>perl-unicode@perl.orgE<gt>
=cut
diff --git a/ext/Encode/Encode.xs b/ext/Encode/Encode.xs
index a71f69bce8..44e5e2243a 100644
--- a/ext/Encode/Encode.xs
+++ b/ext/Encode/Encode.xs
@@ -91,7 +91,7 @@ PerlIOEncode_pushed(pTHX_ PerlIO * f, const char *mode, SV * arg)
if (!SvROK(e->enc)) {
e->enc = Nullsv;
errno = EINVAL;
- Perl_warner(aTHX_ WARN_IO, "Cannot find encoding \"%" SVf "\"",
+ Perl_warner(aTHX_ packWARN(WARN_IO), "Cannot find encoding \"%" SVf "\"",
arg);
code = -1;
}
@@ -541,7 +541,7 @@ encode_method(pTHX_ encode_t * enc, encpage_t * dir, SV * src,
UV ch =
utf8n_to_uvuni(s + slen, (SvCUR(src) - slen),
&clen, 0);
- Perl_warner(aTHX_ WARN_UTF8,
+ Perl_warner(aTHX_ packWARN(WARN_UTF8),
"\"\\N{U+%" UVxf
"}\" does not map to %s", ch,
enc->name[0]);
@@ -559,8 +559,8 @@ encode_method(pTHX_ encode_t * enc, encpage_t * dir, SV * src,
for real characters, but some encodings have non-assigned
codes which may occur.
*/
- Perl_croak(aTHX_ "%s \"\\x%02X\" does not map to Unicode",
- enc->name[0], (U8) s[slen]);
+ Perl_croak(aTHX_ "%s \"\\x%02X\" does not map to Unicode (%d)",
+ enc->name[0], (U8) s[slen], code);
}
break;
diff --git a/ext/Encode/Encode/euc-jp-0212.enc b/ext/Encode/Encode/euc-jp-0212.enc
deleted file mode 100644
index 23d7325e9b..0000000000
--- a/ext/Encode/Encode/euc-jp-0212.enc
+++ /dev/null
@@ -1,7 +0,0 @@
-# Encoding file: euc-jp-0212, extended
-X
-name euc-jp-0212
-ascii {}
-jis0208 >{}
-7bit-kana >\x8e
-jis0212 >\x8f
diff --git a/ext/Encode/Encode/euc-jp.ucm b/ext/Encode/Encode/euc-jp.ucm
index 5552dc77fc..1d5e4adb3b 100644
--- a/ext/Encode/Encode/euc-jp.ucm
+++ b/ext/Encode/Encode/euc-jp.ucm
@@ -1,10 +1,13 @@
# compile -o Encode/euc-jp.ucm Encode/euc-jp.enc
<code_set_name> "euc-jp"
<mb_cur_min> 1
-<mb_cur_max> 2
+<mb_cur_max> 3
<subchar> \x3F
#
CHARMAP
+#
+# ASCII
+#
<U0000> \x00 |0 # <control>
<U0001> \x01 |0 # <control>
<U0002> \x02 |0 # <control>
@@ -131,8 +134,11 @@ CHARMAP
<U007B> \x7B |0 # LEFT CURLY BRACKET
<U007C> \x7C |0 # VERTICAL LINE
<U007D> \x7D |0 # RIGHT CURLY BRACKET
-<U007E> \x7E |0 # TILDE
+<U007E> \x7E |0 # TILDE
<U007F> \x7F |0 # <control>
+#
+# reserved or unused; verbatim translation
+#
<U0080> \x80 |0 # <control>
<U0081> \x81 |0 # <control>
<U0082> \x82 |0 # <control>
@@ -147,6 +153,25 @@ CHARMAP
<U008B> \x8B |0 # <control>
<U008C> \x8C |0 # <control>
<U008D> \x8D |0 # <control>
+<U0090> \x90 |0 # <control>
+<U0091> \x91 |0 # <control>
+<U0092> \x92 |0 # <control>
+<U0093> \x93 |0 # <control>
+<U0094> \x94 |0 # <control>
+<U0095> \x95 |0 # <control>
+<U0096> \x96 |0 # <control>
+<U0097> \x97 |0 # <control>
+<U0098> \x98 |0 # <control>
+<U0099> \x99 |0 # <control>
+<U009A> \x9A |0 # <control>
+<U009B> \x9B |0 # <control>
+<U009C> \x9C |0 # <control>
+<U009D> \x9D |0 # <control>
+<U009E> \x9E |0 # <control>
+<U009F> \x9F |0 # <control>
+#
+# jisx0201-1978
+#
<UFF61> \x8E\xA1 |0 # HALFWIDTH IDEOGRAPHIC FULL STOP
<UFF62> \x8E\xA2 |0 # HALFWIDTH LEFT CORNER BRACKET
<UFF63> \x8E\xA3 |0 # HALFWIDTH RIGHT CORNER BRACKET
@@ -210,23 +235,9 @@ CHARMAP
<UFF9D> \x8E\xDD |0 # HALFWIDTH KATAKANA LETTER N
<UFF9E> \x8E\xDE |0 # HALFWIDTH KATAKANA VOICED SOUND MARK
<UFF9F> \x8E\xDF |0 # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-<U008F> \x8F |0 # <control>
-<U0090> \x90 |0 # <control>
-<U0091> \x91 |0 # <control>
-<U0092> \x92 |0 # <control>
-<U0093> \x93 |0 # <control>
-<U0094> \x94 |0 # <control>
-<U0095> \x95 |0 # <control>
-<U0096> \x96 |0 # <control>
-<U0097> \x97 |0 # <control>
-<U0098> \x98 |0 # <control>
-<U0099> \x99 |0 # <control>
-<U009A> \x9A |0 # <control>
-<U009B> \x9B |0 # <control>
-<U009C> \x9C |0 # <control>
-<U009D> \x9D |0 # <control>
-<U009E> \x9E |0 # <control>
-<U009F> \x9F |0 # <control>
+#
+# jisx0208-1990
+#
<U3000> \xA1\xA1 |0 # IDEOGRAPHIC SPACE
<U3001> \xA1\xA2 |0 # IDEOGRAPHIC COMMA
<U3002> \xA1\xA3 |0 # IDEOGRAPHIC FULL STOP
@@ -7106,4 +7117,6076 @@ CHARMAP
<U7464> \xF4\xA4 |0 # CJK Ideograph
<U51DC> \xF4\xA5 |0 # CJK Ideograph
<U7199> \xF4\xA6 |0 # CJK Ideograph
+#
+# jisx0212-1990
+# note jisx0212 is not round-trippable
+#
+<U02D8> \x8F\xA2\xAF |0 # BREVE
+<U02C7> \x8F\xA2\xB0 |0 # CARON (Mandarin Chinese third tone)
+<U00B8> \x8F\xA2\xB1 |0 # CEDILLA
+<U02D9> \x8F\xA2\xB2 |0 # DOT ABOVE (Mandarin Chinese light tone)
+<U02DD> \x8F\xA2\xB3 |0 # DOUBLE ACUTE ACCENT
+<U00AF> \x8F\xA2\xB4 |0 # MACRON
+<U02DB> \x8F\xA2\xB5 |0 # OGONEK
+<U02DA> \x8F\xA2\xB6 |0 # RING ABOVE
+<U007E> \x8F\xA2\xB7 |3 # TILDE (euc-jp -> utf8 only)
+<U0384> \x8F\xA2\xB8 |0 # GREEK TONOS
+<U0385> \x8F\xA2\xB9 |0 # GREEK DIALYTIKA TONOS
+<U00A1> \x8F\xA2\xC2 |0 # INVERTED EXCLAMATION MARK
+<U00A6> \x8F\xA2\xC3 |0 # BROKEN BAR
+<U00BF> \x8F\xA2\xC4 |0 # INVERTED QUESTION MARK
+<U00BA> \x8F\xA2\xEB |0 # MASCULINE ORDINAL INDICATOR
+<U00AA> \x8F\xA2\xEC |0 # FEMININE ORDINAL INDICATOR
+<U00A9> \x8F\xA2\xED |0 # COPYRIGHT SIGN
+<U00AE> \x8F\xA2\xEE |0 # REGISTERED SIGN
+<U2122> \x8F\xA2\xEF |0 # TRADE MARK SIGN
+<U00A4> \x8F\xA2\xF0 |0 # CURRENCY SIGN
+<U2116> \x8F\xA2\xF1 |0 # NUMERO SIGN
+<U0386> \x8F\xA6\xE1 |0 # GREEK CAPITAL LETTER ALPHA WITH TONOS
+<U0388> \x8F\xA6\xE2 |0 # GREEK CAPITAL LETTER EPSILON WITH TONOS
+<U0389> \x8F\xA6\xE3 |0 # GREEK CAPITAL LETTER ETA WITH TONOS
+<U038A> \x8F\xA6\xE4 |0 # GREEK CAPITAL LETTER IOTA WITH TONOS
+<U03AA> \x8F\xA6\xE5 |0 # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+<U038C> \x8F\xA6\xE7 |0 # GREEK CAPITAL LETTER OMICRON WITH TONOS
+<U038E> \x8F\xA6\xE9 |0 # GREEK CAPITAL LETTER UPSILON WITH TONOS
+<U03AB> \x8F\xA6\xEA |0 # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+<U038F> \x8F\xA6\xEC |0 # GREEK CAPITAL LETTER OMEGA WITH TONOS
+<U03AC> \x8F\xA6\xF1 |0 # GREEK SMALL LETTER ALPHA WITH TONOS
+<U03AD> \x8F\xA6\xF2 |0 # GREEK SMALL LETTER EPSILON WITH TONOS
+<U03AE> \x8F\xA6\xF3 |0 # GREEK SMALL LETTER ETA WITH TONOS
+<U03AF> \x8F\xA6\xF4 |0 # GREEK SMALL LETTER IOTA WITH TONOS
+<U03CA> \x8F\xA6\xF5 |0 # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+<U0390> \x8F\xA6\xF6 |0 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<U03CC> \x8F\xA6\xF7 |0 # GREEK SMALL LETTER OMICRON WITH TONOS
+<U03C2> \x8F\xA6\xF8 |0 # GREEK SMALL LETTER FINAL SIGMA
+<U03CD> \x8F\xA6\xF9 |0 # GREEK SMALL LETTER UPSILON WITH TONOS
+<U03CB> \x8F\xA6\xFA |0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+<U03B0> \x8F\xA6\xFB |0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<U03CE> \x8F\xA6\xFC |0 # GREEK SMALL LETTER OMEGA WITH TONOS
+<U0402> \x8F\xA7\xC2 |0 # CYRILLIC CAPITAL LETTER DJE
+<U0403> \x8F\xA7\xC3 |0 # CYRILLIC CAPITAL LETTER GJE
+<U0404> \x8F\xA7\xC4 |0 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
+<U0405> \x8F\xA7\xC5 |0 # CYRILLIC CAPITAL LETTER DZE
+<U0406> \x8F\xA7\xC6 |0 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+<U0407> \x8F\xA7\xC7 |0 # CYRILLIC CAPITAL LETTER YI
+<U0408> \x8F\xA7\xC8 |0 # CYRILLIC CAPITAL LETTER JE
+<U0409> \x8F\xA7\xC9 |0 # CYRILLIC CAPITAL LETTER LJE
+<U040A> \x8F\xA7\xCA |0 # CYRILLIC CAPITAL LETTER NJE
+<U040B> \x8F\xA7\xCB |0 # CYRILLIC CAPITAL LETTER TSHE
+<U040C> \x8F\xA7\xCC |0 # CYRILLIC CAPITAL LETTER KJE
+<U040E> \x8F\xA7\xCD |0 # CYRILLIC CAPITAL LETTER SHORT U
+<U040F> \x8F\xA7\xCE |0 # CYRILLIC CAPITAL LETTER DZHE
+<U0452> \x8F\xA7\xF2 |0 # CYRILLIC SMALL LETTER DJE
+<U0453> \x8F\xA7\xF3 |0 # CYRILLIC SMALL LETTER GJE
+<U0454> \x8F\xA7\xF4 |0 # CYRILLIC SMALL LETTER UKRAINIAN IE
+<U0455> \x8F\xA7\xF5 |0 # CYRILLIC SMALL LETTER DZE
+<U0456> \x8F\xA7\xF6 |0 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+<U0457> \x8F\xA7\xF7 |0 # CYRILLIC SMALL LETTER YI
+<U0458> \x8F\xA7\xF8 |0 # CYRILLIC SMALL LETTER JE
+<U0459> \x8F\xA7\xF9 |0 # CYRILLIC SMALL LETTER LJE
+<U045A> \x8F\xA7\xFA |0 # CYRILLIC SMALL LETTER NJE
+<U045B> \x8F\xA7\xFB |0 # CYRILLIC SMALL LETTER TSHE
+<U045C> \x8F\xA7\xFC |0 # CYRILLIC SMALL LETTER KJE
+<U045E> \x8F\xA7\xFD |0 # CYRILLIC SMALL LETTER SHORT U
+<U045F> \x8F\xA7\xFE |0 # CYRILLIC SMALL LETTER DZHE
+<U00C6> \x8F\xA9\xA1 |0 # LATIN CAPITAL LIGATURE AE
+<U0110> \x8F\xA9\xA2 |0 # LATIN CAPITAL LETTER D WITH STROKE
+<U0126> \x8F\xA9\xA4 |0 # LATIN CAPITAL LETTER H WITH STROKE
+<U0132> \x8F\xA9\xA6 |0 # LATIN CAPITAL LIGATURE IJ
+<U0141> \x8F\xA9\xA8 |0 # LATIN CAPITAL LETTER L WITH STROKE
+<U013F> \x8F\xA9\xA9 |0 # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+<U014A> \x8F\xA9\xAB |0 # LATIN CAPITAL LETTER ENG
+<U00D8> \x8F\xA9\xAC |0 # LATIN CAPITAL LETTER O WITH STROKE
+<U0152> \x8F\xA9\xAD |0 # LATIN CAPITAL LIGATURE OE
+<U0166> \x8F\xA9\xAF |0 # LATIN CAPITAL LETTER T WITH STROKE
+<U00DE> \x8F\xA9\xB0 |0 # LATIN CAPITAL LETTER THORN
+<U00E6> \x8F\xA9\xC1 |0 # LATIN SMALL LIGATURE AE
+<U0111> \x8F\xA9\xC2 |0 # LATIN SMALL LETTER D WITH STROKE
+<U00F0> \x8F\xA9\xC3 |0 # LATIN SMALL LETTER ETH
+<U0127> \x8F\xA9\xC4 |0 # LATIN SMALL LETTER H WITH STROKE
+<U0131> \x8F\xA9\xC5 |0 # LATIN SMALL LETTER DOTLESS I
+<U0133> \x8F\xA9\xC6 |0 # LATIN SMALL LIGATURE IJ
+<U0138> \x8F\xA9\xC7 |0 # LATIN SMALL LETTER KRA
+<U0142> \x8F\xA9\xC8 |0 # LATIN SMALL LETTER L WITH STROKE
+<U0140> \x8F\xA9\xC9 |0 # LATIN SMALL LETTER L WITH MIDDLE DOT
+<U0149> \x8F\xA9\xCA |0 # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+<U014B> \x8F\xA9\xCB |0 # LATIN SMALL LETTER ENG
+<U00F8> \x8F\xA9\xCC |0 # LATIN SMALL LETTER O WITH STROKE
+<U0153> \x8F\xA9\xCD |0 # LATIN SMALL LIGATURE OE
+<U00DF> \x8F\xA9\xCE |0 # LATIN SMALL LETTER SHARP S
+<U0167> \x8F\xA9\xCF |0 # LATIN SMALL LETTER T WITH STROKE
+<U00FE> \x8F\xA9\xD0 |0 # LATIN SMALL LETTER THORN
+<U00C1> \x8F\xAA\xA1 |0 # LATIN CAPITAL LETTER A WITH ACUTE
+<U00C0> \x8F\xAA\xA2 |0 # LATIN CAPITAL LETTER A WITH GRAVE
+<U00C4> \x8F\xAA\xA3 |0 # LATIN CAPITAL LETTER A WITH DIAERESIS
+<U00C2> \x8F\xAA\xA4 |0 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<U0102> \x8F\xAA\xA5 |0 # LATIN CAPITAL LETTER A WITH BREVE
+<U01CD> \x8F\xAA\xA6 |0 # LATIN CAPITAL LETTER A WITH CARON
+<U0100> \x8F\xAA\xA7 |0 # LATIN CAPITAL LETTER A WITH MACRON
+<U0104> \x8F\xAA\xA8 |0 # LATIN CAPITAL LETTER A WITH OGONEK
+<U00C5> \x8F\xAA\xA9 |0 # LATIN CAPITAL LETTER A WITH RING ABOVE
+<U00C3> \x8F\xAA\xAA |0 # LATIN CAPITAL LETTER A WITH TILDE
+<U0106> \x8F\xAA\xAB |0 # LATIN CAPITAL LETTER C WITH ACUTE
+<U0108> \x8F\xAA\xAC |0 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+<U010C> \x8F\xAA\xAD |0 # LATIN CAPITAL LETTER C WITH CARON
+<U00C7> \x8F\xAA\xAE |0 # LATIN CAPITAL LETTER C WITH CEDILLA
+<U010A> \x8F\xAA\xAF |0 # LATIN CAPITAL LETTER C WITH DOT ABOVE
+<U010E> \x8F\xAA\xB0 |0 # LATIN CAPITAL LETTER D WITH CARON
+<U00C9> \x8F\xAA\xB1 |0 # LATIN CAPITAL LETTER E WITH ACUTE
+<U00C8> \x8F\xAA\xB2 |0 # LATIN CAPITAL LETTER E WITH GRAVE
+<U00CB> \x8F\xAA\xB3 |0 # LATIN CAPITAL LETTER E WITH DIAERESIS
+<U00CA> \x8F\xAA\xB4 |0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<U011A> \x8F\xAA\xB5 |0 # LATIN CAPITAL LETTER E WITH CARON
+<U0116> \x8F\xAA\xB6 |0 # LATIN CAPITAL LETTER E WITH DOT ABOVE
+<U0112> \x8F\xAA\xB7 |0 # LATIN CAPITAL LETTER E WITH MACRON
+<U0118> \x8F\xAA\xB8 |0 # LATIN CAPITAL LETTER E WITH OGONEK
+<U011C> \x8F\xAA\xBA |0 # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+<U011E> \x8F\xAA\xBB |0 # LATIN CAPITAL LETTER G WITH BREVE
+<U0122> \x8F\xAA\xBC |0 # LATIN CAPITAL LETTER G WITH CEDILLA
+<U0120> \x8F\xAA\xBD |0 # LATIN CAPITAL LETTER G WITH DOT ABOVE
+<U0124> \x8F\xAA\xBE |0 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+<U00CD> \x8F\xAA\xBF |0 # LATIN CAPITAL LETTER I WITH ACUTE
+<U00CC> \x8F\xAA\xC0 |0 # LATIN CAPITAL LETTER I WITH GRAVE
+<U00CF> \x8F\xAA\xC1 |0 # LATIN CAPITAL LETTER I WITH DIAERESIS
+<U00CE> \x8F\xAA\xC2 |0 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<U01CF> \x8F\xAA\xC3 |0 # LATIN CAPITAL LETTER I WITH CARON
+<U0130> \x8F\xAA\xC4 |0 # LATIN CAPITAL LETTER I WITH DOT ABOVE
+<U012A> \x8F\xAA\xC5 |0 # LATIN CAPITAL LETTER I WITH MACRON
+<U012E> \x8F\xAA\xC6 |0 # LATIN CAPITAL LETTER I WITH OGONEK
+<U0128> \x8F\xAA\xC7 |0 # LATIN CAPITAL LETTER I WITH TILDE
+<U0134> \x8F\xAA\xC8 |0 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+<U0136> \x8F\xAA\xC9 |0 # LATIN CAPITAL LETTER K WITH CEDILLA
+<U0139> \x8F\xAA\xCA |0 # LATIN CAPITAL LETTER L WITH ACUTE
+<U013D> \x8F\xAA\xCB |0 # LATIN CAPITAL LETTER L WITH CARON
+<U013B> \x8F\xAA\xCC |0 # LATIN CAPITAL LETTER L WITH CEDILLA
+<U0143> \x8F\xAA\xCD |0 # LATIN CAPITAL LETTER N WITH ACUTE
+<U0147> \x8F\xAA\xCE |0 # LATIN CAPITAL LETTER N WITH CARON
+<U0145> \x8F\xAA\xCF |0 # LATIN CAPITAL LETTER N WITH CEDILLA
+<U00D1> \x8F\xAA\xD0 |0 # LATIN CAPITAL LETTER N WITH TILDE
+<U00D3> \x8F\xAA\xD1 |0 # LATIN CAPITAL LETTER O WITH ACUTE
+<U00D2> \x8F\xAA\xD2 |0 # LATIN CAPITAL LETTER O WITH GRAVE
+<U00D6> \x8F\xAA\xD3 |0 # LATIN CAPITAL LETTER O WITH DIAERESIS
+<U00D4> \x8F\xAA\xD4 |0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<U01D1> \x8F\xAA\xD5 |0 # LATIN CAPITAL LETTER O WITH CARON
+<U0150> \x8F\xAA\xD6 |0 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+<U014C> \x8F\xAA\xD7 |0 # LATIN CAPITAL LETTER O WITH MACRON
+<U00D5> \x8F\xAA\xD8 |0 # LATIN CAPITAL LETTER O WITH TILDE
+<U0154> \x8F\xAA\xD9 |0 # LATIN CAPITAL LETTER R WITH ACUTE
+<U0158> \x8F\xAA\xDA |0 # LATIN CAPITAL LETTER R WITH CARON
+<U0156> \x8F\xAA\xDB |0 # LATIN CAPITAL LETTER R WITH CEDILLA
+<U015A> \x8F\xAA\xDC |0 # LATIN CAPITAL LETTER S WITH ACUTE
+<U015C> \x8F\xAA\xDD |0 # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+<U0160> \x8F\xAA\xDE |0 # LATIN CAPITAL LETTER S WITH CARON
+<U015E> \x8F\xAA\xDF |0 # LATIN CAPITAL LETTER S WITH CEDILLA
+<U0164> \x8F\xAA\xE0 |0 # LATIN CAPITAL LETTER T WITH CARON
+<U0162> \x8F\xAA\xE1 |0 # LATIN CAPITAL LETTER T WITH CEDILLA
+<U00DA> \x8F\xAA\xE2 |0 # LATIN CAPITAL LETTER U WITH ACUTE
+<U00D9> \x8F\xAA\xE3 |0 # LATIN CAPITAL LETTER U WITH GRAVE
+<U00DC> \x8F\xAA\xE4 |0 # LATIN CAPITAL LETTER U WITH DIAERESIS
+<U00DB> \x8F\xAA\xE5 |0 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<U016C> \x8F\xAA\xE6 |0 # LATIN CAPITAL LETTER U WITH BREVE
+<U01D3> \x8F\xAA\xE7 |0 # LATIN CAPITAL LETTER U WITH CARON
+<U0170> \x8F\xAA\xE8 |0 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+<U016A> \x8F\xAA\xE9 |0 # LATIN CAPITAL LETTER U WITH MACRON
+<U0172> \x8F\xAA\xEA |0 # LATIN CAPITAL LETTER U WITH OGONEK
+<U016E> \x8F\xAA\xEB |0 # LATIN CAPITAL LETTER U WITH RING ABOVE
+<U0168> \x8F\xAA\xEC |0 # LATIN CAPITAL LETTER U WITH TILDE
+<U01D7> \x8F\xAA\xED |0 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<U01DB> \x8F\xAA\xEE |0 # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<U01D9> \x8F\xAA\xEF |0 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<U01D5> \x8F\xAA\xF0 |0 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<U0174> \x8F\xAA\xF1 |0 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+<U00DD> \x8F\xAA\xF2 |0 # LATIN CAPITAL LETTER Y WITH ACUTE
+<U0178> \x8F\xAA\xF3 |0 # LATIN CAPITAL LETTER Y WITH DIAERESIS
+<U0176> \x8F\xAA\xF4 |0 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+<U0179> \x8F\xAA\xF5 |0 # LATIN CAPITAL LETTER Z WITH ACUTE
+<U017D> \x8F\xAA\xF6 |0 # LATIN CAPITAL LETTER Z WITH CARON
+<U017B> \x8F\xAA\xF7 |0 # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+<U00E1> \x8F\xAB\xA1 |0 # LATIN SMALL LETTER A WITH ACUTE
+<U00E0> \x8F\xAB\xA2 |0 # LATIN SMALL LETTER A WITH GRAVE
+<U00E4> \x8F\xAB\xA3 |0 # LATIN SMALL LETTER A WITH DIAERESIS
+<U00E2> \x8F\xAB\xA4 |0 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+<U0103> \x8F\xAB\xA5 |0 # LATIN SMALL LETTER A WITH BREVE
+<U01CE> \x8F\xAB\xA6 |0 # LATIN SMALL LETTER A WITH CARON
+<U0101> \x8F\xAB\xA7 |0 # LATIN SMALL LETTER A WITH MACRON
+<U0105> \x8F\xAB\xA8 |0 # LATIN SMALL LETTER A WITH OGONEK
+<U00E5> \x8F\xAB\xA9 |0 # LATIN SMALL LETTER A WITH RING ABOVE
+<U00E3> \x8F\xAB\xAA |0 # LATIN SMALL LETTER A WITH TILDE
+<U0107> \x8F\xAB\xAB |0 # LATIN SMALL LETTER C WITH ACUTE
+<U0109> \x8F\xAB\xAC |0 # LATIN SMALL LETTER C WITH CIRCUMFLEX
+<U010D> \x8F\xAB\xAD |0 # LATIN SMALL LETTER C WITH CARON
+<U00E7> \x8F\xAB\xAE |0 # LATIN SMALL LETTER C WITH CEDILLA
+<U010B> \x8F\xAB\xAF |0 # LATIN SMALL LETTER C WITH DOT ABOVE
+<U010F> \x8F\xAB\xB0 |0 # LATIN SMALL LETTER D WITH CARON
+<U00E9> \x8F\xAB\xB1 |0 # LATIN SMALL LETTER E WITH ACUTE
+<U00E8> \x8F\xAB\xB2 |0 # LATIN SMALL LETTER E WITH GRAVE
+<U00EB> \x8F\xAB\xB3 |0 # LATIN SMALL LETTER E WITH DIAERESIS
+<U00EA> \x8F\xAB\xB4 |0 # LATIN SMALL LETTER E WITH CIRCUMFLEX
+<U011B> \x8F\xAB\xB5 |0 # LATIN SMALL LETTER E WITH CARON
+<U0117> \x8F\xAB\xB6 |0 # LATIN SMALL LETTER E WITH DOT ABOVE
+<U0113> \x8F\xAB\xB7 |0 # LATIN SMALL LETTER E WITH MACRON
+<U0119> \x8F\xAB\xB8 |0 # LATIN SMALL LETTER E WITH OGONEK
+<U01F5> \x8F\xAB\xB9 |0 # LATIN SMALL LETTER G WITH ACUTE
+<U011D> \x8F\xAB\xBA |0 # LATIN SMALL LETTER G WITH CIRCUMFLEX
+<U011F> \x8F\xAB\xBB |0 # LATIN SMALL LETTER G WITH BREVE
+<U0121> \x8F\xAB\xBD |0 # LATIN SMALL LETTER G WITH DOT ABOVE
+<U0125> \x8F\xAB\xBE |0 # LATIN SMALL LETTER H WITH CIRCUMFLEX
+<U00ED> \x8F\xAB\xBF |0 # LATIN SMALL LETTER I WITH ACUTE
+<U00EC> \x8F\xAB\xC0 |0 # LATIN SMALL LETTER I WITH GRAVE
+<U00EF> \x8F\xAB\xC1 |0 # LATIN SMALL LETTER I WITH DIAERESIS
+<U00EE> \x8F\xAB\xC2 |0 # LATIN SMALL LETTER I WITH CIRCUMFLEX
+<U01D0> \x8F\xAB\xC3 |0 # LATIN SMALL LETTER I WITH CARON
+<U012B> \x8F\xAB\xC5 |0 # LATIN SMALL LETTER I WITH MACRON
+<U012F> \x8F\xAB\xC6 |0 # LATIN SMALL LETTER I WITH OGONEK
+<U0129> \x8F\xAB\xC7 |0 # LATIN SMALL LETTER I WITH TILDE
+<U0135> \x8F\xAB\xC8 |0 # LATIN SMALL LETTER J WITH CIRCUMFLEX
+<U0137> \x8F\xAB\xC9 |0 # LATIN SMALL LETTER K WITH CEDILLA
+<U013A> \x8F\xAB\xCA |0 # LATIN SMALL LETTER L WITH ACUTE
+<U013E> \x8F\xAB\xCB |0 # LATIN SMALL LETTER L WITH CARON
+<U013C> \x8F\xAB\xCC |0 # LATIN SMALL LETTER L WITH CEDILLA
+<U0144> \x8F\xAB\xCD |0 # LATIN SMALL LETTER N WITH ACUTE
+<U0148> \x8F\xAB\xCE |0 # LATIN SMALL LETTER N WITH CARON
+<U0146> \x8F\xAB\xCF |0 # LATIN SMALL LETTER N WITH CEDILLA
+<U00F1> \x8F\xAB\xD0 |0 # LATIN SMALL LETTER N WITH TILDE
+<U00F3> \x8F\xAB\xD1 |0 # LATIN SMALL LETTER O WITH ACUTE
+<U00F2> \x8F\xAB\xD2 |0 # LATIN SMALL LETTER O WITH GRAVE
+<U00F6> \x8F\xAB\xD3 |0 # LATIN SMALL LETTER O WITH DIAERESIS
+<U00F4> \x8F\xAB\xD4 |0 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+<U01D2> \x8F\xAB\xD5 |0 # LATIN SMALL LETTER O WITH CARON
+<U0151> \x8F\xAB\xD6 |0 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+<U014D> \x8F\xAB\xD7 |0 # LATIN SMALL LETTER O WITH MACRON
+<U00F5> \x8F\xAB\xD8 |0 # LATIN SMALL LETTER O WITH TILDE
+<U0155> \x8F\xAB\xD9 |0 # LATIN SMALL LETTER R WITH ACUTE
+<U0159> \x8F\xAB\xDA |0 # LATIN SMALL LETTER R WITH CARON
+<U0157> \x8F\xAB\xDB |0 # LATIN SMALL LETTER R WITH CEDILLA
+<U015B> \x8F\xAB\xDC |0 # LATIN SMALL LETTER S WITH ACUTE
+<U015D> \x8F\xAB\xDD |0 # LATIN SMALL LETTER S WITH CIRCUMFLEX
+<U0161> \x8F\xAB\xDE |0 # LATIN SMALL LETTER S WITH CARON
+<U015F> \x8F\xAB\xDF |0 # LATIN SMALL LETTER S WITH CEDILLA
+<U0165> \x8F\xAB\xE0 |0 # LATIN SMALL LETTER T WITH CARON
+<U0163> \x8F\xAB\xE1 |0 # LATIN SMALL LETTER T WITH CEDILLA
+<U00FA> \x8F\xAB\xE2 |0 # LATIN SMALL LETTER U WITH ACUTE
+<U00F9> \x8F\xAB\xE3 |0 # LATIN SMALL LETTER U WITH GRAVE
+<U00FC> \x8F\xAB\xE4 |0 # LATIN SMALL LETTER U WITH DIAERESIS
+<U00FB> \x8F\xAB\xE5 |0 # LATIN SMALL LETTER U WITH CIRCUMFLEX
+<U016D> \x8F\xAB\xE6 |0 # LATIN SMALL LETTER U WITH BREVE
+<U01D4> \x8F\xAB\xE7 |0 # LATIN SMALL LETTER U WITH CARON
+<U0171> \x8F\xAB\xE8 |0 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+<U016B> \x8F\xAB\xE9 |0 # LATIN SMALL LETTER U WITH MACRON
+<U0173> \x8F\xAB\xEA |0 # LATIN SMALL LETTER U WITH OGONEK
+<U016F> \x8F\xAB\xEB |0 # LATIN SMALL LETTER U WITH RING ABOVE
+<U0169> \x8F\xAB\xEC |0 # LATIN SMALL LETTER U WITH TILDE
+<U01D8> \x8F\xAB\xED |0 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<U01DC> \x8F\xAB\xEE |0 # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<U01DA> \x8F\xAB\xEF |0 # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<U01D6> \x8F\xAB\xF0 |0 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<U0175> \x8F\xAB\xF1 |0 # LATIN SMALL LETTER W WITH CIRCUMFLEX
+<U00FD> \x8F\xAB\xF2 |0 # LATIN SMALL LETTER Y WITH ACUTE
+<U00FF> \x8F\xAB\xF3 |0 # LATIN SMALL LETTER Y WITH DIAERESIS
+<U0177> \x8F\xAB\xF4 |0 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
+<U017A> \x8F\xAB\xF5 |0 # LATIN SMALL LETTER Z WITH ACUTE
+<U017E> \x8F\xAB\xF6 |0 # LATIN SMALL LETTER Z WITH CARON
+<U017C> \x8F\xAB\xF7 |0 # LATIN SMALL LETTER Z WITH DOT ABOVE
+<U4E02> \x8F\xB0\xA1 |0 # <CJK>
+<U4E04> \x8F\xB0\xA2 |0 # <CJK>
+<U4E05> \x8F\xB0\xA3 |0 # <CJK>
+<U4E0C> \x8F\xB0\xA4 |0 # <CJK>
+<U4E12> \x8F\xB0\xA5 |0 # <CJK>
+<U4E1F> \x8F\xB0\xA6 |0 # <CJK>
+<U4E23> \x8F\xB0\xA7 |0 # <CJK>
+<U4E24> \x8F\xB0\xA8 |0 # <CJK>
+<U4E28> \x8F\xB0\xA9 |0 # <CJK>
+<U4E2B> \x8F\xB0\xAA |0 # <CJK>
+<U4E2E> \x8F\xB0\xAB |0 # <CJK>
+<U4E2F> \x8F\xB0\xAC |0 # <CJK>
+<U4E30> \x8F\xB0\xAD |0 # <CJK>
+<U4E35> \x8F\xB0\xAE |0 # <CJK>
+<U4E40> \x8F\xB0\xAF |0 # <CJK>
+<U4E41> \x8F\xB0\xB0 |0 # <CJK>
+<U4E44> \x8F\xB0\xB1 |0 # <CJK>
+<U4E47> \x8F\xB0\xB2 |0 # <CJK>
+<U4E51> \x8F\xB0\xB3 |0 # <CJK>
+<U4E5A> \x8F\xB0\xB4 |0 # <CJK>
+<U4E5C> \x8F\xB0\xB5 |0 # <CJK>
+<U4E63> \x8F\xB0\xB6 |0 # <CJK>
+<U4E68> \x8F\xB0\xB7 |0 # <CJK>
+<U4E69> \x8F\xB0\xB8 |0 # <CJK>
+<U4E74> \x8F\xB0\xB9 |0 # <CJK>
+<U4E75> \x8F\xB0\xBA |0 # <CJK>
+<U4E79> \x8F\xB0\xBB |0 # <CJK>
+<U4E7F> \x8F\xB0\xBC |0 # <CJK>
+<U4E8D> \x8F\xB0\xBD |0 # <CJK>
+<U4E96> \x8F\xB0\xBE |0 # <CJK>
+<U4E97> \x8F\xB0\xBF |0 # <CJK>
+<U4E9D> \x8F\xB0\xC0 |0 # <CJK>
+<U4EAF> \x8F\xB0\xC1 |0 # <CJK>
+<U4EB9> \x8F\xB0\xC2 |0 # <CJK>
+<U4EC3> \x8F\xB0\xC3 |0 # <CJK>
+<U4ED0> \x8F\xB0\xC4 |0 # <CJK>
+<U4EDA> \x8F\xB0\xC5 |0 # <CJK>
+<U4EDB> \x8F\xB0\xC6 |0 # <CJK>
+<U4EE0> \x8F\xB0\xC7 |0 # <CJK>
+<U4EE1> \x8F\xB0\xC8 |0 # <CJK>
+<U4EE2> \x8F\xB0\xC9 |0 # <CJK>
+<U4EE8> \x8F\xB0\xCA |0 # <CJK>
+<U4EEF> \x8F\xB0\xCB |0 # <CJK>
+<U4EF1> \x8F\xB0\xCC |0 # <CJK>
+<U4EF3> \x8F\xB0\xCD |0 # <CJK>
+<U4EF5> \x8F\xB0\xCE |0 # <CJK>
+<U4EFD> \x8F\xB0\xCF |0 # <CJK>
+<U4EFE> \x8F\xB0\xD0 |0 # <CJK>
+<U4EFF> \x8F\xB0\xD1 |0 # <CJK>
+<U4F00> \x8F\xB0\xD2 |0 # <CJK>
+<U4F02> \x8F\xB0\xD3 |0 # <CJK>
+<U4F03> \x8F\xB0\xD4 |0 # <CJK>
+<U4F08> \x8F\xB0\xD5 |0 # <CJK>
+<U4F0B> \x8F\xB0\xD6 |0 # <CJK>
+<U4F0C> \x8F\xB0\xD7 |0 # <CJK>
+<U4F12> \x8F\xB0\xD8 |0 # <CJK>
+<U4F15> \x8F\xB0\xD9 |0 # <CJK>
+<U4F16> \x8F\xB0\xDA |0 # <CJK>
+<U4F17> \x8F\xB0\xDB |0 # <CJK>
+<U4F19> \x8F\xB0\xDC |0 # <CJK>
+<U4F2E> \x8F\xB0\xDD |0 # <CJK>
+<U4F31> \x8F\xB0\xDE |0 # <CJK>
+<U4F60> \x8F\xB0\xDF |0 # <CJK>
+<U4F33> \x8F\xB0\xE0 |0 # <CJK>
+<U4F35> \x8F\xB0\xE1 |0 # <CJK>
+<U4F37> \x8F\xB0\xE2 |0 # <CJK>
+<U4F39> \x8F\xB0\xE3 |0 # <CJK>
+<U4F3B> \x8F\xB0\xE4 |0 # <CJK>
+<U4F3E> \x8F\xB0\xE5 |0 # <CJK>
+<U4F40> \x8F\xB0\xE6 |0 # <CJK>
+<U4F42> \x8F\xB0\xE7 |0 # <CJK>
+<U4F48> \x8F\xB0\xE8 |0 # <CJK>
+<U4F49> \x8F\xB0\xE9 |0 # <CJK>
+<U4F4B> \x8F\xB0\xEA |0 # <CJK>
+<U4F4C> \x8F\xB0\xEB |0 # <CJK>
+<U4F52> \x8F\xB0\xEC |0 # <CJK>
+<U4F54> \x8F\xB0\xED |0 # <CJK>
+<U4F56> \x8F\xB0\xEE |0 # <CJK>
+<U4F58> \x8F\xB0\xEF |0 # <CJK>
+<U4F5F> \x8F\xB0\xF0 |0 # <CJK>
+<U4F63> \x8F\xB0\xF1 |0 # <CJK>
+<U4F6A> \x8F\xB0\xF2 |0 # <CJK>
+<U4F6C> \x8F\xB0\xF3 |0 # <CJK>
+<U4F6E> \x8F\xB0\xF4 |0 # <CJK>
+<U4F71> \x8F\xB0\xF5 |0 # <CJK>
+<U4F77> \x8F\xB0\xF6 |0 # <CJK>
+<U4F78> \x8F\xB0\xF7 |0 # <CJK>
+<U4F79> \x8F\xB0\xF8 |0 # <CJK>
+<U4F7A> \x8F\xB0\xF9 |0 # <CJK>
+<U4F7D> \x8F\xB0\xFA |0 # <CJK>
+<U4F7E> \x8F\xB0\xFB |0 # <CJK>
+<U4F81> \x8F\xB0\xFC |0 # <CJK>
+<U4F82> \x8F\xB0\xFD |0 # <CJK>
+<U4F84> \x8F\xB0\xFE |0 # <CJK>
+<U4F85> \x8F\xB1\xA1 |0 # <CJK>
+<U4F89> \x8F\xB1\xA2 |0 # <CJK>
+<U4F8A> \x8F\xB1\xA3 |0 # <CJK>
+<U4F8C> \x8F\xB1\xA4 |0 # <CJK>
+<U4F8E> \x8F\xB1\xA5 |0 # <CJK>
+<U4F90> \x8F\xB1\xA6 |0 # <CJK>
+<U4F92> \x8F\xB1\xA7 |0 # <CJK>
+<U4F93> \x8F\xB1\xA8 |0 # <CJK>
+<U4F94> \x8F\xB1\xA9 |0 # <CJK>
+<U4F97> \x8F\xB1\xAA |0 # <CJK>
+<U4F99> \x8F\xB1\xAB |0 # <CJK>
+<U4F9A> \x8F\xB1\xAC |0 # <CJK>
+<U4F9E> \x8F\xB1\xAD |0 # <CJK>
+<U4F9F> \x8F\xB1\xAE |0 # <CJK>
+<U4FB2> \x8F\xB1\xAF |0 # <CJK>
+<U4FB7> \x8F\xB1\xB0 |0 # <CJK>
+<U4FB9> \x8F\xB1\xB1 |0 # <CJK>
+<U4FBB> \x8F\xB1\xB2 |0 # <CJK>
+<U4FBC> \x8F\xB1\xB3 |0 # <CJK>
+<U4FBD> \x8F\xB1\xB4 |0 # <CJK>
+<U4FBE> \x8F\xB1\xB5 |0 # <CJK>
+<U4FC0> \x8F\xB1\xB6 |0 # <CJK>
+<U4FC1> \x8F\xB1\xB7 |0 # <CJK>
+<U4FC5> \x8F\xB1\xB8 |0 # <CJK>
+<U4FC6> \x8F\xB1\xB9 |0 # <CJK>
+<U4FC8> \x8F\xB1\xBA |0 # <CJK>
+<U4FC9> \x8F\xB1\xBB |0 # <CJK>
+<U4FCB> \x8F\xB1\xBC |0 # <CJK>
+<U4FCC> \x8F\xB1\xBD |0 # <CJK>
+<U4FCD> \x8F\xB1\xBE |0 # <CJK>
+<U4FCF> \x8F\xB1\xBF |0 # <CJK>
+<U4FD2> \x8F\xB1\xC0 |0 # <CJK>
+<U4FDC> \x8F\xB1\xC1 |0 # <CJK>
+<U4FE0> \x8F\xB1\xC2 |0 # <CJK>
+<U4FE2> \x8F\xB1\xC3 |0 # <CJK>
+<U4FF0> \x8F\xB1\xC4 |0 # <CJK>
+<U4FF2> \x8F\xB1\xC5 |0 # <CJK>
+<U4FFC> \x8F\xB1\xC6 |0 # <CJK>
+<U4FFD> \x8F\xB1\xC7 |0 # <CJK>
+<U4FFF> \x8F\xB1\xC8 |0 # <CJK>
+<U5000> \x8F\xB1\xC9 |0 # <CJK>
+<U5001> \x8F\xB1\xCA |0 # <CJK>
+<U5004> \x8F\xB1\xCB |0 # <CJK>
+<U5007> \x8F\xB1\xCC |0 # <CJK>
+<U500A> \x8F\xB1\xCD |0 # <CJK>
+<U500C> \x8F\xB1\xCE |0 # <CJK>
+<U500E> \x8F\xB1\xCF |0 # <CJK>
+<U5010> \x8F\xB1\xD0 |0 # <CJK>
+<U5013> \x8F\xB1\xD1 |0 # <CJK>
+<U5017> \x8F\xB1\xD2 |0 # <CJK>
+<U5018> \x8F\xB1\xD3 |0 # <CJK>
+<U501B> \x8F\xB1\xD4 |0 # <CJK>
+<U501C> \x8F\xB1\xD5 |0 # <CJK>
+<U501D> \x8F\xB1\xD6 |0 # <CJK>
+<U501E> \x8F\xB1\xD7 |0 # <CJK>
+<U5022> \x8F\xB1\xD8 |0 # <CJK>
+<U5027> \x8F\xB1\xD9 |0 # <CJK>
+<U502E> \x8F\xB1\xDA |0 # <CJK>
+<U5030> \x8F\xB1\xDB |0 # <CJK>
+<U5032> \x8F\xB1\xDC |0 # <CJK>
+<U5033> \x8F\xB1\xDD |0 # <CJK>
+<U5035> \x8F\xB1\xDE |0 # <CJK>
+<U5040> \x8F\xB1\xDF |0 # <CJK>
+<U5041> \x8F\xB1\xE0 |0 # <CJK>
+<U5042> \x8F\xB1\xE1 |0 # <CJK>
+<U5045> \x8F\xB1\xE2 |0 # <CJK>
+<U5046> \x8F\xB1\xE3 |0 # <CJK>
+<U504A> \x8F\xB1\xE4 |0 # <CJK>
+<U504C> \x8F\xB1\xE5 |0 # <CJK>
+<U504E> \x8F\xB1\xE6 |0 # <CJK>
+<U5051> \x8F\xB1\xE7 |0 # <CJK>
+<U5052> \x8F\xB1\xE8 |0 # <CJK>
+<U5053> \x8F\xB1\xE9 |0 # <CJK>
+<U5057> \x8F\xB1\xEA |0 # <CJK>
+<U5059> \x8F\xB1\xEB |0 # <CJK>
+<U505F> \x8F\xB1\xEC |0 # <CJK>
+<U5060> \x8F\xB1\xED |0 # <CJK>
+<U5062> \x8F\xB1\xEE |0 # <CJK>
+<U5063> \x8F\xB1\xEF |0 # <CJK>
+<U5066> \x8F\xB1\xF0 |0 # <CJK>
+<U5067> \x8F\xB1\xF1 |0 # <CJK>
+<U506A> \x8F\xB1\xF2 |0 # <CJK>
+<U506D> \x8F\xB1\xF3 |0 # <CJK>
+<U5070> \x8F\xB1\xF4 |0 # <CJK>
+<U5071> \x8F\xB1\xF5 |0 # <CJK>
+<U503B> \x8F\xB1\xF6 |0 # <CJK>
+<U5081> \x8F\xB1\xF7 |0 # <CJK>
+<U5083> \x8F\xB1\xF8 |0 # <CJK>
+<U5084> \x8F\xB1\xF9 |0 # <CJK>
+<U5086> \x8F\xB1\xFA |0 # <CJK>
+<U508A> \x8F\xB1\xFB |0 # <CJK>
+<U508E> \x8F\xB1\xFC |0 # <CJK>
+<U508F> \x8F\xB1\xFD |0 # <CJK>
+<U5090> \x8F\xB1\xFE |0 # <CJK>
+<U5092> \x8F\xB2\xA1 |0 # <CJK>
+<U5093> \x8F\xB2\xA2 |0 # <CJK>
+<U5094> \x8F\xB2\xA3 |0 # <CJK>
+<U5096> \x8F\xB2\xA4 |0 # <CJK>
+<U509B> \x8F\xB2\xA5 |0 # <CJK>
+<U509C> \x8F\xB2\xA6 |0 # <CJK>
+<U509E> \x8F\xB2\xA7 |0 # <CJK>
+<U509F> \x8F\xB2\xA8 |0 # <CJK>
+<U50A0> \x8F\xB2\xA9 |0 # <CJK>
+<U50A1> \x8F\xB2\xAA |0 # <CJK>
+<U50A2> \x8F\xB2\xAB |0 # <CJK>
+<U50AA> \x8F\xB2\xAC |0 # <CJK>
+<U50AF> \x8F\xB2\xAD |0 # <CJK>
+<U50B0> \x8F\xB2\xAE |0 # <CJK>
+<U50B9> \x8F\xB2\xAF |0 # <CJK>
+<U50BA> \x8F\xB2\xB0 |0 # <CJK>
+<U50BD> \x8F\xB2\xB1 |0 # <CJK>
+<U50C0> \x8F\xB2\xB2 |0 # <CJK>
+<U50C3> \x8F\xB2\xB3 |0 # <CJK>
+<U50C4> \x8F\xB2\xB4 |0 # <CJK>
+<U50C7> \x8F\xB2\xB5 |0 # <CJK>
+<U50CC> \x8F\xB2\xB6 |0 # <CJK>
+<U50CE> \x8F\xB2\xB7 |0 # <CJK>
+<U50D0> \x8F\xB2\xB8 |0 # <CJK>
+<U50D3> \x8F\xB2\xB9 |0 # <CJK>
+<U50D4> \x8F\xB2\xBA |0 # <CJK>
+<U50D8> \x8F\xB2\xBB |0 # <CJK>
+<U50DC> \x8F\xB2\xBC |0 # <CJK>
+<U50DD> \x8F\xB2\xBD |0 # <CJK>
+<U50DF> \x8F\xB2\xBE |0 # <CJK>
+<U50E2> \x8F\xB2\xBF |0 # <CJK>
+<U50E4> \x8F\xB2\xC0 |0 # <CJK>
+<U50E6> \x8F\xB2\xC1 |0 # <CJK>
+<U50E8> \x8F\xB2\xC2 |0 # <CJK>
+<U50E9> \x8F\xB2\xC3 |0 # <CJK>
+<U50EF> \x8F\xB2\xC4 |0 # <CJK>
+<U50F1> \x8F\xB2\xC5 |0 # <CJK>
+<U50F6> \x8F\xB2\xC6 |0 # <CJK>
+<U50FA> \x8F\xB2\xC7 |0 # <CJK>
+<U50FE> \x8F\xB2\xC8 |0 # <CJK>
+<U5103> \x8F\xB2\xC9 |0 # <CJK>
+<U5106> \x8F\xB2\xCA |0 # <CJK>
+<U5107> \x8F\xB2\xCB |0 # <CJK>
+<U5108> \x8F\xB2\xCC |0 # <CJK>
+<U510B> \x8F\xB2\xCD |0 # <CJK>
+<U510C> \x8F\xB2\xCE |0 # <CJK>
+<U510D> \x8F\xB2\xCF |0 # <CJK>
+<U510E> \x8F\xB2\xD0 |0 # <CJK>
+<U50F2> \x8F\xB2\xD1 |0 # <CJK>
+<U5110> \x8F\xB2\xD2 |0 # <CJK>
+<U5117> \x8F\xB2\xD3 |0 # <CJK>
+<U5119> \x8F\xB2\xD4 |0 # <CJK>
+<U511B> \x8F\xB2\xD5 |0 # <CJK>
+<U511C> \x8F\xB2\xD6 |0 # <CJK>
+<U511D> \x8F\xB2\xD7 |0 # <CJK>
+<U511E> \x8F\xB2\xD8 |0 # <CJK>
+<U5123> \x8F\xB2\xD9 |0 # <CJK>
+<U5127> \x8F\xB2\xDA |0 # <CJK>
+<U5128> \x8F\xB2\xDB |0 # <CJK>
+<U512C> \x8F\xB2\xDC |0 # <CJK>
+<U512D> \x8F\xB2\xDD |0 # <CJK>
+<U512F> \x8F\xB2\xDE |0 # <CJK>
+<U5131> \x8F\xB2\xDF |0 # <CJK>
+<U5133> \x8F\xB2\xE0 |0 # <CJK>
+<U5134> \x8F\xB2\xE1 |0 # <CJK>
+<U5135> \x8F\xB2\xE2 |0 # <CJK>
+<U5138> \x8F\xB2\xE3 |0 # <CJK>
+<U5139> \x8F\xB2\xE4 |0 # <CJK>
+<U5142> \x8F\xB2\xE5 |0 # <CJK>
+<U514A> \x8F\xB2\xE6 |0 # <CJK>
+<U514F> \x8F\xB2\xE7 |0 # <CJK>
+<U5153> \x8F\xB2\xE8 |0 # <CJK>
+<U5155> \x8F\xB2\xE9 |0 # <CJK>
+<U5157> \x8F\xB2\xEA |0 # <CJK>
+<U5158> \x8F\xB2\xEB |0 # <CJK>
+<U515F> \x8F\xB2\xEC |0 # <CJK>
+<U5164> \x8F\xB2\xED |0 # <CJK>
+<U5166> \x8F\xB2\xEE |0 # <CJK>
+<U517E> \x8F\xB2\xEF |0 # <CJK>
+<U5183> \x8F\xB2\xF0 |0 # <CJK>
+<U5184> \x8F\xB2\xF1 |0 # <CJK>
+<U518B> \x8F\xB2\xF2 |0 # <CJK>
+<U518E> \x8F\xB2\xF3 |0 # <CJK>
+<U5198> \x8F\xB2\xF4 |0 # <CJK>
+<U519D> \x8F\xB2\xF5 |0 # <CJK>
+<U51A1> \x8F\xB2\xF6 |0 # <CJK>
+<U51A3> \x8F\xB2\xF7 |0 # <CJK>
+<U51AD> \x8F\xB2\xF8 |0 # <CJK>
+<U51B8> \x8F\xB2\xF9 |0 # <CJK>
+<U51BA> \x8F\xB2\xFA |0 # <CJK>
+<U51BC> \x8F\xB2\xFB |0 # <CJK>
+<U51BE> \x8F\xB2\xFC |0 # <CJK>
+<U51BF> \x8F\xB2\xFD |0 # <CJK>
+<U51C2> \x8F\xB2\xFE |0 # <CJK>
+<U51C8> \x8F\xB3\xA1 |0 # <CJK>
+<U51CF> \x8F\xB3\xA2 |0 # <CJK>
+<U51D1> \x8F\xB3\xA3 |0 # <CJK>
+<U51D2> \x8F\xB3\xA4 |0 # <CJK>
+<U51D3> \x8F\xB3\xA5 |0 # <CJK>
+<U51D5> \x8F\xB3\xA6 |0 # <CJK>
+<U51D8> \x8F\xB3\xA7 |0 # <CJK>
+<U51DE> \x8F\xB3\xA8 |0 # <CJK>
+<U51E2> \x8F\xB3\xA9 |0 # <CJK>
+<U51E5> \x8F\xB3\xAA |0 # <CJK>
+<U51EE> \x8F\xB3\xAB |0 # <CJK>
+<U51F2> \x8F\xB3\xAC |0 # <CJK>
+<U51F3> \x8F\xB3\xAD |0 # <CJK>
+<U51F4> \x8F\xB3\xAE |0 # <CJK>
+<U51F7> \x8F\xB3\xAF |0 # <CJK>
+<U5201> \x8F\xB3\xB0 |0 # <CJK>
+<U5202> \x8F\xB3\xB1 |0 # <CJK>
+<U5205> \x8F\xB3\xB2 |0 # <CJK>
+<U5212> \x8F\xB3\xB3 |0 # <CJK>
+<U5213> \x8F\xB3\xB4 |0 # <CJK>
+<U5215> \x8F\xB3\xB5 |0 # <CJK>
+<U5216> \x8F\xB3\xB6 |0 # <CJK>
+<U5218> \x8F\xB3\xB7 |0 # <CJK>
+<U5222> \x8F\xB3\xB8 |0 # <CJK>
+<U5228> \x8F\xB3\xB9 |0 # <CJK>
+<U5231> \x8F\xB3\xBA |0 # <CJK>
+<U5232> \x8F\xB3\xBB |0 # <CJK>
+<U5235> \x8F\xB3\xBC |0 # <CJK>
+<U523C> \x8F\xB3\xBD |0 # <CJK>
+<U5245> \x8F\xB3\xBE |0 # <CJK>
+<U5249> \x8F\xB3\xBF |0 # <CJK>
+<U5255> \x8F\xB3\xC0 |0 # <CJK>
+<U5257> \x8F\xB3\xC1 |0 # <CJK>
+<U5258> \x8F\xB3\xC2 |0 # <CJK>
+<U525A> \x8F\xB3\xC3 |0 # <CJK>
+<U525C> \x8F\xB3\xC4 |0 # <CJK>
+<U525F> \x8F\xB3\xC5 |0 # <CJK>
+<U5260> \x8F\xB3\xC6 |0 # <CJK>
+<U5261> \x8F\xB3\xC7 |0 # <CJK>
+<U5266> \x8F\xB3\xC8 |0 # <CJK>
+<U526E> \x8F\xB3\xC9 |0 # <CJK>
+<U5277> \x8F\xB3\xCA |0 # <CJK>
+<U5278> \x8F\xB3\xCB |0 # <CJK>
+<U5279> \x8F\xB3\xCC |0 # <CJK>
+<U5280> \x8F\xB3\xCD |0 # <CJK>
+<U5282> \x8F\xB3\xCE |0 # <CJK>
+<U5285> \x8F\xB3\xCF |0 # <CJK>
+<U528A> \x8F\xB3\xD0 |0 # <CJK>
+<U528C> \x8F\xB3\xD1 |0 # <CJK>
+<U5293> \x8F\xB3\xD2 |0 # <CJK>
+<U5295> \x8F\xB3\xD3 |0 # <CJK>
+<U5296> \x8F\xB3\xD4 |0 # <CJK>
+<U5297> \x8F\xB3\xD5 |0 # <CJK>
+<U5298> \x8F\xB3\xD6 |0 # <CJK>
+<U529A> \x8F\xB3\xD7 |0 # <CJK>
+<U529C> \x8F\xB3\xD8 |0 # <CJK>
+<U52A4> \x8F\xB3\xD9 |0 # <CJK>
+<U52A5> \x8F\xB3\xDA |0 # <CJK>
+<U52A6> \x8F\xB3\xDB |0 # <CJK>
+<U52A7> \x8F\xB3\xDC |0 # <CJK>
+<U52AF> \x8F\xB3\xDD |0 # <CJK>
+<U52B0> \x8F\xB3\xDE |0 # <CJK>
+<U52B6> \x8F\xB3\xDF |0 # <CJK>
+<U52B7> \x8F\xB3\xE0 |0 # <CJK>
+<U52B8> \x8F\xB3\xE1 |0 # <CJK>
+<U52BA> \x8F\xB3\xE2 |0 # <CJK>
+<U52BB> \x8F\xB3\xE3 |0 # <CJK>
+<U52BD> \x8F\xB3\xE4 |0 # <CJK>
+<U52C0> \x8F\xB3\xE5 |0 # <CJK>
+<U52C4> \x8F\xB3\xE6 |0 # <CJK>
+<U52C6> \x8F\xB3\xE7 |0 # <CJK>
+<U52C8> \x8F\xB3\xE8 |0 # <CJK>
+<U52CC> \x8F\xB3\xE9 |0 # <CJK>
+<U52CF> \x8F\xB3\xEA |0 # <CJK>
+<U52D1> \x8F\xB3\xEB |0 # <CJK>
+<U52D4> \x8F\xB3\xEC |0 # <CJK>
+<U52D6> \x8F\xB3\xED |0 # <CJK>
+<U52DB> \x8F\xB3\xEE |0 # <CJK>
+<U52DC> \x8F\xB3\xEF |0 # <CJK>
+<U52E1> \x8F\xB3\xF0 |0 # <CJK>
+<U52E5> \x8F\xB3\xF1 |0 # <CJK>
+<U52E8> \x8F\xB3\xF2 |0 # <CJK>
+<U52E9> \x8F\xB3\xF3 |0 # <CJK>
+<U52EA> \x8F\xB3\xF4 |0 # <CJK>
+<U52EC> \x8F\xB3\xF5 |0 # <CJK>
+<U52F0> \x8F\xB3\xF6 |0 # <CJK>
+<U52F1> \x8F\xB3\xF7 |0 # <CJK>
+<U52F4> \x8F\xB3\xF8 |0 # <CJK>
+<U52F6> \x8F\xB3\xF9 |0 # <CJK>
+<U52F7> \x8F\xB3\xFA |0 # <CJK>
+<U5300> \x8F\xB3\xFB |0 # <CJK>
+<U5303> \x8F\xB3\xFC |0 # <CJK>
+<U530A> \x8F\xB3\xFD |0 # <CJK>
+<U530B> \x8F\xB3\xFE |0 # <CJK>
+<U530C> \x8F\xB4\xA1 |0 # <CJK>
+<U5311> \x8F\xB4\xA2 |0 # <CJK>
+<U5313> \x8F\xB4\xA3 |0 # <CJK>
+<U5318> \x8F\xB4\xA4 |0 # <CJK>
+<U531B> \x8F\xB4\xA5 |0 # <CJK>
+<U531C> \x8F\xB4\xA6 |0 # <CJK>
+<U531E> \x8F\xB4\xA7 |0 # <CJK>
+<U531F> \x8F\xB4\xA8 |0 # <CJK>
+<U5325> \x8F\xB4\xA9 |0 # <CJK>
+<U5327> \x8F\xB4\xAA |0 # <CJK>
+<U5328> \x8F\xB4\xAB |0 # <CJK>
+<U5329> \x8F\xB4\xAC |0 # <CJK>
+<U532B> \x8F\xB4\xAD |0 # <CJK>
+<U532C> \x8F\xB4\xAE |0 # <CJK>
+<U532D> \x8F\xB4\xAF |0 # <CJK>
+<U5330> \x8F\xB4\xB0 |0 # <CJK>
+<U5332> \x8F\xB4\xB1 |0 # <CJK>
+<U5335> \x8F\xB4\xB2 |0 # <CJK>
+<U533C> \x8F\xB4\xB3 |0 # <CJK>
+<U533D> \x8F\xB4\xB4 |0 # <CJK>
+<U533E> \x8F\xB4\xB5 |0 # <CJK>
+<U5342> \x8F\xB4\xB6 |0 # <CJK>
+<U534C> \x8F\xB4\xB7 |0 # <CJK>
+<U534B> \x8F\xB4\xB8 |0 # <CJK>
+<U5359> \x8F\xB4\xB9 |0 # <CJK>
+<U535B> \x8F\xB4\xBA |0 # <CJK>
+<U5361> \x8F\xB4\xBB |0 # <CJK>
+<U5363> \x8F\xB4\xBC |0 # <CJK>
+<U5365> \x8F\xB4\xBD |0 # <CJK>
+<U536C> \x8F\xB4\xBE |0 # <CJK>
+<U536D> \x8F\xB4\xBF |0 # <CJK>
+<U5372> \x8F\xB4\xC0 |0 # <CJK>
+<U5379> \x8F\xB4\xC1 |0 # <CJK>
+<U537E> \x8F\xB4\xC2 |0 # <CJK>
+<U5383> \x8F\xB4\xC3 |0 # <CJK>
+<U5387> \x8F\xB4\xC4 |0 # <CJK>
+<U5388> \x8F\xB4\xC5 |0 # <CJK>
+<U538E> \x8F\xB4\xC6 |0 # <CJK>
+<U5393> \x8F\xB4\xC7 |0 # <CJK>
+<U5394> \x8F\xB4\xC8 |0 # <CJK>
+<U5399> \x8F\xB4\xC9 |0 # <CJK>
+<U539D> \x8F\xB4\xCA |0 # <CJK>
+<U53A1> \x8F\xB4\xCB |0 # <CJK>
+<U53A4> \x8F\xB4\xCC |0 # <CJK>
+<U53AA> \x8F\xB4\xCD |0 # <CJK>
+<U53AB> \x8F\xB4\xCE |0 # <CJK>
+<U53AF> \x8F\xB4\xCF |0 # <CJK>
+<U53B2> \x8F\xB4\xD0 |0 # <CJK>
+<U53B4> \x8F\xB4\xD1 |0 # <CJK>
+<U53B5> \x8F\xB4\xD2 |0 # <CJK>
+<U53B7> \x8F\xB4\xD3 |0 # <CJK>
+<U53B8> \x8F\xB4\xD4 |0 # <CJK>
+<U53BA> \x8F\xB4\xD5 |0 # <CJK>
+<U53BD> \x8F\xB4\xD6 |0 # <CJK>
+<U53C0> \x8F\xB4\xD7 |0 # <CJK>
+<U53C5> \x8F\xB4\xD8 |0 # <CJK>
+<U53CF> \x8F\xB4\xD9 |0 # <CJK>
+<U53D2> \x8F\xB4\xDA |0 # <CJK>
+<U53D3> \x8F\xB4\xDB |0 # <CJK>
+<U53D5> \x8F\xB4\xDC |0 # <CJK>
+<U53DA> \x8F\xB4\xDD |0 # <CJK>
+<U53DD> \x8F\xB4\xDE |0 # <CJK>
+<U53DE> \x8F\xB4\xDF |0 # <CJK>
+<U53E0> \x8F\xB4\xE0 |0 # <CJK>
+<U53E6> \x8F\xB4\xE1 |0 # <CJK>
+<U53E7> \x8F\xB4\xE2 |0 # <CJK>
+<U53F5> \x8F\xB4\xE3 |0 # <CJK>
+<U5402> \x8F\xB4\xE4 |0 # <CJK>
+<U5413> \x8F\xB4\xE5 |0 # <CJK>
+<U541A> \x8F\xB4\xE6 |0 # <CJK>
+<U5421> \x8F\xB4\xE7 |0 # <CJK>
+<U5427> \x8F\xB4\xE8 |0 # <CJK>
+<U5428> \x8F\xB4\xE9 |0 # <CJK>
+<U542A> \x8F\xB4\xEA |0 # <CJK>
+<U542F> \x8F\xB4\xEB |0 # <CJK>
+<U5431> \x8F\xB4\xEC |0 # <CJK>
+<U5434> \x8F\xB4\xED |0 # <CJK>
+<U5435> \x8F\xB4\xEE |0 # <CJK>
+<U5443> \x8F\xB4\xEF |0 # <CJK>
+<U5444> \x8F\xB4\xF0 |0 # <CJK>
+<U5447> \x8F\xB4\xF1 |0 # <CJK>
+<U544D> \x8F\xB4\xF2 |0 # <CJK>
+<U544F> \x8F\xB4\xF3 |0 # <CJK>
+<U545E> \x8F\xB4\xF4 |0 # <CJK>
+<U5462> \x8F\xB4\xF5 |0 # <CJK>
+<U5464> \x8F\xB4\xF6 |0 # <CJK>
+<U5466> \x8F\xB4\xF7 |0 # <CJK>
+<U5467> \x8F\xB4\xF8 |0 # <CJK>
+<U5469> \x8F\xB4\xF9 |0 # <CJK>
+<U546B> \x8F\xB4\xFA |0 # <CJK>
+<U546D> \x8F\xB4\xFB |0 # <CJK>
+<U546E> \x8F\xB4\xFC |0 # <CJK>
+<U5474> \x8F\xB4\xFD |0 # <CJK>
+<U547F> \x8F\xB4\xFE |0 # <CJK>
+<U5481> \x8F\xB5\xA1 |0 # <CJK>
+<U5483> \x8F\xB5\xA2 |0 # <CJK>
+<U5485> \x8F\xB5\xA3 |0 # <CJK>
+<U5488> \x8F\xB5\xA4 |0 # <CJK>
+<U5489> \x8F\xB5\xA5 |0 # <CJK>
+<U548D> \x8F\xB5\xA6 |0 # <CJK>
+<U5491> \x8F\xB5\xA7 |0 # <CJK>
+<U5495> \x8F\xB5\xA8 |0 # <CJK>
+<U5496> \x8F\xB5\xA9 |0 # <CJK>
+<U549C> \x8F\xB5\xAA |0 # <CJK>
+<U549F> \x8F\xB5\xAB |0 # <CJK>
+<U54A1> \x8F\xB5\xAC |0 # <CJK>
+<U54A6> \x8F\xB5\xAD |0 # <CJK>
+<U54A7> \x8F\xB5\xAE |0 # <CJK>
+<U54A9> \x8F\xB5\xAF |0 # <CJK>
+<U54AA> \x8F\xB5\xB0 |0 # <CJK>
+<U54AD> \x8F\xB5\xB1 |0 # <CJK>
+<U54AE> \x8F\xB5\xB2 |0 # <CJK>
+<U54B1> \x8F\xB5\xB3 |0 # <CJK>
+<U54B7> \x8F\xB5\xB4 |0 # <CJK>
+<U54B9> \x8F\xB5\xB5 |0 # <CJK>
+<U54BA> \x8F\xB5\xB6 |0 # <CJK>
+<U54BB> \x8F\xB5\xB7 |0 # <CJK>
+<U54BF> \x8F\xB5\xB8 |0 # <CJK>
+<U54C6> \x8F\xB5\xB9 |0 # <CJK>
+<U54CA> \x8F\xB5\xBA |0 # <CJK>
+<U54CD> \x8F\xB5\xBB |0 # <CJK>
+<U54CE> \x8F\xB5\xBC |0 # <CJK>
+<U54E0> \x8F\xB5\xBD |0 # <CJK>
+<U54EA> \x8F\xB5\xBE |0 # <CJK>
+<U54EC> \x8F\xB5\xBF |0 # <CJK>
+<U54EF> \x8F\xB5\xC0 |0 # <CJK>
+<U54F6> \x8F\xB5\xC1 |0 # <CJK>
+<U54FC> \x8F\xB5\xC2 |0 # <CJK>
+<U54FE> \x8F\xB5\xC3 |0 # <CJK>
+<U54FF> \x8F\xB5\xC4 |0 # <CJK>
+<U5500> \x8F\xB5\xC5 |0 # <CJK>
+<U5501> \x8F\xB5\xC6 |0 # <CJK>
+<U5505> \x8F\xB5\xC7 |0 # <CJK>
+<U5508> \x8F\xB5\xC8 |0 # <CJK>
+<U5509> \x8F\xB5\xC9 |0 # <CJK>
+<U550C> \x8F\xB5\xCA |0 # <CJK>
+<U550D> \x8F\xB5\xCB |0 # <CJK>
+<U550E> \x8F\xB5\xCC |0 # <CJK>
+<U5515> \x8F\xB5\xCD |0 # <CJK>
+<U552A> \x8F\xB5\xCE |0 # <CJK>
+<U552B> \x8F\xB5\xCF |0 # <CJK>
+<U5532> \x8F\xB5\xD0 |0 # <CJK>
+<U5535> \x8F\xB5\xD1 |0 # <CJK>
+<U5536> \x8F\xB5\xD2 |0 # <CJK>
+<U553B> \x8F\xB5\xD3 |0 # <CJK>
+<U553C> \x8F\xB5\xD4 |0 # <CJK>
+<U553D> \x8F\xB5\xD5 |0 # <CJK>
+<U5541> \x8F\xB5\xD6 |0 # <CJK>
+<U5547> \x8F\xB5\xD7 |0 # <CJK>
+<U5549> \x8F\xB5\xD8 |0 # <CJK>
+<U554A> \x8F\xB5\xD9 |0 # <CJK>
+<U554D> \x8F\xB5\xDA |0 # <CJK>
+<U5550> \x8F\xB5\xDB |0 # <CJK>
+<U5551> \x8F\xB5\xDC |0 # <CJK>
+<U5558> \x8F\xB5\xDD |0 # <CJK>
+<U555A> \x8F\xB5\xDE |0 # <CJK>
+<U555B> \x8F\xB5\xDF |0 # <CJK>
+<U555E> \x8F\xB5\xE0 |0 # <CJK>
+<U5560> \x8F\xB5\xE1 |0 # <CJK>
+<U5561> \x8F\xB5\xE2 |0 # <CJK>
+<U5564> \x8F\xB5\xE3 |0 # <CJK>
+<U5566> \x8F\xB5\xE4 |0 # <CJK>
+<U557F> \x8F\xB5\xE5 |0 # <CJK>
+<U5581> \x8F\xB5\xE6 |0 # <CJK>
+<U5582> \x8F\xB5\xE7 |0 # <CJK>
+<U5586> \x8F\xB5\xE8 |0 # <CJK>
+<U5588> \x8F\xB5\xE9 |0 # <CJK>
+<U558E> \x8F\xB5\xEA |0 # <CJK>
+<U558F> \x8F\xB5\xEB |0 # <CJK>
+<U5591> \x8F\xB5\xEC |0 # <CJK>
+<U5592> \x8F\xB5\xED |0 # <CJK>
+<U5593> \x8F\xB5\xEE |0 # <CJK>
+<U5594> \x8F\xB5\xEF |0 # <CJK>
+<U5597> \x8F\xB5\xF0 |0 # <CJK>
+<U55A3> \x8F\xB5\xF1 |0 # <CJK>
+<U55A4> \x8F\xB5\xF2 |0 # <CJK>
+<U55AD> \x8F\xB5\xF3 |0 # <CJK>
+<U55B2> \x8F\xB5\xF4 |0 # <CJK>
+<U55BF> \x8F\xB5\xF5 |0 # <CJK>
+<U55C1> \x8F\xB5\xF6 |0 # <CJK>
+<U55C3> \x8F\xB5\xF7 |0 # <CJK>
+<U55C6> \x8F\xB5\xF8 |0 # <CJK>
+<U55C9> \x8F\xB5\xF9 |0 # <CJK>
+<U55CB> \x8F\xB5\xFA |0 # <CJK>
+<U55CC> \x8F\xB5\xFB |0 # <CJK>
+<U55CE> \x8F\xB5\xFC |0 # <CJK>
+<U55D1> \x8F\xB5\xFD |0 # <CJK>
+<U55D2> \x8F\xB5\xFE |0 # <CJK>
+<U55D3> \x8F\xB6\xA1 |0 # <CJK>
+<U55D7> \x8F\xB6\xA2 |0 # <CJK>
+<U55D8> \x8F\xB6\xA3 |0 # <CJK>
+<U55DB> \x8F\xB6\xA4 |0 # <CJK>
+<U55DE> \x8F\xB6\xA5 |0 # <CJK>
+<U55E2> \x8F\xB6\xA6 |0 # <CJK>
+<U55E9> \x8F\xB6\xA7 |0 # <CJK>
+<U55F6> \x8F\xB6\xA8 |0 # <CJK>
+<U55FF> \x8F\xB6\xA9 |0 # <CJK>
+<U5605> \x8F\xB6\xAA |0 # <CJK>
+<U5608> \x8F\xB6\xAB |0 # <CJK>
+<U560A> \x8F\xB6\xAC |0 # <CJK>
+<U560D> \x8F\xB6\xAD |0 # <CJK>
+<U560E> \x8F\xB6\xAE |0 # <CJK>
+<U560F> \x8F\xB6\xAF |0 # <CJK>
+<U5610> \x8F\xB6\xB0 |0 # <CJK>
+<U5611> \x8F\xB6\xB1 |0 # <CJK>
+<U5612> \x8F\xB6\xB2 |0 # <CJK>
+<U5619> \x8F\xB6\xB3 |0 # <CJK>
+<U562C> \x8F\xB6\xB4 |0 # <CJK>
+<U5630> \x8F\xB6\xB5 |0 # <CJK>
+<U5633> \x8F\xB6\xB6 |0 # <CJK>
+<U5635> \x8F\xB6\xB7 |0 # <CJK>
+<U5637> \x8F\xB6\xB8 |0 # <CJK>
+<U5639> \x8F\xB6\xB9 |0 # <CJK>
+<U563B> \x8F\xB6\xBA |0 # <CJK>
+<U563C> \x8F\xB6\xBB |0 # <CJK>
+<U563D> \x8F\xB6\xBC |0 # <CJK>
+<U563F> \x8F\xB6\xBD |0 # <CJK>
+<U5640> \x8F\xB6\xBE |0 # <CJK>
+<U5641> \x8F\xB6\xBF |0 # <CJK>
+<U5643> \x8F\xB6\xC0 |0 # <CJK>
+<U5644> \x8F\xB6\xC1 |0 # <CJK>
+<U5646> \x8F\xB6\xC2 |0 # <CJK>
+<U5649> \x8F\xB6\xC3 |0 # <CJK>
+<U564B> \x8F\xB6\xC4 |0 # <CJK>
+<U564D> \x8F\xB6\xC5 |0 # <CJK>
+<U564F> \x8F\xB6\xC6 |0 # <CJK>
+<U5654> \x8F\xB6\xC7 |0 # <CJK>
+<U565E> \x8F\xB6\xC8 |0 # <CJK>
+<U5660> \x8F\xB6\xC9 |0 # <CJK>
+<U5661> \x8F\xB6\xCA |0 # <CJK>
+<U5662> \x8F\xB6\xCB |0 # <CJK>
+<U5663> \x8F\xB6\xCC |0 # <CJK>
+<U5666> \x8F\xB6\xCD |0 # <CJK>
+<U5669> \x8F\xB6\xCE |0 # <CJK>
+<U566D> \x8F\xB6\xCF |0 # <CJK>
+<U566F> \x8F\xB6\xD0 |0 # <CJK>
+<U5671> \x8F\xB6\xD1 |0 # <CJK>
+<U5672> \x8F\xB6\xD2 |0 # <CJK>
+<U5675> \x8F\xB6\xD3 |0 # <CJK>
+<U5684> \x8F\xB6\xD4 |0 # <CJK>
+<U5685> \x8F\xB6\xD5 |0 # <CJK>
+<U5688> \x8F\xB6\xD6 |0 # <CJK>
+<U568B> \x8F\xB6\xD7 |0 # <CJK>
+<U568C> \x8F\xB6\xD8 |0 # <CJK>
+<U5695> \x8F\xB6\xD9 |0 # <CJK>
+<U5699> \x8F\xB6\xDA |0 # <CJK>
+<U569A> \x8F\xB6\xDB |0 # <CJK>
+<U569D> \x8F\xB6\xDC |0 # <CJK>
+<U569E> \x8F\xB6\xDD |0 # <CJK>
+<U569F> \x8F\xB6\xDE |0 # <CJK>
+<U56A6> \x8F\xB6\xDF |0 # <CJK>
+<U56A7> \x8F\xB6\xE0 |0 # <CJK>
+<U56A8> \x8F\xB6\xE1 |0 # <CJK>
+<U56A9> \x8F\xB6\xE2 |0 # <CJK>
+<U56AB> \x8F\xB6\xE3 |0 # <CJK>
+<U56AC> \x8F\xB6\xE4 |0 # <CJK>
+<U56AD> \x8F\xB6\xE5 |0 # <CJK>
+<U56B1> \x8F\xB6\xE6 |0 # <CJK>
+<U56B3> \x8F\xB6\xE7 |0 # <CJK>
+<U56B7> \x8F\xB6\xE8 |0 # <CJK>
+<U56BE> \x8F\xB6\xE9 |0 # <CJK>
+<U56C5> \x8F\xB6\xEA |0 # <CJK>
+<U56C9> \x8F\xB6\xEB |0 # <CJK>
+<U56CA> \x8F\xB6\xEC |0 # <CJK>
+<U56CB> \x8F\xB6\xED |0 # <CJK>
+<U56CF> \x8F\xB6\xEE |0 # <CJK>
+<U56D0> \x8F\xB6\xEF |0 # <CJK>
+<U56CC> \x8F\xB6\xF0 |0 # <CJK>
+<U56CD> \x8F\xB6\xF1 |0 # <CJK>
+<U56D9> \x8F\xB6\xF2 |0 # <CJK>
+<U56DC> \x8F\xB6\xF3 |0 # <CJK>
+<U56DD> \x8F\xB6\xF4 |0 # <CJK>
+<U56DF> \x8F\xB6\xF5 |0 # <CJK>
+<U56E1> \x8F\xB6\xF6 |0 # <CJK>
+<U56E4> \x8F\xB6\xF7 |0 # <CJK>
+<U56E5> \x8F\xB6\xF8 |0 # <CJK>
+<U56E6> \x8F\xB6\xF9 |0 # <CJK>
+<U56E7> \x8F\xB6\xFA |0 # <CJK>
+<U56E8> \x8F\xB6\xFB |0 # <CJK>
+<U56F1> \x8F\xB6\xFC |0 # <CJK>
+<U56EB> \x8F\xB6\xFD |0 # <CJK>
+<U56ED> \x8F\xB6\xFE |0 # <CJK>
+<U56F6> \x8F\xB7\xA1 |0 # <CJK>
+<U56F7> \x8F\xB7\xA2 |0 # <CJK>
+<U5701> \x8F\xB7\xA3 |0 # <CJK>
+<U5702> \x8F\xB7\xA4 |0 # <CJK>
+<U5707> \x8F\xB7\xA5 |0 # <CJK>
+<U570A> \x8F\xB7\xA6 |0 # <CJK>
+<U570C> \x8F\xB7\xA7 |0 # <CJK>
+<U5711> \x8F\xB7\xA8 |0 # <CJK>
+<U5715> \x8F\xB7\xA9 |0 # <CJK>
+<U571A> \x8F\xB7\xAA |0 # <CJK>
+<U571B> \x8F\xB7\xAB |0 # <CJK>
+<U571D> \x8F\xB7\xAC |0 # <CJK>
+<U5720> \x8F\xB7\xAD |0 # <CJK>
+<U5722> \x8F\xB7\xAE |0 # <CJK>
+<U5723> \x8F\xB7\xAF |0 # <CJK>
+<U5724> \x8F\xB7\xB0 |0 # <CJK>
+<U5725> \x8F\xB7\xB1 |0 # <CJK>
+<U5729> \x8F\xB7\xB2 |0 # <CJK>
+<U572A> \x8F\xB7\xB3 |0 # <CJK>
+<U572C> \x8F\xB7\xB4 |0 # <CJK>
+<U572E> \x8F\xB7\xB5 |0 # <CJK>
+<U572F> \x8F\xB7\xB6 |0 # <CJK>
+<U5733> \x8F\xB7\xB7 |0 # <CJK>
+<U5734> \x8F\xB7\xB8 |0 # <CJK>
+<U573D> \x8F\xB7\xB9 |0 # <CJK>
+<U573E> \x8F\xB7\xBA |0 # <CJK>
+<U573F> \x8F\xB7\xBB |0 # <CJK>
+<U5745> \x8F\xB7\xBC |0 # <CJK>
+<U5746> \x8F\xB7\xBD |0 # <CJK>
+<U574C> \x8F\xB7\xBE |0 # <CJK>
+<U574D> \x8F\xB7\xBF |0 # <CJK>
+<U5752> \x8F\xB7\xC0 |0 # <CJK>
+<U5762> \x8F\xB7\xC1 |0 # <CJK>
+<U5765> \x8F\xB7\xC2 |0 # <CJK>
+<U5767> \x8F\xB7\xC3 |0 # <CJK>
+<U5768> \x8F\xB7\xC4 |0 # <CJK>
+<U576B> \x8F\xB7\xC5 |0 # <CJK>
+<U576D> \x8F\xB7\xC6 |0 # <CJK>
+<U576E> \x8F\xB7\xC7 |0 # <CJK>
+<U576F> \x8F\xB7\xC8 |0 # <CJK>
+<U5770> \x8F\xB7\xC9 |0 # <CJK>
+<U5771> \x8F\xB7\xCA |0 # <CJK>
+<U5773> \x8F\xB7\xCB |0 # <CJK>
+<U5774> \x8F\xB7\xCC |0 # <CJK>
+<U5775> \x8F\xB7\xCD |0 # <CJK>
+<U5777> \x8F\xB7\xCE |0 # <CJK>
+<U5779> \x8F\xB7\xCF |0 # <CJK>
+<U577A> \x8F\xB7\xD0 |0 # <CJK>
+<U577B> \x8F\xB7\xD1 |0 # <CJK>
+<U577C> \x8F\xB7\xD2 |0 # <CJK>
+<U577E> \x8F\xB7\xD3 |0 # <CJK>
+<U5781> \x8F\xB7\xD4 |0 # <CJK>
+<U5783> \x8F\xB7\xD5 |0 # <CJK>
+<U578C> \x8F\xB7\xD6 |0 # <CJK>
+<U5794> \x8F\xB7\xD7 |0 # <CJK>
+<U5797> \x8F\xB7\xD8 |0 # <CJK>
+<U5799> \x8F\xB7\xD9 |0 # <CJK>
+<U579A> \x8F\xB7\xDA |0 # <CJK>
+<U579C> \x8F\xB7\xDB |0 # <CJK>
+<U579D> \x8F\xB7\xDC |0 # <CJK>
+<U579E> \x8F\xB7\xDD |0 # <CJK>
+<U579F> \x8F\xB7\xDE |0 # <CJK>
+<U57A1> \x8F\xB7\xDF |0 # <CJK>
+<U5795> \x8F\xB7\xE0 |0 # <CJK>
+<U57A7> \x8F\xB7\xE1 |0 # <CJK>
+<U57A8> \x8F\xB7\xE2 |0 # <CJK>
+<U57A9> \x8F\xB7\xE3 |0 # <CJK>
+<U57AC> \x8F\xB7\xE4 |0 # <CJK>
+<U57B8> \x8F\xB7\xE5 |0 # <CJK>
+<U57BD> \x8F\xB7\xE6 |0 # <CJK>
+<U57C7> \x8F\xB7\xE7 |0 # <CJK>
+<U57C8> \x8F\xB7\xE8 |0 # <CJK>
+<U57CC> \x8F\xB7\xE9 |0 # <CJK>
+<U57CF> \x8F\xB7\xEA |0 # <CJK>
+<U57D5> \x8F\xB7\xEB |0 # <CJK>
+<U57DD> \x8F\xB7\xEC |0 # <CJK>
+<U57DE> \x8F\xB7\xED |0 # <CJK>
+<U57E4> \x8F\xB7\xEE |0 # <CJK>
+<U57E6> \x8F\xB7\xEF |0 # <CJK>
+<U57E7> \x8F\xB7\xF0 |0 # <CJK>
+<U57E9> \x8F\xB7\xF1 |0 # <CJK>
+<U57ED> \x8F\xB7\xF2 |0 # <CJK>
+<U57F0> \x8F\xB7\xF3 |0 # <CJK>
+<U57F5> \x8F\xB7\xF4 |0 # <CJK>
+<U57F6> \x8F\xB7\xF5 |0 # <CJK>
+<U57F8> \x8F\xB7\xF6 |0 # <CJK>
+<U57FD> \x8F\xB7\xF7 |0 # <CJK>
+<U57FE> \x8F\xB7\xF8 |0 # <CJK>
+<U57FF> \x8F\xB7\xF9 |0 # <CJK>
+<U5803> \x8F\xB7\xFA |0 # <CJK>
+<U5804> \x8F\xB7\xFB |0 # <CJK>
+<U5808> \x8F\xB7\xFC |0 # <CJK>
+<U5809> \x8F\xB7\xFD |0 # <CJK>
+<U57E1> \x8F\xB7\xFE |0 # <CJK>
+<U580C> \x8F\xB8\xA1 |0 # <CJK>
+<U580D> \x8F\xB8\xA2 |0 # <CJK>
+<U581B> \x8F\xB8\xA3 |0 # <CJK>
+<U581E> \x8F\xB8\xA4 |0 # <CJK>
+<U581F> \x8F\xB8\xA5 |0 # <CJK>
+<U5820> \x8F\xB8\xA6 |0 # <CJK>
+<U5826> \x8F\xB8\xA7 |0 # <CJK>
+<U5827> \x8F\xB8\xA8 |0 # <CJK>
+<U582D> \x8F\xB8\xA9 |0 # <CJK>
+<U5832> \x8F\xB8\xAA |0 # <CJK>
+<U5839> \x8F\xB8\xAB |0 # <CJK>
+<U583F> \x8F\xB8\xAC |0 # <CJK>
+<U5849> \x8F\xB8\xAD |0 # <CJK>
+<U584C> \x8F\xB8\xAE |0 # <CJK>
+<U584D> \x8F\xB8\xAF |0 # <CJK>
+<U584F> \x8F\xB8\xB0 |0 # <CJK>
+<U5850> \x8F\xB8\xB1 |0 # <CJK>
+<U5855> \x8F\xB8\xB2 |0 # <CJK>
+<U585F> \x8F\xB8\xB3 |0 # <CJK>
+<U5861> \x8F\xB8\xB4 |0 # <CJK>
+<U5864> \x8F\xB8\xB5 |0 # <CJK>
+<U5867> \x8F\xB8\xB6 |0 # <CJK>
+<U5868> \x8F\xB8\xB7 |0 # <CJK>
+<U5878> \x8F\xB8\xB8 |0 # <CJK>
+<U587C> \x8F\xB8\xB9 |0 # <CJK>
+<U587F> \x8F\xB8\xBA |0 # <CJK>
+<U5880> \x8F\xB8\xBB |0 # <CJK>
+<U5881> \x8F\xB8\xBC |0 # <CJK>
+<U5887> \x8F\xB8\xBD |0 # <CJK>
+<U5888> \x8F\xB8\xBE |0 # <CJK>
+<U5889> \x8F\xB8\xBF |0 # <CJK>
+<U588A> \x8F\xB8\xC0 |0 # <CJK>
+<U588C> \x8F\xB8\xC1 |0 # <CJK>
+<U588D> \x8F\xB8\xC2 |0 # <CJK>
+<U588F> \x8F\xB8\xC3 |0 # <CJK>
+<U5890> \x8F\xB8\xC4 |0 # <CJK>
+<U5894> \x8F\xB8\xC5 |0 # <CJK>
+<U5896> \x8F\xB8\xC6 |0 # <CJK>
+<U589D> \x8F\xB8\xC7 |0 # <CJK>
+<U58A0> \x8F\xB8\xC8 |0 # <CJK>
+<U58A1> \x8F\xB8\xC9 |0 # <CJK>
+<U58A2> \x8F\xB8\xCA |0 # <CJK>
+<U58A6> \x8F\xB8\xCB |0 # <CJK>
+<U58A9> \x8F\xB8\xCC |0 # <CJK>
+<U58B1> \x8F\xB8\xCD |0 # <CJK>
+<U58B2> \x8F\xB8\xCE |0 # <CJK>
+<U58C4> \x8F\xB8\xCF |0 # <CJK>
+<U58BC> \x8F\xB8\xD0 |0 # <CJK>
+<U58C2> \x8F\xB8\xD1 |0 # <CJK>
+<U58C8> \x8F\xB8\xD2 |0 # <CJK>
+<U58CD> \x8F\xB8\xD3 |0 # <CJK>
+<U58CE> \x8F\xB8\xD4 |0 # <CJK>
+<U58D0> \x8F\xB8\xD5 |0 # <CJK>
+<U58D2> \x8F\xB8\xD6 |0 # <CJK>
+<U58D4> \x8F\xB8\xD7 |0 # <CJK>
+<U58D6> \x8F\xB8\xD8 |0 # <CJK>
+<U58DA> \x8F\xB8\xD9 |0 # <CJK>
+<U58DD> \x8F\xB8\xDA |0 # <CJK>
+<U58E1> \x8F\xB8\xDB |0 # <CJK>
+<U58E2> \x8F\xB8\xDC |0 # <CJK>
+<U58E9> \x8F\xB8\xDD |0 # <CJK>
+<U58F3> \x8F\xB8\xDE |0 # <CJK>
+<U5905> \x8F\xB8\xDF |0 # <CJK>
+<U5906> \x8F\xB8\xE0 |0 # <CJK>
+<U590B> \x8F\xB8\xE1 |0 # <CJK>
+<U590C> \x8F\xB8\xE2 |0 # <CJK>
+<U5912> \x8F\xB8\xE3 |0 # <CJK>
+<U5913> \x8F\xB8\xE4 |0 # <CJK>
+<U5914> \x8F\xB8\xE5 |0 # <CJK>
+<U8641> \x8F\xB8\xE6 |0 # <CJK>
+<U591D> \x8F\xB8\xE7 |0 # <CJK>
+<U5921> \x8F\xB8\xE8 |0 # <CJK>
+<U5923> \x8F\xB8\xE9 |0 # <CJK>
+<U5924> \x8F\xB8\xEA |0 # <CJK>
+<U5928> \x8F\xB8\xEB |0 # <CJK>
+<U592F> \x8F\xB8\xEC |0 # <CJK>
+<U5930> \x8F\xB8\xED |0 # <CJK>
+<U5933> \x8F\xB8\xEE |0 # <CJK>
+<U5935> \x8F\xB8\xEF |0 # <CJK>
+<U5936> \x8F\xB8\xF0 |0 # <CJK>
+<U593F> \x8F\xB8\xF1 |0 # <CJK>
+<U5943> \x8F\xB8\xF2 |0 # <CJK>
+<U5946> \x8F\xB8\xF3 |0 # <CJK>
+<U5952> \x8F\xB8\xF4 |0 # <CJK>
+<U5953> \x8F\xB8\xF5 |0 # <CJK>
+<U5959> \x8F\xB8\xF6 |0 # <CJK>
+<U595B> \x8F\xB8\xF7 |0 # <CJK>
+<U595D> \x8F\xB8\xF8 |0 # <CJK>
+<U595E> \x8F\xB8\xF9 |0 # <CJK>
+<U595F> \x8F\xB8\xFA |0 # <CJK>
+<U5961> \x8F\xB8\xFB |0 # <CJK>
+<U5963> \x8F\xB8\xFC |0 # <CJK>
+<U596B> \x8F\xB8\xFD |0 # <CJK>
+<U596D> \x8F\xB8\xFE |0 # <CJK>
+<U596F> \x8F\xB9\xA1 |0 # <CJK>
+<U5972> \x8F\xB9\xA2 |0 # <CJK>
+<U5975> \x8F\xB9\xA3 |0 # <CJK>
+<U5976> \x8F\xB9\xA4 |0 # <CJK>
+<U5979> \x8F\xB9\xA5 |0 # <CJK>
+<U597B> \x8F\xB9\xA6 |0 # <CJK>
+<U597C> \x8F\xB9\xA7 |0 # <CJK>
+<U598B> \x8F\xB9\xA8 |0 # <CJK>
+<U598C> \x8F\xB9\xA9 |0 # <CJK>
+<U598E> \x8F\xB9\xAA |0 # <CJK>
+<U5992> \x8F\xB9\xAB |0 # <CJK>
+<U5995> \x8F\xB9\xAC |0 # <CJK>
+<U5997> \x8F\xB9\xAD |0 # <CJK>
+<U599F> \x8F\xB9\xAE |0 # <CJK>
+<U59A4> \x8F\xB9\xAF |0 # <CJK>
+<U59A7> \x8F\xB9\xB0 |0 # <CJK>
+<U59AD> \x8F\xB9\xB1 |0 # <CJK>
+<U59AE> \x8F\xB9\xB2 |0 # <CJK>
+<U59AF> \x8F\xB9\xB3 |0 # <CJK>
+<U59B0> \x8F\xB9\xB4 |0 # <CJK>
+<U59B3> \x8F\xB9\xB5 |0 # <CJK>
+<U59B7> \x8F\xB9\xB6 |0 # <CJK>
+<U59BA> \x8F\xB9\xB7 |0 # <CJK>
+<U59BC> \x8F\xB9\xB8 |0 # <CJK>
+<U59C1> \x8F\xB9\xB9 |0 # <CJK>
+<U59C3> \x8F\xB9\xBA |0 # <CJK>
+<U59C4> \x8F\xB9\xBB |0 # <CJK>
+<U59C8> \x8F\xB9\xBC |0 # <CJK>
+<U59CA> \x8F\xB9\xBD |0 # <CJK>
+<U59CD> \x8F\xB9\xBE |0 # <CJK>
+<U59D2> \x8F\xB9\xBF |0 # <CJK>
+<U59DD> \x8F\xB9\xC0 |0 # <CJK>
+<U59DE> \x8F\xB9\xC1 |0 # <CJK>
+<U59DF> \x8F\xB9\xC2 |0 # <CJK>
+<U59E3> \x8F\xB9\xC3 |0 # <CJK>
+<U59E4> \x8F\xB9\xC4 |0 # <CJK>
+<U59E7> \x8F\xB9\xC5 |0 # <CJK>
+<U59EE> \x8F\xB9\xC6 |0 # <CJK>
+<U59EF> \x8F\xB9\xC7 |0 # <CJK>
+<U59F1> \x8F\xB9\xC8 |0 # <CJK>
+<U59F2> \x8F\xB9\xC9 |0 # <CJK>
+<U59F4> \x8F\xB9\xCA |0 # <CJK>
+<U59F7> \x8F\xB9\xCB |0 # <CJK>
+<U5A00> \x8F\xB9\xCC |0 # <CJK>
+<U5A04> \x8F\xB9\xCD |0 # <CJK>
+<U5A0C> \x8F\xB9\xCE |0 # <CJK>
+<U5A0D> \x8F\xB9\xCF |0 # <CJK>
+<U5A0E> \x8F\xB9\xD0 |0 # <CJK>
+<U5A12> \x8F\xB9\xD1 |0 # <CJK>
+<U5A13> \x8F\xB9\xD2 |0 # <CJK>
+<U5A1E> \x8F\xB9\xD3 |0 # <CJK>
+<U5A23> \x8F\xB9\xD4 |0 # <CJK>
+<U5A24> \x8F\xB9\xD5 |0 # <CJK>
+<U5A27> \x8F\xB9\xD6 |0 # <CJK>
+<U5A28> \x8F\xB9\xD7 |0 # <CJK>
+<U5A2A> \x8F\xB9\xD8 |0 # <CJK>
+<U5A2D> \x8F\xB9\xD9 |0 # <CJK>
+<U5A30> \x8F\xB9\xDA |0 # <CJK>
+<U5A44> \x8F\xB9\xDB |0 # <CJK>
+<U5A45> \x8F\xB9\xDC |0 # <CJK>
+<U5A47> \x8F\xB9\xDD |0 # <CJK>
+<U5A48> \x8F\xB9\xDE |0 # <CJK>
+<U5A4C> \x8F\xB9\xDF |0 # <CJK>
+<U5A50> \x8F\xB9\xE0 |0 # <CJK>
+<U5A55> \x8F\xB9\xE1 |0 # <CJK>
+<U5A5E> \x8F\xB9\xE2 |0 # <CJK>
+<U5A63> \x8F\xB9\xE3 |0 # <CJK>
+<U5A65> \x8F\xB9\xE4 |0 # <CJK>
+<U5A67> \x8F\xB9\xE5 |0 # <CJK>
+<U5A6D> \x8F\xB9\xE6 |0 # <CJK>
+<U5A77> \x8F\xB9\xE7 |0 # <CJK>
+<U5A7A> \x8F\xB9\xE8 |0 # <CJK>
+<U5A7B> \x8F\xB9\xE9 |0 # <CJK>
+<U5A7E> \x8F\xB9\xEA |0 # <CJK>
+<U5A8B> \x8F\xB9\xEB |0 # <CJK>
+<U5A90> \x8F\xB9\xEC |0 # <CJK>
+<U5A93> \x8F\xB9\xED |0 # <CJK>
+<U5A96> \x8F\xB9\xEE |0 # <CJK>
+<U5A99> \x8F\xB9\xEF |0 # <CJK>
+<U5A9C> \x8F\xB9\xF0 |0 # <CJK>
+<U5A9E> \x8F\xB9\xF1 |0 # <CJK>
+<U5A9F> \x8F\xB9\xF2 |0 # <CJK>
+<U5AA0> \x8F\xB9\xF3 |0 # <CJK>
+<U5AA2> \x8F\xB9\xF4 |0 # <CJK>
+<U5AA7> \x8F\xB9\xF5 |0 # <CJK>
+<U5AAC> \x8F\xB9\xF6 |0 # <CJK>
+<U5AB1> \x8F\xB9\xF7 |0 # <CJK>
+<U5AB2> \x8F\xB9\xF8 |0 # <CJK>
+<U5AB3> \x8F\xB9\xF9 |0 # <CJK>
+<U5AB5> \x8F\xB9\xFA |0 # <CJK>
+<U5AB8> \x8F\xB9\xFB |0 # <CJK>
+<U5ABA> \x8F\xB9\xFC |0 # <CJK>
+<U5ABB> \x8F\xB9\xFD |0 # <CJK>
+<U5ABF> \x8F\xB9\xFE |0 # <CJK>
+<U5AC4> \x8F\xBA\xA1 |0 # <CJK>
+<U5AC6> \x8F\xBA\xA2 |0 # <CJK>
+<U5AC8> \x8F\xBA\xA3 |0 # <CJK>
+<U5ACF> \x8F\xBA\xA4 |0 # <CJK>
+<U5ADA> \x8F\xBA\xA5 |0 # <CJK>
+<U5ADC> \x8F\xBA\xA6 |0 # <CJK>
+<U5AE0> \x8F\xBA\xA7 |0 # <CJK>
+<U5AE5> \x8F\xBA\xA8 |0 # <CJK>
+<U5AEA> \x8F\xBA\xA9 |0 # <CJK>
+<U5AEE> \x8F\xBA\xAA |0 # <CJK>
+<U5AF5> \x8F\xBA\xAB |0 # <CJK>
+<U5AF6> \x8F\xBA\xAC |0 # <CJK>
+<U5AFD> \x8F\xBA\xAD |0 # <CJK>
+<U5B00> \x8F\xBA\xAE |0 # <CJK>
+<U5B01> \x8F\xBA\xAF |0 # <CJK>
+<U5B08> \x8F\xBA\xB0 |0 # <CJK>
+<U5B17> \x8F\xBA\xB1 |0 # <CJK>
+<U5B34> \x8F\xBA\xB2 |0 # <CJK>
+<U5B19> \x8F\xBA\xB3 |0 # <CJK>
+<U5B1B> \x8F\xBA\xB4 |0 # <CJK>
+<U5B1D> \x8F\xBA\xB5 |0 # <CJK>
+<U5B21> \x8F\xBA\xB6 |0 # <CJK>
+<U5B25> \x8F\xBA\xB7 |0 # <CJK>
+<U5B2D> \x8F\xBA\xB8 |0 # <CJK>
+<U5B38> \x8F\xBA\xB9 |0 # <CJK>
+<U5B41> \x8F\xBA\xBA |0 # <CJK>
+<U5B4B> \x8F\xBA\xBB |0 # <CJK>
+<U5B4C> \x8F\xBA\xBC |0 # <CJK>
+<U5B52> \x8F\xBA\xBD |0 # <CJK>
+<U5B56> \x8F\xBA\xBE |0 # <CJK>
+<U5B5E> \x8F\xBA\xBF |0 # <CJK>
+<U5B68> \x8F\xBA\xC0 |0 # <CJK>
+<U5B6E> \x8F\xBA\xC1 |0 # <CJK>
+<U5B6F> \x8F\xBA\xC2 |0 # <CJK>
+<U5B7C> \x8F\xBA\xC3 |0 # <CJK>
+<U5B7D> \x8F\xBA\xC4 |0 # <CJK>
+<U5B7E> \x8F\xBA\xC5 |0 # <CJK>
+<U5B7F> \x8F\xBA\xC6 |0 # <CJK>
+<U5B81> \x8F\xBA\xC7 |0 # <CJK>
+<U5B84> \x8F\xBA\xC8 |0 # <CJK>
+<U5B86> \x8F\xBA\xC9 |0 # <CJK>
+<U5B8A> \x8F\xBA\xCA |0 # <CJK>
+<U5B8E> \x8F\xBA\xCB |0 # <CJK>
+<U5B90> \x8F\xBA\xCC |0 # <CJK>
+<U5B91> \x8F\xBA\xCD |0 # <CJK>
+<U5B93> \x8F\xBA\xCE |0 # <CJK>
+<U5B94> \x8F\xBA\xCF |0 # <CJK>
+<U5B96> \x8F\xBA\xD0 |0 # <CJK>
+<U5BA8> \x8F\xBA\xD1 |0 # <CJK>
+<U5BA9> \x8F\xBA\xD2 |0 # <CJK>
+<U5BAC> \x8F\xBA\xD3 |0 # <CJK>
+<U5BAD> \x8F\xBA\xD4 |0 # <CJK>
+<U5BAF> \x8F\xBA\xD5 |0 # <CJK>
+<U5BB1> \x8F\xBA\xD6 |0 # <CJK>
+<U5BB2> \x8F\xBA\xD7 |0 # <CJK>
+<U5BB7> \x8F\xBA\xD8 |0 # <CJK>
+<U5BBA> \x8F\xBA\xD9 |0 # <CJK>
+<U5BBC> \x8F\xBA\xDA |0 # <CJK>
+<U5BC0> \x8F\xBA\xDB |0 # <CJK>
+<U5BC1> \x8F\xBA\xDC |0 # <CJK>
+<U5BCD> \x8F\xBA\xDD |0 # <CJK>
+<U5BCF> \x8F\xBA\xDE |0 # <CJK>
+<U5BD6> \x8F\xBA\xDF |0 # <CJK>
+<U5BD7> \x8F\xBA\xE0 |0 # <CJK>
+<U5BD8> \x8F\xBA\xE1 |0 # <CJK>
+<U5BD9> \x8F\xBA\xE2 |0 # <CJK>
+<U5BDA> \x8F\xBA\xE3 |0 # <CJK>
+<U5BE0> \x8F\xBA\xE4 |0 # <CJK>
+<U5BEF> \x8F\xBA\xE5 |0 # <CJK>
+<U5BF1> \x8F\xBA\xE6 |0 # <CJK>
+<U5BF4> \x8F\xBA\xE7 |0 # <CJK>
+<U5BFD> \x8F\xBA\xE8 |0 # <CJK>
+<U5C0C> \x8F\xBA\xE9 |0 # <CJK>
+<U5C17> \x8F\xBA\xEA |0 # <CJK>
+<U5C1E> \x8F\xBA\xEB |0 # <CJK>
+<U5C1F> \x8F\xBA\xEC |0 # <CJK>
+<U5C23> \x8F\xBA\xED |0 # <CJK>
+<U5C26> \x8F\xBA\xEE |0 # <CJK>
+<U5C29> \x8F\xBA\xEF |0 # <CJK>
+<U5C2B> \x8F\xBA\xF0 |0 # <CJK>
+<U5C2C> \x8F\xBA\xF1 |0 # <CJK>
+<U5C2E> \x8F\xBA\xF2 |0 # <CJK>
+<U5C30> \x8F\xBA\xF3 |0 # <CJK>
+<U5C32> \x8F\xBA\xF4 |0 # <CJK>
+<U5C35> \x8F\xBA\xF5 |0 # <CJK>
+<U5C36> \x8F\xBA\xF6 |0 # <CJK>
+<U5C59> \x8F\xBA\xF7 |0 # <CJK>
+<U5C5A> \x8F\xBA\xF8 |0 # <CJK>
+<U5C5C> \x8F\xBA\xF9 |0 # <CJK>
+<U5C62> \x8F\xBA\xFA |0 # <CJK>
+<U5C63> \x8F\xBA\xFB |0 # <CJK>
+<U5C67> \x8F\xBA\xFC |0 # <CJK>
+<U5C68> \x8F\xBA\xFD |0 # <CJK>
+<U5C69> \x8F\xBA\xFE |0 # <CJK>
+<U5C6D> \x8F\xBB\xA1 |0 # <CJK>
+<U5C70> \x8F\xBB\xA2 |0 # <CJK>
+<U5C74> \x8F\xBB\xA3 |0 # <CJK>
+<U5C75> \x8F\xBB\xA4 |0 # <CJK>
+<U5C7A> \x8F\xBB\xA5 |0 # <CJK>
+<U5C7B> \x8F\xBB\xA6 |0 # <CJK>
+<U5C7C> \x8F\xBB\xA7 |0 # <CJK>
+<U5C7D> \x8F\xBB\xA8 |0 # <CJK>
+<U5C87> \x8F\xBB\xA9 |0 # <CJK>
+<U5C88> \x8F\xBB\xAA |0 # <CJK>
+<U5C8A> \x8F\xBB\xAB |0 # <CJK>
+<U5C8F> \x8F\xBB\xAC |0 # <CJK>
+<U5C92> \x8F\xBB\xAD |0 # <CJK>
+<U5C9D> \x8F\xBB\xAE |0 # <CJK>
+<U5C9F> \x8F\xBB\xAF |0 # <CJK>
+<U5CA0> \x8F\xBB\xB0 |0 # <CJK>
+<U5CA2> \x8F\xBB\xB1 |0 # <CJK>
+<U5CA3> \x8F\xBB\xB2 |0 # <CJK>
+<U5CA6> \x8F\xBB\xB3 |0 # <CJK>
+<U5CAA> \x8F\xBB\xB4 |0 # <CJK>
+<U5CB2> \x8F\xBB\xB5 |0 # <CJK>
+<U5CB4> \x8F\xBB\xB6 |0 # <CJK>
+<U5CB5> \x8F\xBB\xB7 |0 # <CJK>
+<U5CBA> \x8F\xBB\xB8 |0 # <CJK>
+<U5CC9> \x8F\xBB\xB9 |0 # <CJK>
+<U5CCB> \x8F\xBB\xBA |0 # <CJK>
+<U5CD2> \x8F\xBB\xBB |0 # <CJK>
+<U5CDD> \x8F\xBB\xBC |0 # <CJK>
+<U5CD7> \x8F\xBB\xBD |0 # <CJK>
+<U5CEE> \x8F\xBB\xBE |0 # <CJK>
+<U5CF1> \x8F\xBB\xBF |0 # <CJK>
+<U5CF2> \x8F\xBB\xC0 |0 # <CJK>
+<U5CF4> \x8F\xBB\xC1 |0 # <CJK>
+<U5D01> \x8F\xBB\xC2 |0 # <CJK>
+<U5D06> \x8F\xBB\xC3 |0 # <CJK>
+<U5D0D> \x8F\xBB\xC4 |0 # <CJK>
+<U5D12> \x8F\xBB\xC5 |0 # <CJK>
+<U5D2B> \x8F\xBB\xC6 |0 # <CJK>
+<U5D23> \x8F\xBB\xC7 |0 # <CJK>
+<U5D24> \x8F\xBB\xC8 |0 # <CJK>
+<U5D26> \x8F\xBB\xC9 |0 # <CJK>
+<U5D27> \x8F\xBB\xCA |0 # <CJK>
+<U5D31> \x8F\xBB\xCB |0 # <CJK>
+<U5D34> \x8F\xBB\xCC |0 # <CJK>
+<U5D39> \x8F\xBB\xCD |0 # <CJK>
+<U5D3D> \x8F\xBB\xCE |0 # <CJK>
+<U5D3F> \x8F\xBB\xCF |0 # <CJK>
+<U5D42> \x8F\xBB\xD0 |0 # <CJK>
+<U5D43> \x8F\xBB\xD1 |0 # <CJK>
+<U5D46> \x8F\xBB\xD2 |0 # <CJK>
+<U5D48> \x8F\xBB\xD3 |0 # <CJK>
+<U5D55> \x8F\xBB\xD4 |0 # <CJK>
+<U5D51> \x8F\xBB\xD5 |0 # <CJK>
+<U5D59> \x8F\xBB\xD6 |0 # <CJK>
+<U5D4A> \x8F\xBB\xD7 |0 # <CJK>
+<U5D5F> \x8F\xBB\xD8 |0 # <CJK>
+<U5D60> \x8F\xBB\xD9 |0 # <CJK>
+<U5D61> \x8F\xBB\xDA |0 # <CJK>
+<U5D62> \x8F\xBB\xDB |0 # <CJK>
+<U5D64> \x8F\xBB\xDC |0 # <CJK>
+<U5D6A> \x8F\xBB\xDD |0 # <CJK>
+<U5D6D> \x8F\xBB\xDE |0 # <CJK>
+<U5D70> \x8F\xBB\xDF |0 # <CJK>
+<U5D79> \x8F\xBB\xE0 |0 # <CJK>
+<U5D7A> \x8F\xBB\xE1 |0 # <CJK>
+<U5D7E> \x8F\xBB\xE2 |0 # <CJK>
+<U5D7F> \x8F\xBB\xE3 |0 # <CJK>
+<U5D81> \x8F\xBB\xE4 |0 # <CJK>
+<U5D83> \x8F\xBB\xE5 |0 # <CJK>
+<U5D88> \x8F\xBB\xE6 |0 # <CJK>
+<U5D8A> \x8F\xBB\xE7 |0 # <CJK>
+<U5D92> \x8F\xBB\xE8 |0 # <CJK>
+<U5D93> \x8F\xBB\xE9 |0 # <CJK>
+<U5D94> \x8F\xBB\xEA |0 # <CJK>
+<U5D95> \x8F\xBB\xEB |0 # <CJK>
+<U5D99> \x8F\xBB\xEC |0 # <CJK>
+<U5D9B> \x8F\xBB\xED |0 # <CJK>
+<U5D9F> \x8F\xBB\xEE |0 # <CJK>
+<U5DA0> \x8F\xBB\xEF |0 # <CJK>
+<U5DA7> \x8F\xBB\xF0 |0 # <CJK>
+<U5DAB> \x8F\xBB\xF1 |0 # <CJK>
+<U5DB0> \x8F\xBB\xF2 |0 # <CJK>
+<U5DB4> \x8F\xBB\xF3 |0 # <CJK>
+<U5DB8> \x8F\xBB\xF4 |0 # <CJK>
+<U5DB9> \x8F\xBB\xF5 |0 # <CJK>
+<U5DC3> \x8F\xBB\xF6 |0 # <CJK>
+<U5DC7> \x8F\xBB\xF7 |0 # <CJK>
+<U5DCB> \x8F\xBB\xF8 |0 # <CJK>
+<U5DD0> \x8F\xBB\xF9 |0 # <CJK>
+<U5DCE> \x8F\xBB\xFA |0 # <CJK>
+<U5DD8> \x8F\xBB\xFB |0 # <CJK>
+<U5DD9> \x8F\xBB\xFC |0 # <CJK>
+<U5DE0> \x8F\xBB\xFD |0 # <CJK>
+<U5DE4> \x8F\xBB\xFE |0 # <CJK>
+<U5DE9> \x8F\xBC\xA1 |0 # <CJK>
+<U5DF8> \x8F\xBC\xA2 |0 # <CJK>
+<U5DF9> \x8F\xBC\xA3 |0 # <CJK>
+<U5E00> \x8F\xBC\xA4 |0 # <CJK>
+<U5E07> \x8F\xBC\xA5 |0 # <CJK>
+<U5E0D> \x8F\xBC\xA6 |0 # <CJK>
+<U5E12> \x8F\xBC\xA7 |0 # <CJK>
+<U5E14> \x8F\xBC\xA8 |0 # <CJK>
+<U5E15> \x8F\xBC\xA9 |0 # <CJK>
+<U5E18> \x8F\xBC\xAA |0 # <CJK>
+<U5E1F> \x8F\xBC\xAB |0 # <CJK>
+<U5E20> \x8F\xBC\xAC |0 # <CJK>
+<U5E2E> \x8F\xBC\xAD |0 # <CJK>
+<U5E28> \x8F\xBC\xAE |0 # <CJK>
+<U5E32> \x8F\xBC\xAF |0 # <CJK>
+<U5E35> \x8F\xBC\xB0 |0 # <CJK>
+<U5E3E> \x8F\xBC\xB1 |0 # <CJK>
+<U5E4B> \x8F\xBC\xB2 |0 # <CJK>
+<U5E50> \x8F\xBC\xB3 |0 # <CJK>
+<U5E49> \x8F\xBC\xB4 |0 # <CJK>
+<U5E51> \x8F\xBC\xB5 |0 # <CJK>
+<U5E56> \x8F\xBC\xB6 |0 # <CJK>
+<U5E58> \x8F\xBC\xB7 |0 # <CJK>
+<U5E5B> \x8F\xBC\xB8 |0 # <CJK>
+<U5E5C> \x8F\xBC\xB9 |0 # <CJK>
+<U5E5E> \x8F\xBC\xBA |0 # <CJK>
+<U5E68> \x8F\xBC\xBB |0 # <CJK>
+<U5E6A> \x8F\xBC\xBC |0 # <CJK>
+<U5E6B> \x8F\xBC\xBD |0 # <CJK>
+<U5E6C> \x8F\xBC\xBE |0 # <CJK>
+<U5E6D> \x8F\xBC\xBF |0 # <CJK>
+<U5E6E> \x8F\xBC\xC0 |0 # <CJK>
+<U5E70> \x8F\xBC\xC1 |0 # <CJK>
+<U5E80> \x8F\xBC\xC2 |0 # <CJK>
+<U5E8B> \x8F\xBC\xC3 |0 # <CJK>
+<U5E8E> \x8F\xBC\xC4 |0 # <CJK>
+<U5EA2> \x8F\xBC\xC5 |0 # <CJK>
+<U5EA4> \x8F\xBC\xC6 |0 # <CJK>
+<U5EA5> \x8F\xBC\xC7 |0 # <CJK>
+<U5EA8> \x8F\xBC\xC8 |0 # <CJK>
+<U5EAA> \x8F\xBC\xC9 |0 # <CJK>
+<U5EAC> \x8F\xBC\xCA |0 # <CJK>
+<U5EB1> \x8F\xBC\xCB |0 # <CJK>
+<U5EB3> \x8F\xBC\xCC |0 # <CJK>
+<U5EBD> \x8F\xBC\xCD |0 # <CJK>
+<U5EBE> \x8F\xBC\xCE |0 # <CJK>
+<U5EBF> \x8F\xBC\xCF |0 # <CJK>
+<U5EC6> \x8F\xBC\xD0 |0 # <CJK>
+<U5ECC> \x8F\xBC\xD1 |0 # <CJK>
+<U5ECB> \x8F\xBC\xD2 |0 # <CJK>
+<U5ECE> \x8F\xBC\xD3 |0 # <CJK>
+<U5ED1> \x8F\xBC\xD4 |0 # <CJK>
+<U5ED2> \x8F\xBC\xD5 |0 # <CJK>
+<U5ED4> \x8F\xBC\xD6 |0 # <CJK>
+<U5ED5> \x8F\xBC\xD7 |0 # <CJK>
+<U5EDC> \x8F\xBC\xD8 |0 # <CJK>
+<U5EDE> \x8F\xBC\xD9 |0 # <CJK>
+<U5EE5> \x8F\xBC\xDA |0 # <CJK>
+<U5EEB> \x8F\xBC\xDB |0 # <CJK>
+<U5F02> \x8F\xBC\xDC |0 # <CJK>
+<U5F06> \x8F\xBC\xDD |0 # <CJK>
+<U5F07> \x8F\xBC\xDE |0 # <CJK>
+<U5F08> \x8F\xBC\xDF |0 # <CJK>
+<U5F0E> \x8F\xBC\xE0 |0 # <CJK>
+<U5F19> \x8F\xBC\xE1 |0 # <CJK>
+<U5F1C> \x8F\xBC\xE2 |0 # <CJK>
+<U5F1D> \x8F\xBC\xE3 |0 # <CJK>
+<U5F21> \x8F\xBC\xE4 |0 # <CJK>
+<U5F22> \x8F\xBC\xE5 |0 # <CJK>
+<U5F23> \x8F\xBC\xE6 |0 # <CJK>
+<U5F24> \x8F\xBC\xE7 |0 # <CJK>
+<U5F28> \x8F\xBC\xE8 |0 # <CJK>
+<U5F2B> \x8F\xBC\xE9 |0 # <CJK>
+<U5F2C> \x8F\xBC\xEA |0 # <CJK>
+<U5F2E> \x8F\xBC\xEB |0 # <CJK>
+<U5F30> \x8F\xBC\xEC |0 # <CJK>
+<U5F34> \x8F\xBC\xED |0 # <CJK>
+<U5F36> \x8F\xBC\xEE |0 # <CJK>
+<U5F3B> \x8F\xBC\xEF |0 # <CJK>
+<U5F3D> \x8F\xBC\xF0 |0 # <CJK>
+<U5F3F> \x8F\xBC\xF1 |0 # <CJK>
+<U5F40> \x8F\xBC\xF2 |0 # <CJK>
+<U5F44> \x8F\xBC\xF3 |0 # <CJK>
+<U5F45> \x8F\xBC\xF4 |0 # <CJK>
+<U5F47> \x8F\xBC\xF5 |0 # <CJK>
+<U5F4D> \x8F\xBC\xF6 |0 # <CJK>
+<U5F50> \x8F\xBC\xF7 |0 # <CJK>
+<U5F54> \x8F\xBC\xF8 |0 # <CJK>
+<U5F58> \x8F\xBC\xF9 |0 # <CJK>
+<U5F5B> \x8F\xBC\xFA |0 # <CJK>
+<U5F60> \x8F\xBC\xFB |0 # <CJK>
+<U5F63> \x8F\xBC\xFC |0 # <CJK>
+<U5F64> \x8F\xBC\xFD |0 # <CJK>
+<U5F67> \x8F\xBC\xFE |0 # <CJK>
+<U5F6F> \x8F\xBD\xA1 |0 # <CJK>
+<U5F72> \x8F\xBD\xA2 |0 # <CJK>
+<U5F74> \x8F\xBD\xA3 |0 # <CJK>
+<U5F75> \x8F\xBD\xA4 |0 # <CJK>
+<U5F78> \x8F\xBD\xA5 |0 # <CJK>
+<U5F7A> \x8F\xBD\xA6 |0 # <CJK>
+<U5F7D> \x8F\xBD\xA7 |0 # <CJK>
+<U5F7E> \x8F\xBD\xA8 |0 # <CJK>
+<U5F89> \x8F\xBD\xA9 |0 # <CJK>
+<U5F8D> \x8F\xBD\xAA |0 # <CJK>
+<U5F8F> \x8F\xBD\xAB |0 # <CJK>
+<U5F96> \x8F\xBD\xAC |0 # <CJK>
+<U5F9C> \x8F\xBD\xAD |0 # <CJK>
+<U5F9D> \x8F\xBD\xAE |0 # <CJK>
+<U5FA2> \x8F\xBD\xAF |0 # <CJK>
+<U5FA7> \x8F\xBD\xB0 |0 # <CJK>
+<U5FAB> \x8F\xBD\xB1 |0 # <CJK>
+<U5FA4> \x8F\xBD\xB2 |0 # <CJK>
+<U5FAC> \x8F\xBD\xB3 |0 # <CJK>
+<U5FAF> \x8F\xBD\xB4 |0 # <CJK>
+<U5FB0> \x8F\xBD\xB5 |0 # <CJK>
+<U5FB1> \x8F\xBD\xB6 |0 # <CJK>
+<U5FB8> \x8F\xBD\xB7 |0 # <CJK>
+<U5FC4> \x8F\xBD\xB8 |0 # <CJK>
+<U5FC7> \x8F\xBD\xB9 |0 # <CJK>
+<U5FC8> \x8F\xBD\xBA |0 # <CJK>
+<U5FC9> \x8F\xBD\xBB |0 # <CJK>
+<U5FCB> \x8F\xBD\xBC |0 # <CJK>
+<U5FD0> \x8F\xBD\xBD |0 # <CJK>
+<U5FD1> \x8F\xBD\xBE |0 # <CJK>
+<U5FD2> \x8F\xBD\xBF |0 # <CJK>
+<U5FD3> \x8F\xBD\xC0 |0 # <CJK>
+<U5FD4> \x8F\xBD\xC1 |0 # <CJK>
+<U5FDE> \x8F\xBD\xC2 |0 # <CJK>
+<U5FE1> \x8F\xBD\xC3 |0 # <CJK>
+<U5FE2> \x8F\xBD\xC4 |0 # <CJK>
+<U5FE8> \x8F\xBD\xC5 |0 # <CJK>
+<U5FE9> \x8F\xBD\xC6 |0 # <CJK>
+<U5FEA> \x8F\xBD\xC7 |0 # <CJK>
+<U5FEC> \x8F\xBD\xC8 |0 # <CJK>
+<U5FED> \x8F\xBD\xC9 |0 # <CJK>
+<U5FEE> \x8F\xBD\xCA |0 # <CJK>
+<U5FEF> \x8F\xBD\xCB |0 # <CJK>
+<U5FF2> \x8F\xBD\xCC |0 # <CJK>
+<U5FF3> \x8F\xBD\xCD |0 # <CJK>
+<U5FF6> \x8F\xBD\xCE |0 # <CJK>
+<U5FFA> \x8F\xBD\xCF |0 # <CJK>
+<U5FFC> \x8F\xBD\xD0 |0 # <CJK>
+<U6007> \x8F\xBD\xD1 |0 # <CJK>
+<U600A> \x8F\xBD\xD2 |0 # <CJK>
+<U600D> \x8F\xBD\xD3 |0 # <CJK>
+<U6013> \x8F\xBD\xD4 |0 # <CJK>
+<U6014> \x8F\xBD\xD5 |0 # <CJK>
+<U6017> \x8F\xBD\xD6 |0 # <CJK>
+<U6018> \x8F\xBD\xD7 |0 # <CJK>
+<U601A> \x8F\xBD\xD8 |0 # <CJK>
+<U601F> \x8F\xBD\xD9 |0 # <CJK>
+<U6024> \x8F\xBD\xDA |0 # <CJK>
+<U602D> \x8F\xBD\xDB |0 # <CJK>
+<U6033> \x8F\xBD\xDC |0 # <CJK>
+<U6035> \x8F\xBD\xDD |0 # <CJK>
+<U6040> \x8F\xBD\xDE |0 # <CJK>
+<U6047> \x8F\xBD\xDF |0 # <CJK>
+<U6048> \x8F\xBD\xE0 |0 # <CJK>
+<U6049> \x8F\xBD\xE1 |0 # <CJK>
+<U604C> \x8F\xBD\xE2 |0 # <CJK>
+<U6051> \x8F\xBD\xE3 |0 # <CJK>
+<U6054> \x8F\xBD\xE4 |0 # <CJK>
+<U6056> \x8F\xBD\xE5 |0 # <CJK>
+<U6057> \x8F\xBD\xE6 |0 # <CJK>
+<U605D> \x8F\xBD\xE7 |0 # <CJK>
+<U6061> \x8F\xBD\xE8 |0 # <CJK>
+<U6067> \x8F\xBD\xE9 |0 # <CJK>
+<U6071> \x8F\xBD\xEA |0 # <CJK>
+<U607E> \x8F\xBD\xEB |0 # <CJK>
+<U607F> \x8F\xBD\xEC |0 # <CJK>
+<U6082> \x8F\xBD\xED |0 # <CJK>
+<U6086> \x8F\xBD\xEE |0 # <CJK>
+<U6088> \x8F\xBD\xEF |0 # <CJK>
+<U608A> \x8F\xBD\xF0 |0 # <CJK>
+<U608E> \x8F\xBD\xF1 |0 # <CJK>
+<U6091> \x8F\xBD\xF2 |0 # <CJK>
+<U6093> \x8F\xBD\xF3 |0 # <CJK>
+<U6095> \x8F\xBD\xF4 |0 # <CJK>
+<U6098> \x8F\xBD\xF5 |0 # <CJK>
+<U609D> \x8F\xBD\xF6 |0 # <CJK>
+<U609E> \x8F\xBD\xF7 |0 # <CJK>
+<U60A2> \x8F\xBD\xF8 |0 # <CJK>
+<U60A4> \x8F\xBD\xF9 |0 # <CJK>
+<U60A5> \x8F\xBD\xFA |0 # <CJK>
+<U60A8> \x8F\xBD\xFB |0 # <CJK>
+<U60B0> \x8F\xBD\xFC |0 # <CJK>
+<U60B1> \x8F\xBD\xFD |0 # <CJK>
+<U60B7> \x8F\xBD\xFE |0 # <CJK>
+<U60BB> \x8F\xBE\xA1 |0 # <CJK>
+<U60BE> \x8F\xBE\xA2 |0 # <CJK>
+<U60C2> \x8F\xBE\xA3 |0 # <CJK>
+<U60C4> \x8F\xBE\xA4 |0 # <CJK>
+<U60C8> \x8F\xBE\xA5 |0 # <CJK>
+<U60C9> \x8F\xBE\xA6 |0 # <CJK>
+<U60CA> \x8F\xBE\xA7 |0 # <CJK>
+<U60CB> \x8F\xBE\xA8 |0 # <CJK>
+<U60CE> \x8F\xBE\xA9 |0 # <CJK>
+<U60CF> \x8F\xBE\xAA |0 # <CJK>
+<U60D4> \x8F\xBE\xAB |0 # <CJK>
+<U60D5> \x8F\xBE\xAC |0 # <CJK>
+<U60D9> \x8F\xBE\xAD |0 # <CJK>
+<U60DB> \x8F\xBE\xAE |0 # <CJK>
+<U60DD> \x8F\xBE\xAF |0 # <CJK>
+<U60DE> \x8F\xBE\xB0 |0 # <CJK>
+<U60E2> \x8F\xBE\xB1 |0 # <CJK>
+<U60E5> \x8F\xBE\xB2 |0 # <CJK>
+<U60F2> \x8F\xBE\xB3 |0 # <CJK>
+<U60F5> \x8F\xBE\xB4 |0 # <CJK>
+<U60F8> \x8F\xBE\xB5 |0 # <CJK>
+<U60FC> \x8F\xBE\xB6 |0 # <CJK>
+<U60FD> \x8F\xBE\xB7 |0 # <CJK>
+<U6102> \x8F\xBE\xB8 |0 # <CJK>
+<U6107> \x8F\xBE\xB9 |0 # <CJK>
+<U610A> \x8F\xBE\xBA |0 # <CJK>
+<U610C> \x8F\xBE\xBB |0 # <CJK>
+<U6110> \x8F\xBE\xBC |0 # <CJK>
+<U6111> \x8F\xBE\xBD |0 # <CJK>
+<U6112> \x8F\xBE\xBE |0 # <CJK>
+<U6113> \x8F\xBE\xBF |0 # <CJK>
+<U6114> \x8F\xBE\xC0 |0 # <CJK>
+<U6116> \x8F\xBE\xC1 |0 # <CJK>
+<U6117> \x8F\xBE\xC2 |0 # <CJK>
+<U6119> \x8F\xBE\xC3 |0 # <CJK>
+<U611C> \x8F\xBE\xC4 |0 # <CJK>
+<U611E> \x8F\xBE\xC5 |0 # <CJK>
+<U6122> \x8F\xBE\xC6 |0 # <CJK>
+<U612A> \x8F\xBE\xC7 |0 # <CJK>
+<U612B> \x8F\xBE\xC8 |0 # <CJK>
+<U6130> \x8F\xBE\xC9 |0 # <CJK>
+<U6131> \x8F\xBE\xCA |0 # <CJK>
+<U6135> \x8F\xBE\xCB |0 # <CJK>
+<U6136> \x8F\xBE\xCC |0 # <CJK>
+<U6137> \x8F\xBE\xCD |0 # <CJK>
+<U6139> \x8F\xBE\xCE |0 # <CJK>
+<U6141> \x8F\xBE\xCF |0 # <CJK>
+<U6145> \x8F\xBE\xD0 |0 # <CJK>
+<U6146> \x8F\xBE\xD1 |0 # <CJK>
+<U6149> \x8F\xBE\xD2 |0 # <CJK>
+<U615E> \x8F\xBE\xD3 |0 # <CJK>
+<U6160> \x8F\xBE\xD4 |0 # <CJK>
+<U616C> \x8F\xBE\xD5 |0 # <CJK>
+<U6172> \x8F\xBE\xD6 |0 # <CJK>
+<U6178> \x8F\xBE\xD7 |0 # <CJK>
+<U617B> \x8F\xBE\xD8 |0 # <CJK>
+<U617C> \x8F\xBE\xD9 |0 # <CJK>
+<U617F> \x8F\xBE\xDA |0 # <CJK>
+<U6180> \x8F\xBE\xDB |0 # <CJK>
+<U6181> \x8F\xBE\xDC |0 # <CJK>
+<U6183> \x8F\xBE\xDD |0 # <CJK>
+<U6184> \x8F\xBE\xDE |0 # <CJK>
+<U618B> \x8F\xBE\xDF |0 # <CJK>
+<U618D> \x8F\xBE\xE0 |0 # <CJK>
+<U6192> \x8F\xBE\xE1 |0 # <CJK>
+<U6193> \x8F\xBE\xE2 |0 # <CJK>
+<U6197> \x8F\xBE\xE3 |0 # <CJK>
+<U6198> \x8F\xBE\xE4 |0 # <CJK>
+<U619C> \x8F\xBE\xE5 |0 # <CJK>
+<U619D> \x8F\xBE\xE6 |0 # <CJK>
+<U619F> \x8F\xBE\xE7 |0 # <CJK>
+<U61A0> \x8F\xBE\xE8 |0 # <CJK>
+<U61A5> \x8F\xBE\xE9 |0 # <CJK>
+<U61A8> \x8F\xBE\xEA |0 # <CJK>
+<U61AA> \x8F\xBE\xEB |0 # <CJK>
+<U61AD> \x8F\xBE\xEC |0 # <CJK>
+<U61B8> \x8F\xBE\xED |0 # <CJK>
+<U61B9> \x8F\xBE\xEE |0 # <CJK>
+<U61BC> \x8F\xBE\xEF |0 # <CJK>
+<U61C0> \x8F\xBE\xF0 |0 # <CJK>
+<U61C1> \x8F\xBE\xF1 |0 # <CJK>
+<U61C2> \x8F\xBE\xF2 |0 # <CJK>
+<U61CE> \x8F\xBE\xF3 |0 # <CJK>
+<U61CF> \x8F\xBE\xF4 |0 # <CJK>
+<U61D5> \x8F\xBE\xF5 |0 # <CJK>
+<U61DC> \x8F\xBE\xF6 |0 # <CJK>
+<U61DD> \x8F\xBE\xF7 |0 # <CJK>
+<U61DE> \x8F\xBE\xF8 |0 # <CJK>
+<U61DF> \x8F\xBE\xF9 |0 # <CJK>
+<U61E1> \x8F\xBE\xFA |0 # <CJK>
+<U61E2> \x8F\xBE\xFB |0 # <CJK>
+<U61E7> \x8F\xBE\xFC |0 # <CJK>
+<U61E9> \x8F\xBE\xFD |0 # <CJK>
+<U61E5> \x8F\xBE\xFE |0 # <CJK>
+<U61EC> \x8F\xBF\xA1 |0 # <CJK>
+<U61ED> \x8F\xBF\xA2 |0 # <CJK>
+<U61EF> \x8F\xBF\xA3 |0 # <CJK>
+<U6201> \x8F\xBF\xA4 |0 # <CJK>
+<U6203> \x8F\xBF\xA5 |0 # <CJK>
+<U6204> \x8F\xBF\xA6 |0 # <CJK>
+<U6207> \x8F\xBF\xA7 |0 # <CJK>
+<U6213> \x8F\xBF\xA8 |0 # <CJK>
+<U6215> \x8F\xBF\xA9 |0 # <CJK>
+<U621C> \x8F\xBF\xAA |0 # <CJK>
+<U6220> \x8F\xBF\xAB |0 # <CJK>
+<U6222> \x8F\xBF\xAC |0 # <CJK>
+<U6223> \x8F\xBF\xAD |0 # <CJK>
+<U6227> \x8F\xBF\xAE |0 # <CJK>
+<U6229> \x8F\xBF\xAF |0 # <CJK>
+<U622B> \x8F\xBF\xB0 |0 # <CJK>
+<U6239> \x8F\xBF\xB1 |0 # <CJK>
+<U623D> \x8F\xBF\xB2 |0 # <CJK>
+<U6242> \x8F\xBF\xB3 |0 # <CJK>
+<U6243> \x8F\xBF\xB4 |0 # <CJK>
+<U6244> \x8F\xBF\xB5 |0 # <CJK>
+<U6246> \x8F\xBF\xB6 |0 # <CJK>
+<U624C> \x8F\xBF\xB7 |0 # <CJK>
+<U6250> \x8F\xBF\xB8 |0 # <CJK>
+<U6251> \x8F\xBF\xB9 |0 # <CJK>
+<U6252> \x8F\xBF\xBA |0 # <CJK>
+<U6254> \x8F\xBF\xBB |0 # <CJK>
+<U6256> \x8F\xBF\xBC |0 # <CJK>
+<U625A> \x8F\xBF\xBD |0 # <CJK>
+<U625C> \x8F\xBF\xBE |0 # <CJK>
+<U6264> \x8F\xBF\xBF |0 # <CJK>
+<U626D> \x8F\xBF\xC0 |0 # <CJK>
+<U626F> \x8F\xBF\xC1 |0 # <CJK>
+<U6273> \x8F\xBF\xC2 |0 # <CJK>
+<U627A> \x8F\xBF\xC3 |0 # <CJK>
+<U627D> \x8F\xBF\xC4 |0 # <CJK>
+<U628D> \x8F\xBF\xC5 |0 # <CJK>
+<U628E> \x8F\xBF\xC6 |0 # <CJK>
+<U628F> \x8F\xBF\xC7 |0 # <CJK>
+<U6290> \x8F\xBF\xC8 |0 # <CJK>
+<U62A6> \x8F\xBF\xC9 |0 # <CJK>
+<U62A8> \x8F\xBF\xCA |0 # <CJK>
+<U62B3> \x8F\xBF\xCB |0 # <CJK>
+<U62B6> \x8F\xBF\xCC |0 # <CJK>
+<U62B7> \x8F\xBF\xCD |0 # <CJK>
+<U62BA> \x8F\xBF\xCE |0 # <CJK>
+<U62BE> \x8F\xBF\xCF |0 # <CJK>
+<U62BF> \x8F\xBF\xD0 |0 # <CJK>
+<U62C4> \x8F\xBF\xD1 |0 # <CJK>
+<U62CE> \x8F\xBF\xD2 |0 # <CJK>
+<U62D5> \x8F\xBF\xD3 |0 # <CJK>
+<U62D6> \x8F\xBF\xD4 |0 # <CJK>
+<U62DA> \x8F\xBF\xD5 |0 # <CJK>
+<U62EA> \x8F\xBF\xD6 |0 # <CJK>
+<U62F2> \x8F\xBF\xD7 |0 # <CJK>
+<U62F4> \x8F\xBF\xD8 |0 # <CJK>
+<U62FC> \x8F\xBF\xD9 |0 # <CJK>
+<U62FD> \x8F\xBF\xDA |0 # <CJK>
+<U6303> \x8F\xBF\xDB |0 # <CJK>
+<U6304> \x8F\xBF\xDC |0 # <CJK>
+<U630A> \x8F\xBF\xDD |0 # <CJK>
+<U630B> \x8F\xBF\xDE |0 # <CJK>
+<U630D> \x8F\xBF\xDF |0 # <CJK>
+<U6310> \x8F\xBF\xE0 |0 # <CJK>
+<U6313> \x8F\xBF\xE1 |0 # <CJK>
+<U6316> \x8F\xBF\xE2 |0 # <CJK>
+<U6318> \x8F\xBF\xE3 |0 # <CJK>
+<U6329> \x8F\xBF\xE4 |0 # <CJK>
+<U632A> \x8F\xBF\xE5 |0 # <CJK>
+<U632D> \x8F\xBF\xE6 |0 # <CJK>
+<U6335> \x8F\xBF\xE7 |0 # <CJK>
+<U6336> \x8F\xBF\xE8 |0 # <CJK>
+<U6339> \x8F\xBF\xE9 |0 # <CJK>
+<U633C> \x8F\xBF\xEA |0 # <CJK>
+<U6341> \x8F\xBF\xEB |0 # <CJK>
+<U6342> \x8F\xBF\xEC |0 # <CJK>
+<U6343> \x8F\xBF\xED |0 # <CJK>
+<U6344> \x8F\xBF\xEE |0 # <CJK>
+<U6346> \x8F\xBF\xEF |0 # <CJK>
+<U634A> \x8F\xBF\xF0 |0 # <CJK>
+<U634B> \x8F\xBF\xF1 |0 # <CJK>
+<U634E> \x8F\xBF\xF2 |0 # <CJK>
+<U6352> \x8F\xBF\xF3 |0 # <CJK>
+<U6353> \x8F\xBF\xF4 |0 # <CJK>
+<U6354> \x8F\xBF\xF5 |0 # <CJK>
+<U6358> \x8F\xBF\xF6 |0 # <CJK>
+<U635B> \x8F\xBF\xF7 |0 # <CJK>
+<U6365> \x8F\xBF\xF8 |0 # <CJK>
+<U6366> \x8F\xBF\xF9 |0 # <CJK>
+<U636C> \x8F\xBF\xFA |0 # <CJK>
+<U636D> \x8F\xBF\xFB |0 # <CJK>
+<U6371> \x8F\xBF\xFC |0 # <CJK>
+<U6374> \x8F\xBF\xFD |0 # <CJK>
+<U6375> \x8F\xBF\xFE |0 # <CJK>
+<U6378> \x8F\xC0\xA1 |0 # <CJK>
+<U637C> \x8F\xC0\xA2 |0 # <CJK>
+<U637D> \x8F\xC0\xA3 |0 # <CJK>
+<U637F> \x8F\xC0\xA4 |0 # <CJK>
+<U6382> \x8F\xC0\xA5 |0 # <CJK>
+<U6384> \x8F\xC0\xA6 |0 # <CJK>
+<U6387> \x8F\xC0\xA7 |0 # <CJK>
+<U638A> \x8F\xC0\xA8 |0 # <CJK>
+<U6390> \x8F\xC0\xA9 |0 # <CJK>
+<U6394> \x8F\xC0\xAA |0 # <CJK>
+<U6395> \x8F\xC0\xAB |0 # <CJK>
+<U6399> \x8F\xC0\xAC |0 # <CJK>
+<U639A> \x8F\xC0\xAD |0 # <CJK>
+<U639E> \x8F\xC0\xAE |0 # <CJK>
+<U63A4> \x8F\xC0\xAF |0 # <CJK>
+<U63A6> \x8F\xC0\xB0 |0 # <CJK>
+<U63AD> \x8F\xC0\xB1 |0 # <CJK>
+<U63AE> \x8F\xC0\xB2 |0 # <CJK>
+<U63AF> \x8F\xC0\xB3 |0 # <CJK>
+<U63BD> \x8F\xC0\xB4 |0 # <CJK>
+<U63C1> \x8F\xC0\xB5 |0 # <CJK>
+<U63C5> \x8F\xC0\xB6 |0 # <CJK>
+<U63C8> \x8F\xC0\xB7 |0 # <CJK>
+<U63CE> \x8F\xC0\xB8 |0 # <CJK>
+<U63D1> \x8F\xC0\xB9 |0 # <CJK>
+<U63D3> \x8F\xC0\xBA |0 # <CJK>
+<U63D4> \x8F\xC0\xBB |0 # <CJK>
+<U63D5> \x8F\xC0\xBC |0 # <CJK>
+<U63DC> \x8F\xC0\xBD |0 # <CJK>
+<U63E0> \x8F\xC0\xBE |0 # <CJK>
+<U63E5> \x8F\xC0\xBF |0 # <CJK>
+<U63EA> \x8F\xC0\xC0 |0 # <CJK>
+<U63EC> \x8F\xC0\xC1 |0 # <CJK>
+<U63F2> \x8F\xC0\xC2 |0 # <CJK>
+<U63F3> \x8F\xC0\xC3 |0 # <CJK>
+<U63F5> \x8F\xC0\xC4 |0 # <CJK>
+<U63F8> \x8F\xC0\xC5 |0 # <CJK>
+<U63F9> \x8F\xC0\xC6 |0 # <CJK>
+<U6409> \x8F\xC0\xC7 |0 # <CJK>
+<U640A> \x8F\xC0\xC8 |0 # <CJK>
+<U6410> \x8F\xC0\xC9 |0 # <CJK>
+<U6412> \x8F\xC0\xCA |0 # <CJK>
+<U6414> \x8F\xC0\xCB |0 # <CJK>
+<U6418> \x8F\xC0\xCC |0 # <CJK>
+<U641E> \x8F\xC0\xCD |0 # <CJK>
+<U6420> \x8F\xC0\xCE |0 # <CJK>
+<U6422> \x8F\xC0\xCF |0 # <CJK>
+<U6424> \x8F\xC0\xD0 |0 # <CJK>
+<U6425> \x8F\xC0\xD1 |0 # <CJK>
+<U6429> \x8F\xC0\xD2 |0 # <CJK>
+<U642A> \x8F\xC0\xD3 |0 # <CJK>
+<U642F> \x8F\xC0\xD4 |0 # <CJK>
+<U6430> \x8F\xC0\xD5 |0 # <CJK>
+<U6435> \x8F\xC0\xD6 |0 # <CJK>
+<U643D> \x8F\xC0\xD7 |0 # <CJK>
+<U643F> \x8F\xC0\xD8 |0 # <CJK>
+<U644B> \x8F\xC0\xD9 |0 # <CJK>
+<U644F> \x8F\xC0\xDA |0 # <CJK>
+<U6451> \x8F\xC0\xDB |0 # <CJK>
+<U6452> \x8F\xC0\xDC |0 # <CJK>
+<U6453> \x8F\xC0\xDD |0 # <CJK>
+<U6454> \x8F\xC0\xDE |0 # <CJK>
+<U645A> \x8F\xC0\xDF |0 # <CJK>
+<U645B> \x8F\xC0\xE0 |0 # <CJK>
+<U645C> \x8F\xC0\xE1 |0 # <CJK>
+<U645D> \x8F\xC0\xE2 |0 # <CJK>
+<U645F> \x8F\xC0\xE3 |0 # <CJK>
+<U6460> \x8F\xC0\xE4 |0 # <CJK>
+<U6461> \x8F\xC0\xE5 |0 # <CJK>
+<U6463> \x8F\xC0\xE6 |0 # <CJK>
+<U646D> \x8F\xC0\xE7 |0 # <CJK>
+<U6473> \x8F\xC0\xE8 |0 # <CJK>
+<U6474> \x8F\xC0\xE9 |0 # <CJK>
+<U647B> \x8F\xC0\xEA |0 # <CJK>
+<U647D> \x8F\xC0\xEB |0 # <CJK>
+<U6485> \x8F\xC0\xEC |0 # <CJK>
+<U6487> \x8F\xC0\xED |0 # <CJK>
+<U648F> \x8F\xC0\xEE |0 # <CJK>
+<U6490> \x8F\xC0\xEF |0 # <CJK>
+<U6491> \x8F\xC0\xF0 |0 # <CJK>
+<U6498> \x8F\xC0\xF1 |0 # <CJK>
+<U6499> \x8F\xC0\xF2 |0 # <CJK>
+<U649B> \x8F\xC0\xF3 |0 # <CJK>
+<U649D> \x8F\xC0\xF4 |0 # <CJK>
+<U649F> \x8F\xC0\xF5 |0 # <CJK>
+<U64A1> \x8F\xC0\xF6 |0 # <CJK>
+<U64A3> \x8F\xC0\xF7 |0 # <CJK>
+<U64A6> \x8F\xC0\xF8 |0 # <CJK>
+<U64A8> \x8F\xC0\xF9 |0 # <CJK>
+<U64AC> \x8F\xC0\xFA |0 # <CJK>
+<U64B3> \x8F\xC0\xFB |0 # <CJK>
+<U64BD> \x8F\xC0\xFC |0 # <CJK>
+<U64BE> \x8F\xC0\xFD |0 # <CJK>
+<U64BF> \x8F\xC0\xFE |0 # <CJK>
+<U64C4> \x8F\xC1\xA1 |0 # <CJK>
+<U64C9> \x8F\xC1\xA2 |0 # <CJK>
+<U64CA> \x8F\xC1\xA3 |0 # <CJK>
+<U64CB> \x8F\xC1\xA4 |0 # <CJK>
+<U64CC> \x8F\xC1\xA5 |0 # <CJK>
+<U64CE> \x8F\xC1\xA6 |0 # <CJK>
+<U64D0> \x8F\xC1\xA7 |0 # <CJK>
+<U64D1> \x8F\xC1\xA8 |0 # <CJK>
+<U64D5> \x8F\xC1\xA9 |0 # <CJK>
+<U64D7> \x8F\xC1\xAA |0 # <CJK>
+<U64E4> \x8F\xC1\xAB |0 # <CJK>
+<U64E5> \x8F\xC1\xAC |0 # <CJK>
+<U64E9> \x8F\xC1\xAD |0 # <CJK>
+<U64EA> \x8F\xC1\xAE |0 # <CJK>
+<U64ED> \x8F\xC1\xAF |0 # <CJK>
+<U64F0> \x8F\xC1\xB0 |0 # <CJK>
+<U64F5> \x8F\xC1\xB1 |0 # <CJK>
+<U64F7> \x8F\xC1\xB2 |0 # <CJK>
+<U64FB> \x8F\xC1\xB3 |0 # <CJK>
+<U64FF> \x8F\xC1\xB4 |0 # <CJK>
+<U6501> \x8F\xC1\xB5 |0 # <CJK>
+<U6504> \x8F\xC1\xB6 |0 # <CJK>
+<U6508> \x8F\xC1\xB7 |0 # <CJK>
+<U6509> \x8F\xC1\xB8 |0 # <CJK>
+<U650A> \x8F\xC1\xB9 |0 # <CJK>
+<U650F> \x8F\xC1\xBA |0 # <CJK>
+<U6513> \x8F\xC1\xBB |0 # <CJK>
+<U6514> \x8F\xC1\xBC |0 # <CJK>
+<U6516> \x8F\xC1\xBD |0 # <CJK>
+<U6519> \x8F\xC1\xBE |0 # <CJK>
+<U651B> \x8F\xC1\xBF |0 # <CJK>
+<U651E> \x8F\xC1\xC0 |0 # <CJK>
+<U651F> \x8F\xC1\xC1 |0 # <CJK>
+<U6522> \x8F\xC1\xC2 |0 # <CJK>
+<U6526> \x8F\xC1\xC3 |0 # <CJK>
+<U6529> \x8F\xC1\xC4 |0 # <CJK>
+<U652E> \x8F\xC1\xC5 |0 # <CJK>
+<U6531> \x8F\xC1\xC6 |0 # <CJK>
+<U653A> \x8F\xC1\xC7 |0 # <CJK>
+<U653C> \x8F\xC1\xC8 |0 # <CJK>
+<U653D> \x8F\xC1\xC9 |0 # <CJK>
+<U6543> \x8F\xC1\xCA |0 # <CJK>
+<U6547> \x8F\xC1\xCB |0 # <CJK>
+<U6549> \x8F\xC1\xCC |0 # <CJK>
+<U6550> \x8F\xC1\xCD |0 # <CJK>
+<U6552> \x8F\xC1\xCE |0 # <CJK>
+<U6554> \x8F\xC1\xCF |0 # <CJK>
+<U655F> \x8F\xC1\xD0 |0 # <CJK>
+<U6560> \x8F\xC1\xD1 |0 # <CJK>
+<U6567> \x8F\xC1\xD2 |0 # <CJK>
+<U656B> \x8F\xC1\xD3 |0 # <CJK>
+<U657A> \x8F\xC1\xD4 |0 # <CJK>
+<U657D> \x8F\xC1\xD5 |0 # <CJK>
+<U6581> \x8F\xC1\xD6 |0 # <CJK>
+<U6585> \x8F\xC1\xD7 |0 # <CJK>
+<U658A> \x8F\xC1\xD8 |0 # <CJK>
+<U6592> \x8F\xC1\xD9 |0 # <CJK>
+<U6595> \x8F\xC1\xDA |0 # <CJK>
+<U6598> \x8F\xC1\xDB |0 # <CJK>
+<U659D> \x8F\xC1\xDC |0 # <CJK>
+<U65A0> \x8F\xC1\xDD |0 # <CJK>
+<U65A3> \x8F\xC1\xDE |0 # <CJK>
+<U65A6> \x8F\xC1\xDF |0 # <CJK>
+<U65AE> \x8F\xC1\xE0 |0 # <CJK>
+<U65B2> \x8F\xC1\xE1 |0 # <CJK>
+<U65B3> \x8F\xC1\xE2 |0 # <CJK>
+<U65B4> \x8F\xC1\xE3 |0 # <CJK>
+<U65BF> \x8F\xC1\xE4 |0 # <CJK>
+<U65C2> \x8F\xC1\xE5 |0 # <CJK>
+<U65C8> \x8F\xC1\xE6 |0 # <CJK>
+<U65C9> \x8F\xC1\xE7 |0 # <CJK>
+<U65CE> \x8F\xC1\xE8 |0 # <CJK>
+<U65D0> \x8F\xC1\xE9 |0 # <CJK>
+<U65D4> \x8F\xC1\xEA |0 # <CJK>
+<U65D6> \x8F\xC1\xEB |0 # <CJK>
+<U65D8> \x8F\xC1\xEC |0 # <CJK>
+<U65DF> \x8F\xC1\xED |0 # <CJK>
+<U65F0> \x8F\xC1\xEE |0 # <CJK>
+<U65F2> \x8F\xC1\xEF |0 # <CJK>
+<U65F4> \x8F\xC1\xF0 |0 # <CJK>
+<U65F5> \x8F\xC1\xF1 |0 # <CJK>
+<U65F9> \x8F\xC1\xF2 |0 # <CJK>
+<U65FE> \x8F\xC1\xF3 |0 # <CJK>
+<U65FF> \x8F\xC1\xF4 |0 # <CJK>
+<U6600> \x8F\xC1\xF5 |0 # <CJK>
+<U6604> \x8F\xC1\xF6 |0 # <CJK>
+<U6608> \x8F\xC1\xF7 |0 # <CJK>
+<U6609> \x8F\xC1\xF8 |0 # <CJK>
+<U660D> \x8F\xC1\xF9 |0 # <CJK>
+<U6611> \x8F\xC1\xFA |0 # <CJK>
+<U6612> \x8F\xC1\xFB |0 # <CJK>
+<U6615> \x8F\xC1\xFC |0 # <CJK>
+<U6616> \x8F\xC1\xFD |0 # <CJK>
+<U661D> \x8F\xC1\xFE |0 # <CJK>
+<U661E> \x8F\xC2\xA1 |0 # <CJK>
+<U6621> \x8F\xC2\xA2 |0 # <CJK>
+<U6622> \x8F\xC2\xA3 |0 # <CJK>
+<U6623> \x8F\xC2\xA4 |0 # <CJK>
+<U6624> \x8F\xC2\xA5 |0 # <CJK>
+<U6626> \x8F\xC2\xA6 |0 # <CJK>
+<U6629> \x8F\xC2\xA7 |0 # <CJK>
+<U662A> \x8F\xC2\xA8 |0 # <CJK>
+<U662B> \x8F\xC2\xA9 |0 # <CJK>
+<U662C> \x8F\xC2\xAA |0 # <CJK>
+<U662E> \x8F\xC2\xAB |0 # <CJK>
+<U6630> \x8F\xC2\xAC |0 # <CJK>
+<U6631> \x8F\xC2\xAD |0 # <CJK>
+<U6633> \x8F\xC2\xAE |0 # <CJK>
+<U6639> \x8F\xC2\xAF |0 # <CJK>
+<U6637> \x8F\xC2\xB0 |0 # <CJK>
+<U6640> \x8F\xC2\xB1 |0 # <CJK>
+<U6645> \x8F\xC2\xB2 |0 # <CJK>
+<U6646> \x8F\xC2\xB3 |0 # <CJK>
+<U664A> \x8F\xC2\xB4 |0 # <CJK>
+<U664C> \x8F\xC2\xB5 |0 # <CJK>
+<U6651> \x8F\xC2\xB6 |0 # <CJK>
+<U664E> \x8F\xC2\xB7 |0 # <CJK>
+<U6657> \x8F\xC2\xB8 |0 # <CJK>
+<U6658> \x8F\xC2\xB9 |0 # <CJK>
+<U6659> \x8F\xC2\xBA |0 # <CJK>
+<U665B> \x8F\xC2\xBB |0 # <CJK>
+<U665C> \x8F\xC2\xBC |0 # <CJK>
+<U6660> \x8F\xC2\xBD |0 # <CJK>
+<U6661> \x8F\xC2\xBE |0 # <CJK>
+<U66FB> \x8F\xC2\xBF |0 # <CJK>
+<U666A> \x8F\xC2\xC0 |0 # <CJK>
+<U666B> \x8F\xC2\xC1 |0 # <CJK>
+<U666C> \x8F\xC2\xC2 |0 # <CJK>
+<U667E> \x8F\xC2\xC3 |0 # <CJK>
+<U6673> \x8F\xC2\xC4 |0 # <CJK>
+<U6675> \x8F\xC2\xC5 |0 # <CJK>
+<U667F> \x8F\xC2\xC6 |0 # <CJK>
+<U6677> \x8F\xC2\xC7 |0 # <CJK>
+<U6678> \x8F\xC2\xC8 |0 # <CJK>
+<U6679> \x8F\xC2\xC9 |0 # <CJK>
+<U667B> \x8F\xC2\xCA |0 # <CJK>
+<U6680> \x8F\xC2\xCB |0 # <CJK>
+<U667C> \x8F\xC2\xCC |0 # <CJK>
+<U668B> \x8F\xC2\xCD |0 # <CJK>
+<U668C> \x8F\xC2\xCE |0 # <CJK>
+<U668D> \x8F\xC2\xCF |0 # <CJK>
+<U6690> \x8F\xC2\xD0 |0 # <CJK>
+<U6692> \x8F\xC2\xD1 |0 # <CJK>
+<U6699> \x8F\xC2\xD2 |0 # <CJK>
+<U669A> \x8F\xC2\xD3 |0 # <CJK>
+<U669B> \x8F\xC2\xD4 |0 # <CJK>
+<U669C> \x8F\xC2\xD5 |0 # <CJK>
+<U669F> \x8F\xC2\xD6 |0 # <CJK>
+<U66A0> \x8F\xC2\xD7 |0 # <CJK>
+<U66A4> \x8F\xC2\xD8 |0 # <CJK>
+<U66AD> \x8F\xC2\xD9 |0 # <CJK>
+<U66B1> \x8F\xC2\xDA |0 # <CJK>
+<U66B2> \x8F\xC2\xDB |0 # <CJK>
+<U66B5> \x8F\xC2\xDC |0 # <CJK>
+<U66BB> \x8F\xC2\xDD |0 # <CJK>
+<U66BF> \x8F\xC2\xDE |0 # <CJK>
+<U66C0> \x8F\xC2\xDF |0 # <CJK>
+<U66C2> \x8F\xC2\xE0 |0 # <CJK>
+<U66C3> \x8F\xC2\xE1 |0 # <CJK>
+<U66C8> \x8F\xC2\xE2 |0 # <CJK>
+<U66CC> \x8F\xC2\xE3 |0 # <CJK>
+<U66CE> \x8F\xC2\xE4 |0 # <CJK>
+<U66CF> \x8F\xC2\xE5 |0 # <CJK>
+<U66D4> \x8F\xC2\xE6 |0 # <CJK>
+<U66DB> \x8F\xC2\xE7 |0 # <CJK>
+<U66DF> \x8F\xC2\xE8 |0 # <CJK>
+<U66E8> \x8F\xC2\xE9 |0 # <CJK>
+<U66EB> \x8F\xC2\xEA |0 # <CJK>
+<U66EC> \x8F\xC2\xEB |0 # <CJK>
+<U66EE> \x8F\xC2\xEC |0 # <CJK>
+<U66FA> \x8F\xC2\xED |0 # <CJK>
+<U6705> \x8F\xC2\xEE |0 # <CJK>
+<U6707> \x8F\xC2\xEF |0 # <CJK>
+<U670E> \x8F\xC2\xF0 |0 # <CJK>
+<U6713> \x8F\xC2\xF1 |0 # <CJK>
+<U6719> \x8F\xC2\xF2 |0 # <CJK>
+<U671C> \x8F\xC2\xF3 |0 # <CJK>
+<U6720> \x8F\xC2\xF4 |0 # <CJK>
+<U6722> \x8F\xC2\xF5 |0 # <CJK>
+<U6733> \x8F\xC2\xF6 |0 # <CJK>
+<U673E> \x8F\xC2\xF7 |0 # <CJK>
+<U6745> \x8F\xC2\xF8 |0 # <CJK>
+<U6747> \x8F\xC2\xF9 |0 # <CJK>
+<U6748> \x8F\xC2\xFA |0 # <CJK>
+<U674C> \x8F\xC2\xFB |0 # <CJK>
+<U6754> \x8F\xC2\xFC |0 # <CJK>
+<U6755> \x8F\xC2\xFD |0 # <CJK>
+<U675D> \x8F\xC2\xFE |0 # <CJK>
+<U6766> \x8F\xC3\xA1 |0 # <CJK>
+<U676C> \x8F\xC3\xA2 |0 # <CJK>
+<U676E> \x8F\xC3\xA3 |0 # <CJK>
+<U6774> \x8F\xC3\xA4 |0 # <CJK>
+<U6776> \x8F\xC3\xA5 |0 # <CJK>
+<U677B> \x8F\xC3\xA6 |0 # <CJK>
+<U6781> \x8F\xC3\xA7 |0 # <CJK>
+<U6784> \x8F\xC3\xA8 |0 # <CJK>
+<U678E> \x8F\xC3\xA9 |0 # <CJK>
+<U678F> \x8F\xC3\xAA |0 # <CJK>
+<U6791> \x8F\xC3\xAB |0 # <CJK>
+<U6793> \x8F\xC3\xAC |0 # <CJK>
+<U6796> \x8F\xC3\xAD |0 # <CJK>
+<U6798> \x8F\xC3\xAE |0 # <CJK>
+<U6799> \x8F\xC3\xAF |0 # <CJK>
+<U679B> \x8F\xC3\xB0 |0 # <CJK>
+<U67B0> \x8F\xC3\xB1 |0 # <CJK>
+<U67B1> \x8F\xC3\xB2 |0 # <CJK>
+<U67B2> \x8F\xC3\xB3 |0 # <CJK>
+<U67B5> \x8F\xC3\xB4 |0 # <CJK>
+<U67BB> \x8F\xC3\xB5 |0 # <CJK>
+<U67BC> \x8F\xC3\xB6 |0 # <CJK>
+<U67BD> \x8F\xC3\xB7 |0 # <CJK>
+<U67F9> \x8F\xC3\xB8 |0 # <CJK>
+<U67C0> \x8F\xC3\xB9 |0 # <CJK>
+<U67C2> \x8F\xC3\xBA |0 # <CJK>
+<U67C3> \x8F\xC3\xBB |0 # <CJK>
+<U67C5> \x8F\xC3\xBC |0 # <CJK>
+<U67C8> \x8F\xC3\xBD |0 # <CJK>
+<U67C9> \x8F\xC3\xBE |0 # <CJK>
+<U67D2> \x8F\xC3\xBF |0 # <CJK>
+<U67D7> \x8F\xC3\xC0 |0 # <CJK>
+<U67D9> \x8F\xC3\xC1 |0 # <CJK>
+<U67DC> \x8F\xC3\xC2 |0 # <CJK>
+<U67E1> \x8F\xC3\xC3 |0 # <CJK>
+<U67E6> \x8F\xC3\xC4 |0 # <CJK>
+<U67F0> \x8F\xC3\xC5 |0 # <CJK>
+<U67F2> \x8F\xC3\xC6 |0 # <CJK>
+<U67F6> \x8F\xC3\xC7 |0 # <CJK>
+<U67F7> \x8F\xC3\xC8 |0 # <CJK>
+<U6852> \x8F\xC3\xC9 |0 # <CJK>
+<U6814> \x8F\xC3\xCA |0 # <CJK>
+<U6819> \x8F\xC3\xCB |0 # <CJK>
+<U681D> \x8F\xC3\xCC |0 # <CJK>
+<U681F> \x8F\xC3\xCD |0 # <CJK>
+<U6828> \x8F\xC3\xCE |0 # <CJK>
+<U6827> \x8F\xC3\xCF |0 # <CJK>
+<U682C> \x8F\xC3\xD0 |0 # <CJK>
+<U682D> \x8F\xC3\xD1 |0 # <CJK>
+<U682F> \x8F\xC3\xD2 |0 # <CJK>
+<U6830> \x8F\xC3\xD3 |0 # <CJK>
+<U6831> \x8F\xC3\xD4 |0 # <CJK>
+<U6833> \x8F\xC3\xD5 |0 # <CJK>
+<U683B> \x8F\xC3\xD6 |0 # <CJK>
+<U683F> \x8F\xC3\xD7 |0 # <CJK>
+<U6844> \x8F\xC3\xD8 |0 # <CJK>
+<U6845> \x8F\xC3\xD9 |0 # <CJK>
+<U684A> \x8F\xC3\xDA |0 # <CJK>
+<U684C> \x8F\xC3\xDB |0 # <CJK>
+<U6855> \x8F\xC3\xDC |0 # <CJK>
+<U6857> \x8F\xC3\xDD |0 # <CJK>
+<U6858> \x8F\xC3\xDE |0 # <CJK>
+<U685B> \x8F\xC3\xDF |0 # <CJK>
+<U686B> \x8F\xC3\xE0 |0 # <CJK>
+<U686E> \x8F\xC3\xE1 |0 # <CJK>
+<U686F> \x8F\xC3\xE2 |0 # <CJK>
+<U6870> \x8F\xC3\xE3 |0 # <CJK>
+<U6871> \x8F\xC3\xE4 |0 # <CJK>
+<U6872> \x8F\xC3\xE5 |0 # <CJK>
+<U6875> \x8F\xC3\xE6 |0 # <CJK>
+<U6879> \x8F\xC3\xE7 |0 # <CJK>
+<U687A> \x8F\xC3\xE8 |0 # <CJK>
+<U687B> \x8F\xC3\xE9 |0 # <CJK>
+<U687C> \x8F\xC3\xEA |0 # <CJK>
+<U6882> \x8F\xC3\xEB |0 # <CJK>
+<U6884> \x8F\xC3\xEC |0 # <CJK>
+<U6886> \x8F\xC3\xED |0 # <CJK>
+<U6888> \x8F\xC3\xEE |0 # <CJK>
+<U6896> \x8F\xC3\xEF |0 # <CJK>
+<U6898> \x8F\xC3\xF0 |0 # <CJK>
+<U689A> \x8F\xC3\xF1 |0 # <CJK>
+<U689C> \x8F\xC3\xF2 |0 # <CJK>
+<U68A1> \x8F\xC3\xF3 |0 # <CJK>
+<U68A3> \x8F\xC3\xF4 |0 # <CJK>
+<U68A5> \x8F\xC3\xF5 |0 # <CJK>
+<U68A9> \x8F\xC3\xF6 |0 # <CJK>
+<U68AA> \x8F\xC3\xF7 |0 # <CJK>
+<U68AE> \x8F\xC3\xF8 |0 # <CJK>
+<U68B2> \x8F\xC3\xF9 |0 # <CJK>
+<U68BB> \x8F\xC3\xFA |0 # <CJK>
+<U68C5> \x8F\xC3\xFB |0 # <CJK>
+<U68C8> \x8F\xC3\xFC |0 # <CJK>
+<U68CC> \x8F\xC3\xFD |0 # <CJK>
+<U68CF> \x8F\xC3\xFE |0 # <CJK>
+<U68D0> \x8F\xC4\xA1 |0 # <CJK>
+<U68D1> \x8F\xC4\xA2 |0 # <CJK>
+<U68D3> \x8F\xC4\xA3 |0 # <CJK>
+<U68D6> \x8F\xC4\xA4 |0 # <CJK>
+<U68D9> \x8F\xC4\xA5 |0 # <CJK>
+<U68DC> \x8F\xC4\xA6 |0 # <CJK>
+<U68DD> \x8F\xC4\xA7 |0 # <CJK>
+<U68E5> \x8F\xC4\xA8 |0 # <CJK>
+<U68E8> \x8F\xC4\xA9 |0 # <CJK>
+<U68EA> \x8F\xC4\xAA |0 # <CJK>
+<U68EB> \x8F\xC4\xAB |0 # <CJK>
+<U68EC> \x8F\xC4\xAC |0 # <CJK>
+<U68ED> \x8F\xC4\xAD |0 # <CJK>
+<U68F0> \x8F\xC4\xAE |0 # <CJK>
+<U68F1> \x8F\xC4\xAF |0 # <CJK>
+<U68F5> \x8F\xC4\xB0 |0 # <CJK>
+<U68F6> \x8F\xC4\xB1 |0 # <CJK>
+<U68FB> \x8F\xC4\xB2 |0 # <CJK>
+<U68FC> \x8F\xC4\xB3 |0 # <CJK>
+<U68FD> \x8F\xC4\xB4 |0 # <CJK>
+<U6906> \x8F\xC4\xB5 |0 # <CJK>
+<U6909> \x8F\xC4\xB6 |0 # <CJK>
+<U690A> \x8F\xC4\xB7 |0 # <CJK>
+<U6910> \x8F\xC4\xB8 |0 # <CJK>
+<U6911> \x8F\xC4\xB9 |0 # <CJK>
+<U6913> \x8F\xC4\xBA |0 # <CJK>
+<U6916> \x8F\xC4\xBB |0 # <CJK>
+<U6917> \x8F\xC4\xBC |0 # <CJK>
+<U6931> \x8F\xC4\xBD |0 # <CJK>
+<U6933> \x8F\xC4\xBE |0 # <CJK>
+<U6935> \x8F\xC4\xBF |0 # <CJK>
+<U6938> \x8F\xC4\xC0 |0 # <CJK>
+<U693B> \x8F\xC4\xC1 |0 # <CJK>
+<U6942> \x8F\xC4\xC2 |0 # <CJK>
+<U6945> \x8F\xC4\xC3 |0 # <CJK>
+<U6949> \x8F\xC4\xC4 |0 # <CJK>
+<U694E> \x8F\xC4\xC5 |0 # <CJK>
+<U6957> \x8F\xC4\xC6 |0 # <CJK>
+<U695B> \x8F\xC4\xC7 |0 # <CJK>
+<U6963> \x8F\xC4\xC8 |0 # <CJK>
+<U6964> \x8F\xC4\xC9 |0 # <CJK>
+<U6965> \x8F\xC4\xCA |0 # <CJK>
+<U6966> \x8F\xC4\xCB |0 # <CJK>
+<U6968> \x8F\xC4\xCC |0 # <CJK>
+<U6969> \x8F\xC4\xCD |0 # <CJK>
+<U696C> \x8F\xC4\xCE |0 # <CJK>
+<U6970> \x8F\xC4\xCF |0 # <CJK>
+<U6971> \x8F\xC4\xD0 |0 # <CJK>
+<U6972> \x8F\xC4\xD1 |0 # <CJK>
+<U697A> \x8F\xC4\xD2 |0 # <CJK>
+<U697B> \x8F\xC4\xD3 |0 # <CJK>
+<U697F> \x8F\xC4\xD4 |0 # <CJK>
+<U6980> \x8F\xC4\xD5 |0 # <CJK>
+<U698D> \x8F\xC4\xD6 |0 # <CJK>
+<U6992> \x8F\xC4\xD7 |0 # <CJK>
+<U6996> \x8F\xC4\xD8 |0 # <CJK>
+<U6998> \x8F\xC4\xD9 |0 # <CJK>
+<U69A1> \x8F\xC4\xDA |0 # <CJK>
+<U69A5> \x8F\xC4\xDB |0 # <CJK>
+<U69A6> \x8F\xC4\xDC |0 # <CJK>
+<U69A8> \x8F\xC4\xDD |0 # <CJK>
+<U69AB> \x8F\xC4\xDE |0 # <CJK>
+<U69AD> \x8F\xC4\xDF |0 # <CJK>
+<U69AF> \x8F\xC4\xE0 |0 # <CJK>
+<U69B7> \x8F\xC4\xE1 |0 # <CJK>
+<U69B8> \x8F\xC4\xE2 |0 # <CJK>
+<U69BA> \x8F\xC4\xE3 |0 # <CJK>
+<U69BC> \x8F\xC4\xE4 |0 # <CJK>
+<U69C5> \x8F\xC4\xE5 |0 # <CJK>
+<U69C8> \x8F\xC4\xE6 |0 # <CJK>
+<U69D1> \x8F\xC4\xE7 |0 # <CJK>
+<U69D6> \x8F\xC4\xE8 |0 # <CJK>
+<U69D7> \x8F\xC4\xE9 |0 # <CJK>
+<U69E2> \x8F\xC4\xEA |0 # <CJK>
+<U69E5> \x8F\xC4\xEB |0 # <CJK>
+<U69EE> \x8F\xC4\xEC |0 # <CJK>
+<U69EF> \x8F\xC4\xED |0 # <CJK>
+<U69F1> \x8F\xC4\xEE |0 # <CJK>
+<U69F3> \x8F\xC4\xEF |0 # <CJK>
+<U69F5> \x8F\xC4\xF0 |0 # <CJK>
+<U69FE> \x8F\xC4\xF1 |0 # <CJK>
+<U6A00> \x8F\xC4\xF2 |0 # <CJK>
+<U6A01> \x8F\xC4\xF3 |0 # <CJK>
+<U6A03> \x8F\xC4\xF4 |0 # <CJK>
+<U6A0F> \x8F\xC4\xF5 |0 # <CJK>
+<U6A11> \x8F\xC4\xF6 |0 # <CJK>
+<U6A15> \x8F\xC4\xF7 |0 # <CJK>
+<U6A1A> \x8F\xC4\xF8 |0 # <CJK>
+<U6A1D> \x8F\xC4\xF9 |0 # <CJK>
+<U6A20> \x8F\xC4\xFA |0 # <CJK>
+<U6A24> \x8F\xC4\xFB |0 # <CJK>
+<U6A28> \x8F\xC4\xFC |0 # <CJK>
+<U6A30> \x8F\xC4\xFD |0 # <CJK>
+<U6A32> \x8F\xC4\xFE |0 # <CJK>
+<U6A34> \x8F\xC5\xA1 |0 # <CJK>
+<U6A37> \x8F\xC5\xA2 |0 # <CJK>
+<U6A3B> \x8F\xC5\xA3 |0 # <CJK>
+<U6A3E> \x8F\xC5\xA4 |0 # <CJK>
+<U6A3F> \x8F\xC5\xA5 |0 # <CJK>
+<U6A45> \x8F\xC5\xA6 |0 # <CJK>
+<U6A46> \x8F\xC5\xA7 |0 # <CJK>
+<U6A49> \x8F\xC5\xA8 |0 # <CJK>
+<U6A4A> \x8F\xC5\xA9 |0 # <CJK>
+<U6A4E> \x8F\xC5\xAA |0 # <CJK>
+<U6A50> \x8F\xC5\xAB |0 # <CJK>
+<U6A51> \x8F\xC5\xAC |0 # <CJK>
+<U6A52> \x8F\xC5\xAD |0 # <CJK>
+<U6A55> \x8F\xC5\xAE |0 # <CJK>
+<U6A56> \x8F\xC5\xAF |0 # <CJK>
+<U6A5B> \x8F\xC5\xB0 |0 # <CJK>
+<U6A64> \x8F\xC5\xB1 |0 # <CJK>
+<U6A67> \x8F\xC5\xB2 |0 # <CJK>
+<U6A6A> \x8F\xC5\xB3 |0 # <CJK>
+<U6A71> \x8F\xC5\xB4 |0 # <CJK>
+<U6A73> \x8F\xC5\xB5 |0 # <CJK>
+<U6A7E> \x8F\xC5\xB6 |0 # <CJK>
+<U6A81> \x8F\xC5\xB7 |0 # <CJK>
+<U6A83> \x8F\xC5\xB8 |0 # <CJK>
+<U6A86> \x8F\xC5\xB9 |0 # <CJK>
+<U6A87> \x8F\xC5\xBA |0 # <CJK>
+<U6A89> \x8F\xC5\xBB |0 # <CJK>
+<U6A8B> \x8F\xC5\xBC |0 # <CJK>
+<U6A91> \x8F\xC5\xBD |0 # <CJK>
+<U6A9B> \x8F\xC5\xBE |0 # <CJK>
+<U6A9D> \x8F\xC5\xBF |0 # <CJK>
+<U6A9E> \x8F\xC5\xC0 |0 # <CJK>
+<U6A9F> \x8F\xC5\xC1 |0 # <CJK>
+<U6AA5> \x8F\xC5\xC2 |0 # <CJK>
+<U6AAB> \x8F\xC5\xC3 |0 # <CJK>
+<U6AAF> \x8F\xC5\xC4 |0 # <CJK>
+<U6AB0> \x8F\xC5\xC5 |0 # <CJK>
+<U6AB1> \x8F\xC5\xC6 |0 # <CJK>
+<U6AB4> \x8F\xC5\xC7 |0 # <CJK>
+<U6ABD> \x8F\xC5\xC8 |0 # <CJK>
+<U6ABE> \x8F\xC5\xC9 |0 # <CJK>
+<U6ABF> \x8F\xC5\xCA |0 # <CJK>
+<U6AC6> \x8F\xC5\xCB |0 # <CJK>
+<U6AC9> \x8F\xC5\xCC |0 # <CJK>
+<U6AC8> \x8F\xC5\xCD |0 # <CJK>
+<U6ACC> \x8F\xC5\xCE |0 # <CJK>
+<U6AD0> \x8F\xC5\xCF |0 # <CJK>
+<U6AD4> \x8F\xC5\xD0 |0 # <CJK>
+<U6AD5> \x8F\xC5\xD1 |0 # <CJK>
+<U6AD6> \x8F\xC5\xD2 |0 # <CJK>
+<U6ADC> \x8F\xC5\xD3 |0 # <CJK>
+<U6ADD> \x8F\xC5\xD4 |0 # <CJK>
+<U6AE4> \x8F\xC5\xD5 |0 # <CJK>
+<U6AE7> \x8F\xC5\xD6 |0 # <CJK>
+<U6AEC> \x8F\xC5\xD7 |0 # <CJK>
+<U6AF0> \x8F\xC5\xD8 |0 # <CJK>
+<U6AF1> \x8F\xC5\xD9 |0 # <CJK>
+<U6AF2> \x8F\xC5\xDA |0 # <CJK>
+<U6AFC> \x8F\xC5\xDB |0 # <CJK>
+<U6AFD> \x8F\xC5\xDC |0 # <CJK>
+<U6B02> \x8F\xC5\xDD |0 # <CJK>
+<U6B03> \x8F\xC5\xDE |0 # <CJK>
+<U6B06> \x8F\xC5\xDF |0 # <CJK>
+<U6B07> \x8F\xC5\xE0 |0 # <CJK>
+<U6B09> \x8F\xC5\xE1 |0 # <CJK>
+<U6B0F> \x8F\xC5\xE2 |0 # <CJK>
+<U6B10> \x8F\xC5\xE3 |0 # <CJK>
+<U6B11> \x8F\xC5\xE4 |0 # <CJK>
+<U6B17> \x8F\xC5\xE5 |0 # <CJK>
+<U6B1B> \x8F\xC5\xE6 |0 # <CJK>
+<U6B1E> \x8F\xC5\xE7 |0 # <CJK>
+<U6B24> \x8F\xC5\xE8 |0 # <CJK>
+<U6B28> \x8F\xC5\xE9 |0 # <CJK>
+<U6B2B> \x8F\xC5\xEA |0 # <CJK>
+<U6B2C> \x8F\xC5\xEB |0 # <CJK>
+<U6B2F> \x8F\xC5\xEC |0 # <CJK>
+<U6B35> \x8F\xC5\xED |0 # <CJK>
+<U6B36> \x8F\xC5\xEE |0 # <CJK>
+<U6B3B> \x8F\xC5\xEF |0 # <CJK>
+<U6B3F> \x8F\xC5\xF0 |0 # <CJK>
+<U6B46> \x8F\xC5\xF1 |0 # <CJK>
+<U6B4A> \x8F\xC5\xF2 |0 # <CJK>
+<U6B4D> \x8F\xC5\xF3 |0 # <CJK>
+<U6B52> \x8F\xC5\xF4 |0 # <CJK>
+<U6B56> \x8F\xC5\xF5 |0 # <CJK>
+<U6B58> \x8F\xC5\xF6 |0 # <CJK>
+<U6B5D> \x8F\xC5\xF7 |0 # <CJK>
+<U6B60> \x8F\xC5\xF8 |0 # <CJK>
+<U6B67> \x8F\xC5\xF9 |0 # <CJK>
+<U6B6B> \x8F\xC5\xFA |0 # <CJK>
+<U6B6E> \x8F\xC5\xFB |0 # <CJK>
+<U6B70> \x8F\xC5\xFC |0 # <CJK>
+<U6B75> \x8F\xC5\xFD |0 # <CJK>
+<U6B7D> \x8F\xC5\xFE |0 # <CJK>
+<U6B7E> \x8F\xC6\xA1 |0 # <CJK>
+<U6B82> \x8F\xC6\xA2 |0 # <CJK>
+<U6B85> \x8F\xC6\xA3 |0 # <CJK>
+<U6B97> \x8F\xC6\xA4 |0 # <CJK>
+<U6B9B> \x8F\xC6\xA5 |0 # <CJK>
+<U6B9F> \x8F\xC6\xA6 |0 # <CJK>
+<U6BA0> \x8F\xC6\xA7 |0 # <CJK>
+<U6BA2> \x8F\xC6\xA8 |0 # <CJK>
+<U6BA3> \x8F\xC6\xA9 |0 # <CJK>
+<U6BA8> \x8F\xC6\xAA |0 # <CJK>
+<U6BA9> \x8F\xC6\xAB |0 # <CJK>
+<U6BAC> \x8F\xC6\xAC |0 # <CJK>
+<U6BAD> \x8F\xC6\xAD |0 # <CJK>
+<U6BAE> \x8F\xC6\xAE |0 # <CJK>
+<U6BB0> \x8F\xC6\xAF |0 # <CJK>
+<U6BB8> \x8F\xC6\xB0 |0 # <CJK>
+<U6BB9> \x8F\xC6\xB1 |0 # <CJK>
+<U6BBD> \x8F\xC6\xB2 |0 # <CJK>
+<U6BBE> \x8F\xC6\xB3 |0 # <CJK>
+<U6BC3> \x8F\xC6\xB4 |0 # <CJK>
+<U6BC4> \x8F\xC6\xB5 |0 # <CJK>
+<U6BC9> \x8F\xC6\xB6 |0 # <CJK>
+<U6BCC> \x8F\xC6\xB7 |0 # <CJK>
+<U6BD6> \x8F\xC6\xB8 |0 # <CJK>
+<U6BDA> \x8F\xC6\xB9 |0 # <CJK>
+<U6BE1> \x8F\xC6\xBA |0 # <CJK>
+<U6BE3> \x8F\xC6\xBB |0 # <CJK>
+<U6BE6> \x8F\xC6\xBC |0 # <CJK>
+<U6BE7> \x8F\xC6\xBD |0 # <CJK>
+<U6BEE> \x8F\xC6\xBE |0 # <CJK>
+<U6BF1> \x8F\xC6\xBF |0 # <CJK>
+<U6BF7> \x8F\xC6\xC0 |0 # <CJK>
+<U6BF9> \x8F\xC6\xC1 |0 # <CJK>
+<U6BFF> \x8F\xC6\xC2 |0 # <CJK>
+<U6C02> \x8F\xC6\xC3 |0 # <CJK>
+<U6C04> \x8F\xC6\xC4 |0 # <CJK>
+<U6C05> \x8F\xC6\xC5 |0 # <CJK>
+<U6C09> \x8F\xC6\xC6 |0 # <CJK>
+<U6C0D> \x8F\xC6\xC7 |0 # <CJK>
+<U6C0E> \x8F\xC6\xC8 |0 # <CJK>
+<U6C10> \x8F\xC6\xC9 |0 # <CJK>
+<U6C12> \x8F\xC6\xCA |0 # <CJK>
+<U6C19> \x8F\xC6\xCB |0 # <CJK>
+<U6C1F> \x8F\xC6\xCC |0 # <CJK>
+<U6C26> \x8F\xC6\xCD |0 # <CJK>
+<U6C27> \x8F\xC6\xCE |0 # <CJK>
+<U6C28> \x8F\xC6\xCF |0 # <CJK>
+<U6C2C> \x8F\xC6\xD0 |0 # <CJK>
+<U6C2E> \x8F\xC6\xD1 |0 # <CJK>
+<U6C33> \x8F\xC6\xD2 |0 # <CJK>
+<U6C35> \x8F\xC6\xD3 |0 # <CJK>
+<U6C36> \x8F\xC6\xD4 |0 # <CJK>
+<U6C3A> \x8F\xC6\xD5 |0 # <CJK>
+<U6C3B> \x8F\xC6\xD6 |0 # <CJK>
+<U6C3F> \x8F\xC6\xD7 |0 # <CJK>
+<U6C4A> \x8F\xC6\xD8 |0 # <CJK>
+<U6C4B> \x8F\xC6\xD9 |0 # <CJK>
+<U6C4D> \x8F\xC6\xDA |0 # <CJK>
+<U6C4F> \x8F\xC6\xDB |0 # <CJK>
+<U6C52> \x8F\xC6\xDC |0 # <CJK>
+<U6C54> \x8F\xC6\xDD |0 # <CJK>
+<U6C59> \x8F\xC6\xDE |0 # <CJK>
+<U6C5B> \x8F\xC6\xDF |0 # <CJK>
+<U6C5C> \x8F\xC6\xE0 |0 # <CJK>
+<U6C6B> \x8F\xC6\xE1 |0 # <CJK>
+<U6C6D> \x8F\xC6\xE2 |0 # <CJK>
+<U6C6F> \x8F\xC6\xE3 |0 # <CJK>
+<U6C74> \x8F\xC6\xE4 |0 # <CJK>
+<U6C76> \x8F\xC6\xE5 |0 # <CJK>
+<U6C78> \x8F\xC6\xE6 |0 # <CJK>
+<U6C79> \x8F\xC6\xE7 |0 # <CJK>
+<U6C7B> \x8F\xC6\xE8 |0 # <CJK>
+<U6C85> \x8F\xC6\xE9 |0 # <CJK>
+<U6C86> \x8F\xC6\xEA |0 # <CJK>
+<U6C87> \x8F\xC6\xEB |0 # <CJK>
+<U6C89> \x8F\xC6\xEC |0 # <CJK>
+<U6C94> \x8F\xC6\xED |0 # <CJK>
+<U6C95> \x8F\xC6\xEE |0 # <CJK>
+<U6C97> \x8F\xC6\xEF |0 # <CJK>
+<U6C98> \x8F\xC6\xF0 |0 # <CJK>
+<U6C9C> \x8F\xC6\xF1 |0 # <CJK>
+<U6C9F> \x8F\xC6\xF2 |0 # <CJK>
+<U6CB0> \x8F\xC6\xF3 |0 # <CJK>
+<U6CB2> \x8F\xC6\xF4 |0 # <CJK>
+<U6CB4> \x8F\xC6\xF5 |0 # <CJK>
+<U6CC2> \x8F\xC6\xF6 |0 # <CJK>
+<U6CC6> \x8F\xC6\xF7 |0 # <CJK>
+<U6CCD> \x8F\xC6\xF8 |0 # <CJK>
+<U6CCF> \x8F\xC6\xF9 |0 # <CJK>
+<U6CD0> \x8F\xC6\xFA |0 # <CJK>
+<U6CD1> \x8F\xC6\xFB |0 # <CJK>
+<U6CD2> \x8F\xC6\xFC |0 # <CJK>
+<U6CD4> \x8F\xC6\xFD |0 # <CJK>
+<U6CD6> \x8F\xC6\xFE |0 # <CJK>
+<U6CDA> \x8F\xC7\xA1 |0 # <CJK>
+<U6CDC> \x8F\xC7\xA2 |0 # <CJK>
+<U6CE0> \x8F\xC7\xA3 |0 # <CJK>
+<U6CE7> \x8F\xC7\xA4 |0 # <CJK>
+<U6CE9> \x8F\xC7\xA5 |0 # <CJK>
+<U6CEB> \x8F\xC7\xA6 |0 # <CJK>
+<U6CEC> \x8F\xC7\xA7 |0 # <CJK>
+<U6CEE> \x8F\xC7\xA8 |0 # <CJK>
+<U6CF2> \x8F\xC7\xA9 |0 # <CJK>
+<U6CF4> \x8F\xC7\xAA |0 # <CJK>
+<U6D04> \x8F\xC7\xAB |0 # <CJK>
+<U6D07> \x8F\xC7\xAC |0 # <CJK>
+<U6D0A> \x8F\xC7\xAD |0 # <CJK>
+<U6D0E> \x8F\xC7\xAE |0 # <CJK>
+<U6D0F> \x8F\xC7\xAF |0 # <CJK>
+<U6D11> \x8F\xC7\xB0 |0 # <CJK>
+<U6D13> \x8F\xC7\xB1 |0 # <CJK>
+<U6D1A> \x8F\xC7\xB2 |0 # <CJK>
+<U6D26> \x8F\xC7\xB3 |0 # <CJK>
+<U6D27> \x8F\xC7\xB4 |0 # <CJK>
+<U6D28> \x8F\xC7\xB5 |0 # <CJK>
+<U6C67> \x8F\xC7\xB6 |0 # <CJK>
+<U6D2E> \x8F\xC7\xB7 |0 # <CJK>
+<U6D2F> \x8F\xC7\xB8 |0 # <CJK>
+<U6D31> \x8F\xC7\xB9 |0 # <CJK>
+<U6D39> \x8F\xC7\xBA |0 # <CJK>
+<U6D3C> \x8F\xC7\xBB |0 # <CJK>
+<U6D3F> \x8F\xC7\xBC |0 # <CJK>
+<U6D57> \x8F\xC7\xBD |0 # <CJK>
+<U6D5E> \x8F\xC7\xBE |0 # <CJK>
+<U6D5F> \x8F\xC7\xBF |0 # <CJK>
+<U6D61> \x8F\xC7\xC0 |0 # <CJK>
+<U6D65> \x8F\xC7\xC1 |0 # <CJK>
+<U6D67> \x8F\xC7\xC2 |0 # <CJK>
+<U6D6F> \x8F\xC7\xC3 |0 # <CJK>
+<U6D70> \x8F\xC7\xC4 |0 # <CJK>
+<U6D7C> \x8F\xC7\xC5 |0 # <CJK>
+<U6D82> \x8F\xC7\xC6 |0 # <CJK>
+<U6D87> \x8F\xC7\xC7 |0 # <CJK>
+<U6D91> \x8F\xC7\xC8 |0 # <CJK>
+<U6D92> \x8F\xC7\xC9 |0 # <CJK>
+<U6D94> \x8F\xC7\xCA |0 # <CJK>
+<U6D96> \x8F\xC7\xCB |0 # <CJK>
+<U6D97> \x8F\xC7\xCC |0 # <CJK>
+<U6D98> \x8F\xC7\xCD |0 # <CJK>
+<U6DAA> \x8F\xC7\xCE |0 # <CJK>
+<U6DAC> \x8F\xC7\xCF |0 # <CJK>
+<U6DB4> \x8F\xC7\xD0 |0 # <CJK>
+<U6DB7> \x8F\xC7\xD1 |0 # <CJK>
+<U6DB9> \x8F\xC7\xD2 |0 # <CJK>
+<U6DBD> \x8F\xC7\xD3 |0 # <CJK>
+<U6DBF> \x8F\xC7\xD4 |0 # <CJK>
+<U6DC4> \x8F\xC7\xD5 |0 # <CJK>
+<U6DC8> \x8F\xC7\xD6 |0 # <CJK>
+<U6DCA> \x8F\xC7\xD7 |0 # <CJK>
+<U6DCE> \x8F\xC7\xD8 |0 # <CJK>
+<U6DCF> \x8F\xC7\xD9 |0 # <CJK>
+<U6DD6> \x8F\xC7\xDA |0 # <CJK>
+<U6DDB> \x8F\xC7\xDB |0 # <CJK>
+<U6DDD> \x8F\xC7\xDC |0 # <CJK>
+<U6DDF> \x8F\xC7\xDD |0 # <CJK>
+<U6DE0> \x8F\xC7\xDE |0 # <CJK>
+<U6DE2> \x8F\xC7\xDF |0 # <CJK>
+<U6DE5> \x8F\xC7\xE0 |0 # <CJK>
+<U6DE9> \x8F\xC7\xE1 |0 # <CJK>
+<U6DEF> \x8F\xC7\xE2 |0 # <CJK>
+<U6DF0> \x8F\xC7\xE3 |0 # <CJK>
+<U6DF4> \x8F\xC7\xE4 |0 # <CJK>
+<U6DF6> \x8F\xC7\xE5 |0 # <CJK>
+<U6DFC> \x8F\xC7\xE6 |0 # <CJK>
+<U6E00> \x8F\xC7\xE7 |0 # <CJK>
+<U6E04> \x8F\xC7\xE8 |0 # <CJK>
+<U6E1E> \x8F\xC7\xE9 |0 # <CJK>
+<U6E22> \x8F\xC7\xEA |0 # <CJK>
+<U6E27> \x8F\xC7\xEB |0 # <CJK>
+<U6E32> \x8F\xC7\xEC |0 # <CJK>
+<U6E36> \x8F\xC7\xED |0 # <CJK>
+<U6E39> \x8F\xC7\xEE |0 # <CJK>
+<U6E3B> \x8F\xC7\xEF |0 # <CJK>
+<U6E3C> \x8F\xC7\xF0 |0 # <CJK>
+<U6E44> \x8F\xC7\xF1 |0 # <CJK>
+<U6E45> \x8F\xC7\xF2 |0 # <CJK>
+<U6E48> \x8F\xC7\xF3 |0 # <CJK>
+<U6E49> \x8F\xC7\xF4 |0 # <CJK>
+<U6E4B> \x8F\xC7\xF5 |0 # <CJK>
+<U6E4F> \x8F\xC7\xF6 |0 # <CJK>
+<U6E51> \x8F\xC7\xF7 |0 # <CJK>
+<U6E52> \x8F\xC7\xF8 |0 # <CJK>
+<U6E53> \x8F\xC7\xF9 |0 # <CJK>
+<U6E54> \x8F\xC7\xFA |0 # <CJK>
+<U6E57> \x8F\xC7\xFB |0 # <CJK>
+<U6E5C> \x8F\xC7\xFC |0 # <CJK>
+<U6E5D> \x8F\xC7\xFD |0 # <CJK>
+<U6E5E> \x8F\xC7\xFE |0 # <CJK>
+<U6E62> \x8F\xC8\xA1 |0 # <CJK>
+<U6E63> \x8F\xC8\xA2 |0 # <CJK>
+<U6E68> \x8F\xC8\xA3 |0 # <CJK>
+<U6E73> \x8F\xC8\xA4 |0 # <CJK>
+<U6E7B> \x8F\xC8\xA5 |0 # <CJK>
+<U6E7D> \x8F\xC8\xA6 |0 # <CJK>
+<U6E8D> \x8F\xC8\xA7 |0 # <CJK>
+<U6E93> \x8F\xC8\xA8 |0 # <CJK>
+<U6E99> \x8F\xC8\xA9 |0 # <CJK>
+<U6EA0> \x8F\xC8\xAA |0 # <CJK>
+<U6EA7> \x8F\xC8\xAB |0 # <CJK>
+<U6EAD> \x8F\xC8\xAC |0 # <CJK>
+<U6EAE> \x8F\xC8\xAD |0 # <CJK>
+<U6EB1> \x8F\xC8\xAE |0 # <CJK>
+<U6EB3> \x8F\xC8\xAF |0 # <CJK>
+<U6EBB> \x8F\xC8\xB0 |0 # <CJK>
+<U6EBF> \x8F\xC8\xB1 |0 # <CJK>
+<U6EC0> \x8F\xC8\xB2 |0 # <CJK>
+<U6EC1> \x8F\xC8\xB3 |0 # <CJK>
+<U6EC3> \x8F\xC8\xB4 |0 # <CJK>
+<U6EC7> \x8F\xC8\xB5 |0 # <CJK>
+<U6EC8> \x8F\xC8\xB6 |0 # <CJK>
+<U6ECA> \x8F\xC8\xB7 |0 # <CJK>
+<U6ECD> \x8F\xC8\xB8 |0 # <CJK>
+<U6ECE> \x8F\xC8\xB9 |0 # <CJK>
+<U6ECF> \x8F\xC8\xBA |0 # <CJK>
+<U6EEB> \x8F\xC8\xBB |0 # <CJK>
+<U6EED> \x8F\xC8\xBC |0 # <CJK>
+<U6EEE> \x8F\xC8\xBD |0 # <CJK>
+<U6EF9> \x8F\xC8\xBE |0 # <CJK>
+<U6EFB> \x8F\xC8\xBF |0 # <CJK>
+<U6EFD> \x8F\xC8\xC0 |0 # <CJK>
+<U6F04> \x8F\xC8\xC1 |0 # <CJK>
+<U6F08> \x8F\xC8\xC2 |0 # <CJK>
+<U6F0A> \x8F\xC8\xC3 |0 # <CJK>
+<U6F0C> \x8F\xC8\xC4 |0 # <CJK>
+<U6F0D> \x8F\xC8\xC5 |0 # <CJK>
+<U6F16> \x8F\xC8\xC6 |0 # <CJK>
+<U6F18> \x8F\xC8\xC7 |0 # <CJK>
+<U6F1A> \x8F\xC8\xC8 |0 # <CJK>
+<U6F1B> \x8F\xC8\xC9 |0 # <CJK>
+<U6F26> \x8F\xC8\xCA |0 # <CJK>
+<U6F29> \x8F\xC8\xCB |0 # <CJK>
+<U6F2A> \x8F\xC8\xCC |0 # <CJK>
+<U6F2F> \x8F\xC8\xCD |0 # <CJK>
+<U6F30> \x8F\xC8\xCE |0 # <CJK>
+<U6F33> \x8F\xC8\xCF |0 # <CJK>
+<U6F36> \x8F\xC8\xD0 |0 # <CJK>
+<U6F3B> \x8F\xC8\xD1 |0 # <CJK>
+<U6F3C> \x8F\xC8\xD2 |0 # <CJK>
+<U6F2D> \x8F\xC8\xD3 |0 # <CJK>
+<U6F4F> \x8F\xC8\xD4 |0 # <CJK>
+<U6F51> \x8F\xC8\xD5 |0 # <CJK>
+<U6F52> \x8F\xC8\xD6 |0 # <CJK>
+<U6F53> \x8F\xC8\xD7 |0 # <CJK>
+<U6F57> \x8F\xC8\xD8 |0 # <CJK>
+<U6F59> \x8F\xC8\xD9 |0 # <CJK>
+<U6F5A> \x8F\xC8\xDA |0 # <CJK>
+<U6F5D> \x8F\xC8\xDB |0 # <CJK>
+<U6F5E> \x8F\xC8\xDC |0 # <CJK>
+<U6F61> \x8F\xC8\xDD |0 # <CJK>
+<U6F62> \x8F\xC8\xDE |0 # <CJK>
+<U6F68> \x8F\xC8\xDF |0 # <CJK>
+<U6F6C> \x8F\xC8\xE0 |0 # <CJK>
+<U6F7D> \x8F\xC8\xE1 |0 # <CJK>
+<U6F7E> \x8F\xC8\xE2 |0 # <CJK>
+<U6F83> \x8F\xC8\xE3 |0 # <CJK>
+<U6F87> \x8F\xC8\xE4 |0 # <CJK>
+<U6F88> \x8F\xC8\xE5 |0 # <CJK>
+<U6F8B> \x8F\xC8\xE6 |0 # <CJK>
+<U6F8C> \x8F\xC8\xE7 |0 # <CJK>
+<U6F8D> \x8F\xC8\xE8 |0 # <CJK>
+<U6F90> \x8F\xC8\xE9 |0 # <CJK>
+<U6F92> \x8F\xC8\xEA |0 # <CJK>
+<U6F93> \x8F\xC8\xEB |0 # <CJK>
+<U6F94> \x8F\xC8\xEC |0 # <CJK>
+<U6F96> \x8F\xC8\xED |0 # <CJK>
+<U6F9A> \x8F\xC8\xEE |0 # <CJK>
+<U6F9F> \x8F\xC8\xEF |0 # <CJK>
+<U6FA0> \x8F\xC8\xF0 |0 # <CJK>
+<U6FA5> \x8F\xC8\xF1 |0 # <CJK>
+<U6FA6> \x8F\xC8\xF2 |0 # <CJK>
+<U6FA7> \x8F\xC8\xF3 |0 # <CJK>
+<U6FA8> \x8F\xC8\xF4 |0 # <CJK>
+<U6FAE> \x8F\xC8\xF5 |0 # <CJK>
+<U6FAF> \x8F\xC8\xF6 |0 # <CJK>
+<U6FB0> \x8F\xC8\xF7 |0 # <CJK>
+<U6FB5> \x8F\xC8\xF8 |0 # <CJK>
+<U6FB6> \x8F\xC8\xF9 |0 # <CJK>
+<U6FBC> \x8F\xC8\xFA |0 # <CJK>
+<U6FC5> \x8F\xC8\xFB |0 # <CJK>
+<U6FC7> \x8F\xC8\xFC |0 # <CJK>
+<U6FC8> \x8F\xC8\xFD |0 # <CJK>
+<U6FCA> \x8F\xC8\xFE |0 # <CJK>
+<U6FDA> \x8F\xC9\xA1 |0 # <CJK>
+<U6FDE> \x8F\xC9\xA2 |0 # <CJK>
+<U6FE8> \x8F\xC9\xA3 |0 # <CJK>
+<U6FE9> \x8F\xC9\xA4 |0 # <CJK>
+<U6FF0> \x8F\xC9\xA5 |0 # <CJK>
+<U6FF5> \x8F\xC9\xA6 |0 # <CJK>
+<U6FF9> \x8F\xC9\xA7 |0 # <CJK>
+<U6FFC> \x8F\xC9\xA8 |0 # <CJK>
+<U6FFD> \x8F\xC9\xA9 |0 # <CJK>
+<U7000> \x8F\xC9\xAA |0 # <CJK>
+<U7005> \x8F\xC9\xAB |0 # <CJK>
+<U7006> \x8F\xC9\xAC |0 # <CJK>
+<U7007> \x8F\xC9\xAD |0 # <CJK>
+<U700D> \x8F\xC9\xAE |0 # <CJK>
+<U7017> \x8F\xC9\xAF |0 # <CJK>
+<U7020> \x8F\xC9\xB0 |0 # <CJK>
+<U7023> \x8F\xC9\xB1 |0 # <CJK>
+<U702F> \x8F\xC9\xB2 |0 # <CJK>
+<U7034> \x8F\xC9\xB3 |0 # <CJK>
+<U7037> \x8F\xC9\xB4 |0 # <CJK>
+<U7039> \x8F\xC9\xB5 |0 # <CJK>
+<U703C> \x8F\xC9\xB6 |0 # <CJK>
+<U7043> \x8F\xC9\xB7 |0 # <CJK>
+<U7044> \x8F\xC9\xB8 |0 # <CJK>
+<U7048> \x8F\xC9\xB9 |0 # <CJK>
+<U7049> \x8F\xC9\xBA |0 # <CJK>
+<U704A> \x8F\xC9\xBB |0 # <CJK>
+<U704B> \x8F\xC9\xBC |0 # <CJK>
+<U7054> \x8F\xC9\xBD |0 # <CJK>
+<U7055> \x8F\xC9\xBE |0 # <CJK>
+<U705D> \x8F\xC9\xBF |0 # <CJK>
+<U705E> \x8F\xC9\xC0 |0 # <CJK>
+<U704E> \x8F\xC9\xC1 |0 # <CJK>
+<U7064> \x8F\xC9\xC2 |0 # <CJK>
+<U7065> \x8F\xC9\xC3 |0 # <CJK>
+<U706C> \x8F\xC9\xC4 |0 # <CJK>
+<U706E> \x8F\xC9\xC5 |0 # <CJK>
+<U7075> \x8F\xC9\xC6 |0 # <CJK>
+<U7076> \x8F\xC9\xC7 |0 # <CJK>
+<U707E> \x8F\xC9\xC8 |0 # <CJK>
+<U7081> \x8F\xC9\xC9 |0 # <CJK>
+<U7085> \x8F\xC9\xCA |0 # <CJK>
+<U7086> \x8F\xC9\xCB |0 # <CJK>
+<U7094> \x8F\xC9\xCC |0 # <CJK>
+<U7095> \x8F\xC9\xCD |0 # <CJK>
+<U7096> \x8F\xC9\xCE |0 # <CJK>
+<U7097> \x8F\xC9\xCF |0 # <CJK>
+<U7098> \x8F\xC9\xD0 |0 # <CJK>
+<U709B> \x8F\xC9\xD1 |0 # <CJK>
+<U70A4> \x8F\xC9\xD2 |0 # <CJK>
+<U70AB> \x8F\xC9\xD3 |0 # <CJK>
+<U70B0> \x8F\xC9\xD4 |0 # <CJK>
+<U70B1> \x8F\xC9\xD5 |0 # <CJK>
+<U70B4> \x8F\xC9\xD6 |0 # <CJK>
+<U70B7> \x8F\xC9\xD7 |0 # <CJK>
+<U70CA> \x8F\xC9\xD8 |0 # <CJK>
+<U70D1> \x8F\xC9\xD9 |0 # <CJK>
+<U70D3> \x8F\xC9\xDA |0 # <CJK>
+<U70D4> \x8F\xC9\xDB |0 # <CJK>
+<U70D5> \x8F\xC9\xDC |0 # <CJK>
+<U70D6> \x8F\xC9\xDD |0 # <CJK>
+<U70D8> \x8F\xC9\xDE |0 # <CJK>
+<U70DC> \x8F\xC9\xDF |0 # <CJK>
+<U70E4> \x8F\xC9\xE0 |0 # <CJK>
+<U70FA> \x8F\xC9\xE1 |0 # <CJK>
+<U7103> \x8F\xC9\xE2 |0 # <CJK>
+<U7104> \x8F\xC9\xE3 |0 # <CJK>
+<U7105> \x8F\xC9\xE4 |0 # <CJK>
+<U7106> \x8F\xC9\xE5 |0 # <CJK>
+<U7107> \x8F\xC9\xE6 |0 # <CJK>
+<U710B> \x8F\xC9\xE7 |0 # <CJK>
+<U710C> \x8F\xC9\xE8 |0 # <CJK>
+<U710F> \x8F\xC9\xE9 |0 # <CJK>
+<U711E> \x8F\xC9\xEA |0 # <CJK>
+<U7120> \x8F\xC9\xEB |0 # <CJK>
+<U712B> \x8F\xC9\xEC |0 # <CJK>
+<U712D> \x8F\xC9\xED |0 # <CJK>
+<U712F> \x8F\xC9\xEE |0 # <CJK>
+<U7130> \x8F\xC9\xEF |0 # <CJK>
+<U7131> \x8F\xC9\xF0 |0 # <CJK>
+<U7138> \x8F\xC9\xF1 |0 # <CJK>
+<U7141> \x8F\xC9\xF2 |0 # <CJK>
+<U7145> \x8F\xC9\xF3 |0 # <CJK>
+<U7146> \x8F\xC9\xF4 |0 # <CJK>
+<U7147> \x8F\xC9\xF5 |0 # <CJK>
+<U714A> \x8F\xC9\xF6 |0 # <CJK>
+<U714B> \x8F\xC9\xF7 |0 # <CJK>
+<U7150> \x8F\xC9\xF8 |0 # <CJK>
+<U7152> \x8F\xC9\xF9 |0 # <CJK>
+<U7157> \x8F\xC9\xFA |0 # <CJK>
+<U715A> \x8F\xC9\xFB |0 # <CJK>
+<U715C> \x8F\xC9\xFC |0 # <CJK>
+<U715E> \x8F\xC9\xFD |0 # <CJK>
+<U7160> \x8F\xC9\xFE |0 # <CJK>
+<U7168> \x8F\xCA\xA1 |0 # <CJK>
+<U7179> \x8F\xCA\xA2 |0 # <CJK>
+<U7180> \x8F\xCA\xA3 |0 # <CJK>
+<U7185> \x8F\xCA\xA4 |0 # <CJK>
+<U7187> \x8F\xCA\xA5 |0 # <CJK>
+<U718C> \x8F\xCA\xA6 |0 # <CJK>
+<U7192> \x8F\xCA\xA7 |0 # <CJK>
+<U719A> \x8F\xCA\xA8 |0 # <CJK>
+<U719B> \x8F\xCA\xA9 |0 # <CJK>
+<U71A0> \x8F\xCA\xAA |0 # <CJK>
+<U71A2> \x8F\xCA\xAB |0 # <CJK>
+<U71AF> \x8F\xCA\xAC |0 # <CJK>
+<U71B0> \x8F\xCA\xAD |0 # <CJK>
+<U71B2> \x8F\xCA\xAE |0 # <CJK>
+<U71B3> \x8F\xCA\xAF |0 # <CJK>
+<U71BA> \x8F\xCA\xB0 |0 # <CJK>
+<U71BF> \x8F\xCA\xB1 |0 # <CJK>
+<U71C0> \x8F\xCA\xB2 |0 # <CJK>
+<U71C1> \x8F\xCA\xB3 |0 # <CJK>
+<U71C4> \x8F\xCA\xB4 |0 # <CJK>
+<U71CB> \x8F\xCA\xB5 |0 # <CJK>
+<U71CC> \x8F\xCA\xB6 |0 # <CJK>
+<U71D3> \x8F\xCA\xB7 |0 # <CJK>
+<U71D6> \x8F\xCA\xB8 |0 # <CJK>
+<U71D9> \x8F\xCA\xB9 |0 # <CJK>
+<U71DA> \x8F\xCA\xBA |0 # <CJK>
+<U71DC> \x8F\xCA\xBB |0 # <CJK>
+<U71F8> \x8F\xCA\xBC |0 # <CJK>
+<U71FE> \x8F\xCA\xBD |0 # <CJK>
+<U7200> \x8F\xCA\xBE |0 # <CJK>
+<U7207> \x8F\xCA\xBF |0 # <CJK>
+<U7208> \x8F\xCA\xC0 |0 # <CJK>
+<U7209> \x8F\xCA\xC1 |0 # <CJK>
+<U7213> \x8F\xCA\xC2 |0 # <CJK>
+<U7217> \x8F\xCA\xC3 |0 # <CJK>
+<U721A> \x8F\xCA\xC4 |0 # <CJK>
+<U721D> \x8F\xCA\xC5 |0 # <CJK>
+<U721F> \x8F\xCA\xC6 |0 # <CJK>
+<U7224> \x8F\xCA\xC7 |0 # <CJK>
+<U722B> \x8F\xCA\xC8 |0 # <CJK>
+<U722F> \x8F\xCA\xC9 |0 # <CJK>
+<U7234> \x8F\xCA\xCA |0 # <CJK>
+<U7238> \x8F\xCA\xCB |0 # <CJK>
+<U7239> \x8F\xCA\xCC |0 # <CJK>
+<U7241> \x8F\xCA\xCD |0 # <CJK>
+<U7242> \x8F\xCA\xCE |0 # <CJK>
+<U7243> \x8F\xCA\xCF |0 # <CJK>
+<U7245> \x8F\xCA\xD0 |0 # <CJK>
+<U724E> \x8F\xCA\xD1 |0 # <CJK>
+<U724F> \x8F\xCA\xD2 |0 # <CJK>
+<U7250> \x8F\xCA\xD3 |0 # <CJK>
+<U7253> \x8F\xCA\xD4 |0 # <CJK>
+<U7255> \x8F\xCA\xD5 |0 # <CJK>
+<U7256> \x8F\xCA\xD6 |0 # <CJK>
+<U725A> \x8F\xCA\xD7 |0 # <CJK>
+<U725C> \x8F\xCA\xD8 |0 # <CJK>
+<U725E> \x8F\xCA\xD9 |0 # <CJK>
+<U7260> \x8F\xCA\xDA |0 # <CJK>
+<U7263> \x8F\xCA\xDB |0 # <CJK>
+<U7268> \x8F\xCA\xDC |0 # <CJK>
+<U726B> \x8F\xCA\xDD |0 # <CJK>
+<U726E> \x8F\xCA\xDE |0 # <CJK>
+<U726F> \x8F\xCA\xDF |0 # <CJK>
+<U7271> \x8F\xCA\xE0 |0 # <CJK>
+<U7277> \x8F\xCA\xE1 |0 # <CJK>
+<U7278> \x8F\xCA\xE2 |0 # <CJK>
+<U727B> \x8F\xCA\xE3 |0 # <CJK>
+<U727C> \x8F\xCA\xE4 |0 # <CJK>
+<U727F> \x8F\xCA\xE5 |0 # <CJK>
+<U7284> \x8F\xCA\xE6 |0 # <CJK>
+<U7289> \x8F\xCA\xE7 |0 # <CJK>
+<U728D> \x8F\xCA\xE8 |0 # <CJK>
+<U728E> \x8F\xCA\xE9 |0 # <CJK>
+<U7293> \x8F\xCA\xEA |0 # <CJK>
+<U729B> \x8F\xCA\xEB |0 # <CJK>
+<U72A8> \x8F\xCA\xEC |0 # <CJK>
+<U72AD> \x8F\xCA\xED |0 # <CJK>
+<U72AE> \x8F\xCA\xEE |0 # <CJK>
+<U72B1> \x8F\xCA\xEF |0 # <CJK>
+<U72B4> \x8F\xCA\xF0 |0 # <CJK>
+<U72BE> \x8F\xCA\xF1 |0 # <CJK>
+<U72C1> \x8F\xCA\xF2 |0 # <CJK>
+<U72C7> \x8F\xCA\xF3 |0 # <CJK>
+<U72C9> \x8F\xCA\xF4 |0 # <CJK>
+<U72CC> \x8F\xCA\xF5 |0 # <CJK>
+<U72D5> \x8F\xCA\xF6 |0 # <CJK>
+<U72D6> \x8F\xCA\xF7 |0 # <CJK>
+<U72D8> \x8F\xCA\xF8 |0 # <CJK>
+<U72DF> \x8F\xCA\xF9 |0 # <CJK>
+<U72E5> \x8F\xCA\xFA |0 # <CJK>
+<U72F3> \x8F\xCA\xFB |0 # <CJK>
+<U72F4> \x8F\xCA\xFC |0 # <CJK>
+<U72FA> \x8F\xCA\xFD |0 # <CJK>
+<U72FB> \x8F\xCA\xFE |0 # <CJK>
+<U72FE> \x8F\xCB\xA1 |0 # <CJK>
+<U7302> \x8F\xCB\xA2 |0 # <CJK>
+<U7304> \x8F\xCB\xA3 |0 # <CJK>
+<U7305> \x8F\xCB\xA4 |0 # <CJK>
+<U7307> \x8F\xCB\xA5 |0 # <CJK>
+<U730B> \x8F\xCB\xA6 |0 # <CJK>
+<U730D> \x8F\xCB\xA7 |0 # <CJK>
+<U7312> \x8F\xCB\xA8 |0 # <CJK>
+<U7313> \x8F\xCB\xA9 |0 # <CJK>
+<U7318> \x8F\xCB\xAA |0 # <CJK>
+<U7319> \x8F\xCB\xAB |0 # <CJK>
+<U731E> \x8F\xCB\xAC |0 # <CJK>
+<U7322> \x8F\xCB\xAD |0 # <CJK>
+<U7324> \x8F\xCB\xAE |0 # <CJK>
+<U7327> \x8F\xCB\xAF |0 # <CJK>
+<U7328> \x8F\xCB\xB0 |0 # <CJK>
+<U732C> \x8F\xCB\xB1 |0 # <CJK>
+<U7331> \x8F\xCB\xB2 |0 # <CJK>
+<U7332> \x8F\xCB\xB3 |0 # <CJK>
+<U7335> \x8F\xCB\xB4 |0 # <CJK>
+<U733A> \x8F\xCB\xB5 |0 # <CJK>
+<U733B> \x8F\xCB\xB6 |0 # <CJK>
+<U733D> \x8F\xCB\xB7 |0 # <CJK>
+<U7343> \x8F\xCB\xB8 |0 # <CJK>
+<U734D> \x8F\xCB\xB9 |0 # <CJK>
+<U7350> \x8F\xCB\xBA |0 # <CJK>
+<U7352> \x8F\xCB\xBB |0 # <CJK>
+<U7356> \x8F\xCB\xBC |0 # <CJK>
+<U7358> \x8F\xCB\xBD |0 # <CJK>
+<U735D> \x8F\xCB\xBE |0 # <CJK>
+<U735E> \x8F\xCB\xBF |0 # <CJK>
+<U735F> \x8F\xCB\xC0 |0 # <CJK>
+<U7360> \x8F\xCB\xC1 |0 # <CJK>
+<U7366> \x8F\xCB\xC2 |0 # <CJK>
+<U7367> \x8F\xCB\xC3 |0 # <CJK>
+<U7369> \x8F\xCB\xC4 |0 # <CJK>
+<U736B> \x8F\xCB\xC5 |0 # <CJK>
+<U736C> \x8F\xCB\xC6 |0 # <CJK>
+<U736E> \x8F\xCB\xC7 |0 # <CJK>
+<U736F> \x8F\xCB\xC8 |0 # <CJK>
+<U7371> \x8F\xCB\xC9 |0 # <CJK>
+<U7377> \x8F\xCB\xCA |0 # <CJK>
+<U7379> \x8F\xCB\xCB |0 # <CJK>
+<U737C> \x8F\xCB\xCC |0 # <CJK>
+<U7380> \x8F\xCB\xCD |0 # <CJK>
+<U7381> \x8F\xCB\xCE |0 # <CJK>
+<U7383> \x8F\xCB\xCF |0 # <CJK>
+<U7385> \x8F\xCB\xD0 |0 # <CJK>
+<U7386> \x8F\xCB\xD1 |0 # <CJK>
+<U738E> \x8F\xCB\xD2 |0 # <CJK>
+<U7390> \x8F\xCB\xD3 |0 # <CJK>
+<U7393> \x8F\xCB\xD4 |0 # <CJK>
+<U7395> \x8F\xCB\xD5 |0 # <CJK>
+<U7397> \x8F\xCB\xD6 |0 # <CJK>
+<U7398> \x8F\xCB\xD7 |0 # <CJK>
+<U739C> \x8F\xCB\xD8 |0 # <CJK>
+<U739E> \x8F\xCB\xD9 |0 # <CJK>
+<U739F> \x8F\xCB\xDA |0 # <CJK>
+<U73A0> \x8F\xCB\xDB |0 # <CJK>
+<U73A2> \x8F\xCB\xDC |0 # <CJK>
+<U73A5> \x8F\xCB\xDD |0 # <CJK>
+<U73A6> \x8F\xCB\xDE |0 # <CJK>
+<U73AA> \x8F\xCB\xDF |0 # <CJK>
+<U73AB> \x8F\xCB\xE0 |0 # <CJK>
+<U73AD> \x8F\xCB\xE1 |0 # <CJK>
+<U73B5> \x8F\xCB\xE2 |0 # <CJK>
+<U73B7> \x8F\xCB\xE3 |0 # <CJK>
+<U73B9> \x8F\xCB\xE4 |0 # <CJK>
+<U73BC> \x8F\xCB\xE5 |0 # <CJK>
+<U73BD> \x8F\xCB\xE6 |0 # <CJK>
+<U73BF> \x8F\xCB\xE7 |0 # <CJK>
+<U73C5> \x8F\xCB\xE8 |0 # <CJK>
+<U73C6> \x8F\xCB\xE9 |0 # <CJK>
+<U73C9> \x8F\xCB\xEA |0 # <CJK>
+<U73CB> \x8F\xCB\xEB |0 # <CJK>
+<U73CC> \x8F\xCB\xEC |0 # <CJK>
+<U73CF> \x8F\xCB\xED |0 # <CJK>
+<U73D2> \x8F\xCB\xEE |0 # <CJK>
+<U73D3> \x8F\xCB\xEF |0 # <CJK>
+<U73D6> \x8F\xCB\xF0 |0 # <CJK>
+<U73D9> \x8F\xCB\xF1 |0 # <CJK>
+<U73DD> \x8F\xCB\xF2 |0 # <CJK>
+<U73E1> \x8F\xCB\xF3 |0 # <CJK>
+<U73E3> \x8F\xCB\xF4 |0 # <CJK>
+<U73E6> \x8F\xCB\xF5 |0 # <CJK>
+<U73E7> \x8F\xCB\xF6 |0 # <CJK>
+<U73E9> \x8F\xCB\xF7 |0 # <CJK>
+<U73F4> \x8F\xCB\xF8 |0 # <CJK>
+<U73F5> \x8F\xCB\xF9 |0 # <CJK>
+<U73F7> \x8F\xCB\xFA |0 # <CJK>
+<U73F9> \x8F\xCB\xFB |0 # <CJK>
+<U73FA> \x8F\xCB\xFC |0 # <CJK>
+<U73FB> \x8F\xCB\xFD |0 # <CJK>
+<U73FD> \x8F\xCB\xFE |0 # <CJK>
+<U73FF> \x8F\xCC\xA1 |0 # <CJK>
+<U7400> \x8F\xCC\xA2 |0 # <CJK>
+<U7401> \x8F\xCC\xA3 |0 # <CJK>
+<U7404> \x8F\xCC\xA4 |0 # <CJK>
+<U7407> \x8F\xCC\xA5 |0 # <CJK>
+<U740A> \x8F\xCC\xA6 |0 # <CJK>
+<U7411> \x8F\xCC\xA7 |0 # <CJK>
+<U741A> \x8F\xCC\xA8 |0 # <CJK>
+<U741B> \x8F\xCC\xA9 |0 # <CJK>
+<U7424> \x8F\xCC\xAA |0 # <CJK>
+<U7426> \x8F\xCC\xAB |0 # <CJK>
+<U7428> \x8F\xCC\xAC |0 # <CJK>
+<U7429> \x8F\xCC\xAD |0 # <CJK>
+<U742A> \x8F\xCC\xAE |0 # <CJK>
+<U742B> \x8F\xCC\xAF |0 # <CJK>
+<U742C> \x8F\xCC\xB0 |0 # <CJK>
+<U742D> \x8F\xCC\xB1 |0 # <CJK>
+<U742E> \x8F\xCC\xB2 |0 # <CJK>
+<U742F> \x8F\xCC\xB3 |0 # <CJK>
+<U7430> \x8F\xCC\xB4 |0 # <CJK>
+<U7431> \x8F\xCC\xB5 |0 # <CJK>
+<U7439> \x8F\xCC\xB6 |0 # <CJK>
+<U7440> \x8F\xCC\xB7 |0 # <CJK>
+<U7443> \x8F\xCC\xB8 |0 # <CJK>
+<U7444> \x8F\xCC\xB9 |0 # <CJK>
+<U7446> \x8F\xCC\xBA |0 # <CJK>
+<U7447> \x8F\xCC\xBB |0 # <CJK>
+<U744B> \x8F\xCC\xBC |0 # <CJK>
+<U744D> \x8F\xCC\xBD |0 # <CJK>
+<U7451> \x8F\xCC\xBE |0 # <CJK>
+<U7452> \x8F\xCC\xBF |0 # <CJK>
+<U7457> \x8F\xCC\xC0 |0 # <CJK>
+<U745D> \x8F\xCC\xC1 |0 # <CJK>
+<U7462> \x8F\xCC\xC2 |0 # <CJK>
+<U7466> \x8F\xCC\xC3 |0 # <CJK>
+<U7467> \x8F\xCC\xC4 |0 # <CJK>
+<U7468> \x8F\xCC\xC5 |0 # <CJK>
+<U746B> \x8F\xCC\xC6 |0 # <CJK>
+<U746D> \x8F\xCC\xC7 |0 # <CJK>
+<U746E> \x8F\xCC\xC8 |0 # <CJK>
+<U7471> \x8F\xCC\xC9 |0 # <CJK>
+<U7472> \x8F\xCC\xCA |0 # <CJK>
+<U7480> \x8F\xCC\xCB |0 # <CJK>
+<U7481> \x8F\xCC\xCC |0 # <CJK>
+<U7485> \x8F\xCC\xCD |0 # <CJK>
+<U7486> \x8F\xCC\xCE |0 # <CJK>
+<U7487> \x8F\xCC\xCF |0 # <CJK>
+<U7489> \x8F\xCC\xD0 |0 # <CJK>
+<U748F> \x8F\xCC\xD1 |0 # <CJK>
+<U7490> \x8F\xCC\xD2 |0 # <CJK>
+<U7491> \x8F\xCC\xD3 |0 # <CJK>
+<U7492> \x8F\xCC\xD4 |0 # <CJK>
+<U7498> \x8F\xCC\xD5 |0 # <CJK>
+<U7499> \x8F\xCC\xD6 |0 # <CJK>
+<U749A> \x8F\xCC\xD7 |0 # <CJK>
+<U749C> \x8F\xCC\xD8 |0 # <CJK>
+<U749F> \x8F\xCC\xD9 |0 # <CJK>
+<U74A0> \x8F\xCC\xDA |0 # <CJK>
+<U74A1> \x8F\xCC\xDB |0 # <CJK>
+<U74A3> \x8F\xCC\xDC |0 # <CJK>
+<U74A6> \x8F\xCC\xDD |0 # <CJK>
+<U74A8> \x8F\xCC\xDE |0 # <CJK>
+<U74A9> \x8F\xCC\xDF |0 # <CJK>
+<U74AA> \x8F\xCC\xE0 |0 # <CJK>
+<U74AB> \x8F\xCC\xE1 |0 # <CJK>
+<U74AE> \x8F\xCC\xE2 |0 # <CJK>
+<U74AF> \x8F\xCC\xE3 |0 # <CJK>
+<U74B1> \x8F\xCC\xE4 |0 # <CJK>
+<U74B2> \x8F\xCC\xE5 |0 # <CJK>
+<U74B5> \x8F\xCC\xE6 |0 # <CJK>
+<U74B9> \x8F\xCC\xE7 |0 # <CJK>
+<U74BB> \x8F\xCC\xE8 |0 # <CJK>
+<U74BF> \x8F\xCC\xE9 |0 # <CJK>
+<U74C8> \x8F\xCC\xEA |0 # <CJK>
+<U74C9> \x8F\xCC\xEB |0 # <CJK>
+<U74CC> \x8F\xCC\xEC |0 # <CJK>
+<U74D0> \x8F\xCC\xED |0 # <CJK>
+<U74D3> \x8F\xCC\xEE |0 # <CJK>
+<U74D8> \x8F\xCC\xEF |0 # <CJK>
+<U74DA> \x8F\xCC\xF0 |0 # <CJK>
+<U74DB> \x8F\xCC\xF1 |0 # <CJK>
+<U74DE> \x8F\xCC\xF2 |0 # <CJK>
+<U74DF> \x8F\xCC\xF3 |0 # <CJK>
+<U74E4> \x8F\xCC\xF4 |0 # <CJK>
+<U74E8> \x8F\xCC\xF5 |0 # <CJK>
+<U74EA> \x8F\xCC\xF6 |0 # <CJK>
+<U74EB> \x8F\xCC\xF7 |0 # <CJK>
+<U74EF> \x8F\xCC\xF8 |0 # <CJK>
+<U74F4> \x8F\xCC\xF9 |0 # <CJK>
+<U74FA> \x8F\xCC\xFA |0 # <CJK>
+<U74FB> \x8F\xCC\xFB |0 # <CJK>
+<U74FC> \x8F\xCC\xFC |0 # <CJK>
+<U74FF> \x8F\xCC\xFD |0 # <CJK>
+<U7506> \x8F\xCC\xFE |0 # <CJK>
+<U7512> \x8F\xCD\xA1 |0 # <CJK>
+<U7516> \x8F\xCD\xA2 |0 # <CJK>
+<U7517> \x8F\xCD\xA3 |0 # <CJK>
+<U7520> \x8F\xCD\xA4 |0 # <CJK>
+<U7521> \x8F\xCD\xA5 |0 # <CJK>
+<U7524> \x8F\xCD\xA6 |0 # <CJK>
+<U7527> \x8F\xCD\xA7 |0 # <CJK>
+<U7529> \x8F\xCD\xA8 |0 # <CJK>
+<U752A> \x8F\xCD\xA9 |0 # <CJK>
+<U752F> \x8F\xCD\xAA |0 # <CJK>
+<U7536> \x8F\xCD\xAB |0 # <CJK>
+<U7539> \x8F\xCD\xAC |0 # <CJK>
+<U753D> \x8F\xCD\xAD |0 # <CJK>
+<U753E> \x8F\xCD\xAE |0 # <CJK>
+<U753F> \x8F\xCD\xAF |0 # <CJK>
+<U7540> \x8F\xCD\xB0 |0 # <CJK>
+<U7543> \x8F\xCD\xB1 |0 # <CJK>
+<U7547> \x8F\xCD\xB2 |0 # <CJK>
+<U7548> \x8F\xCD\xB3 |0 # <CJK>
+<U754E> \x8F\xCD\xB4 |0 # <CJK>
+<U7550> \x8F\xCD\xB5 |0 # <CJK>
+<U7552> \x8F\xCD\xB6 |0 # <CJK>
+<U7557> \x8F\xCD\xB7 |0 # <CJK>
+<U755E> \x8F\xCD\xB8 |0 # <CJK>
+<U755F> \x8F\xCD\xB9 |0 # <CJK>
+<U7561> \x8F\xCD\xBA |0 # <CJK>
+<U756F> \x8F\xCD\xBB |0 # <CJK>
+<U7571> \x8F\xCD\xBC |0 # <CJK>
+<U7579> \x8F\xCD\xBD |0 # <CJK>
+<U757A> \x8F\xCD\xBE |0 # <CJK>
+<U757B> \x8F\xCD\xBF |0 # <CJK>
+<U757C> \x8F\xCD\xC0 |0 # <CJK>
+<U757D> \x8F\xCD\xC1 |0 # <CJK>
+<U757E> \x8F\xCD\xC2 |0 # <CJK>
+<U7581> \x8F\xCD\xC3 |0 # <CJK>
+<U7585> \x8F\xCD\xC4 |0 # <CJK>
+<U7590> \x8F\xCD\xC5 |0 # <CJK>
+<U7592> \x8F\xCD\xC6 |0 # <CJK>
+<U7593> \x8F\xCD\xC7 |0 # <CJK>
+<U7595> \x8F\xCD\xC8 |0 # <CJK>
+<U7599> \x8F\xCD\xC9 |0 # <CJK>
+<U759C> \x8F\xCD\xCA |0 # <CJK>
+<U75A2> \x8F\xCD\xCB |0 # <CJK>
+<U75A4> \x8F\xCD\xCC |0 # <CJK>
+<U75B4> \x8F\xCD\xCD |0 # <CJK>
+<U75BA> \x8F\xCD\xCE |0 # <CJK>
+<U75BF> \x8F\xCD\xCF |0 # <CJK>
+<U75C0> \x8F\xCD\xD0 |0 # <CJK>
+<U75C1> \x8F\xCD\xD1 |0 # <CJK>
+<U75C4> \x8F\xCD\xD2 |0 # <CJK>
+<U75C6> \x8F\xCD\xD3 |0 # <CJK>
+<U75CC> \x8F\xCD\xD4 |0 # <CJK>
+<U75CE> \x8F\xCD\xD5 |0 # <CJK>
+<U75CF> \x8F\xCD\xD6 |0 # <CJK>
+<U75D7> \x8F\xCD\xD7 |0 # <CJK>
+<U75DC> \x8F\xCD\xD8 |0 # <CJK>
+<U75DF> \x8F\xCD\xD9 |0 # <CJK>
+<U75E0> \x8F\xCD\xDA |0 # <CJK>
+<U75E1> \x8F\xCD\xDB |0 # <CJK>
+<U75E4> \x8F\xCD\xDC |0 # <CJK>
+<U75E7> \x8F\xCD\xDD |0 # <CJK>
+<U75EC> \x8F\xCD\xDE |0 # <CJK>
+<U75EE> \x8F\xCD\xDF |0 # <CJK>
+<U75EF> \x8F\xCD\xE0 |0 # <CJK>
+<U75F1> \x8F\xCD\xE1 |0 # <CJK>
+<U75F9> \x8F\xCD\xE2 |0 # <CJK>
+<U7600> \x8F\xCD\xE3 |0 # <CJK>
+<U7602> \x8F\xCD\xE4 |0 # <CJK>
+<U7603> \x8F\xCD\xE5 |0 # <CJK>
+<U7604> \x8F\xCD\xE6 |0 # <CJK>
+<U7607> \x8F\xCD\xE7 |0 # <CJK>
+<U7608> \x8F\xCD\xE8 |0 # <CJK>
+<U760A> \x8F\xCD\xE9 |0 # <CJK>
+<U760C> \x8F\xCD\xEA |0 # <CJK>
+<U760F> \x8F\xCD\xEB |0 # <CJK>
+<U7612> \x8F\xCD\xEC |0 # <CJK>
+<U7613> \x8F\xCD\xED |0 # <CJK>
+<U7615> \x8F\xCD\xEE |0 # <CJK>
+<U7616> \x8F\xCD\xEF |0 # <CJK>
+<U7619> \x8F\xCD\xF0 |0 # <CJK>
+<U761B> \x8F\xCD\xF1 |0 # <CJK>
+<U761C> \x8F\xCD\xF2 |0 # <CJK>
+<U761D> \x8F\xCD\xF3 |0 # <CJK>
+<U761E> \x8F\xCD\xF4 |0 # <CJK>
+<U7623> \x8F\xCD\xF5 |0 # <CJK>
+<U7625> \x8F\xCD\xF6 |0 # <CJK>
+<U7626> \x8F\xCD\xF7 |0 # <CJK>
+<U7629> \x8F\xCD\xF8 |0 # <CJK>
+<U762D> \x8F\xCD\xF9 |0 # <CJK>
+<U7632> \x8F\xCD\xFA |0 # <CJK>
+<U7633> \x8F\xCD\xFB |0 # <CJK>
+<U7635> \x8F\xCD\xFC |0 # <CJK>
+<U7638> \x8F\xCD\xFD |0 # <CJK>
+<U7639> \x8F\xCD\xFE |0 # <CJK>
+<U763A> \x8F\xCE\xA1 |0 # <CJK>
+<U763C> \x8F\xCE\xA2 |0 # <CJK>
+<U764A> \x8F\xCE\xA3 |0 # <CJK>
+<U7640> \x8F\xCE\xA4 |0 # <CJK>
+<U7641> \x8F\xCE\xA5 |0 # <CJK>
+<U7643> \x8F\xCE\xA6 |0 # <CJK>
+<U7644> \x8F\xCE\xA7 |0 # <CJK>
+<U7645> \x8F\xCE\xA8 |0 # <CJK>
+<U7649> \x8F\xCE\xA9 |0 # <CJK>
+<U764B> \x8F\xCE\xAA |0 # <CJK>
+<U7655> \x8F\xCE\xAB |0 # <CJK>
+<U7659> \x8F\xCE\xAC |0 # <CJK>
+<U765F> \x8F\xCE\xAD |0 # <CJK>
+<U7664> \x8F\xCE\xAE |0 # <CJK>
+<U7665> \x8F\xCE\xAF |0 # <CJK>
+<U766D> \x8F\xCE\xB0 |0 # <CJK>
+<U766E> \x8F\xCE\xB1 |0 # <CJK>
+<U766F> \x8F\xCE\xB2 |0 # <CJK>
+<U7671> \x8F\xCE\xB3 |0 # <CJK>
+<U7674> \x8F\xCE\xB4 |0 # <CJK>
+<U7681> \x8F\xCE\xB5 |0 # <CJK>
+<U7685> \x8F\xCE\xB6 |0 # <CJK>
+<U768C> \x8F\xCE\xB7 |0 # <CJK>
+<U768D> \x8F\xCE\xB8 |0 # <CJK>
+<U7695> \x8F\xCE\xB9 |0 # <CJK>
+<U769B> \x8F\xCE\xBA |0 # <CJK>
+<U769C> \x8F\xCE\xBB |0 # <CJK>
+<U769D> \x8F\xCE\xBC |0 # <CJK>
+<U769F> \x8F\xCE\xBD |0 # <CJK>
+<U76A0> \x8F\xCE\xBE |0 # <CJK>
+<U76A2> \x8F\xCE\xBF |0 # <CJK>
+<U76A3> \x8F\xCE\xC0 |0 # <CJK>
+<U76A4> \x8F\xCE\xC1 |0 # <CJK>
+<U76A5> \x8F\xCE\xC2 |0 # <CJK>
+<U76A6> \x8F\xCE\xC3 |0 # <CJK>
+<U76A7> \x8F\xCE\xC4 |0 # <CJK>
+<U76A8> \x8F\xCE\xC5 |0 # <CJK>
+<U76AA> \x8F\xCE\xC6 |0 # <CJK>
+<U76AD> \x8F\xCE\xC7 |0 # <CJK>
+<U76BD> \x8F\xCE\xC8 |0 # <CJK>
+<U76C1> \x8F\xCE\xC9 |0 # <CJK>
+<U76C5> \x8F\xCE\xCA |0 # <CJK>
+<U76C9> \x8F\xCE\xCB |0 # <CJK>
+<U76CB> \x8F\xCE\xCC |0 # <CJK>
+<U76CC> \x8F\xCE\xCD |0 # <CJK>
+<U76CE> \x8F\xCE\xCE |0 # <CJK>
+<U76D4> \x8F\xCE\xCF |0 # <CJK>
+<U76D9> \x8F\xCE\xD0 |0 # <CJK>
+<U76E0> \x8F\xCE\xD1 |0 # <CJK>
+<U76E6> \x8F\xCE\xD2 |0 # <CJK>
+<U76E8> \x8F\xCE\xD3 |0 # <CJK>
+<U76EC> \x8F\xCE\xD4 |0 # <CJK>
+<U76F0> \x8F\xCE\xD5 |0 # <CJK>
+<U76F1> \x8F\xCE\xD6 |0 # <CJK>
+<U76F6> \x8F\xCE\xD7 |0 # <CJK>
+<U76F9> \x8F\xCE\xD8 |0 # <CJK>
+<U76FC> \x8F\xCE\xD9 |0 # <CJK>
+<U7700> \x8F\xCE\xDA |0 # <CJK>
+<U7706> \x8F\xCE\xDB |0 # <CJK>
+<U770A> \x8F\xCE\xDC |0 # <CJK>
+<U770E> \x8F\xCE\xDD |0 # <CJK>
+<U7712> \x8F\xCE\xDE |0 # <CJK>
+<U7714> \x8F\xCE\xDF |0 # <CJK>
+<U7715> \x8F\xCE\xE0 |0 # <CJK>
+<U7717> \x8F\xCE\xE1 |0 # <CJK>
+<U7719> \x8F\xCE\xE2 |0 # <CJK>
+<U771A> \x8F\xCE\xE3 |0 # <CJK>
+<U771C> \x8F\xCE\xE4 |0 # <CJK>
+<U7722> \x8F\xCE\xE5 |0 # <CJK>
+<U7728> \x8F\xCE\xE6 |0 # <CJK>
+<U772D> \x8F\xCE\xE7 |0 # <CJK>
+<U772E> \x8F\xCE\xE8 |0 # <CJK>
+<U772F> \x8F\xCE\xE9 |0 # <CJK>
+<U7734> \x8F\xCE\xEA |0 # <CJK>
+<U7735> \x8F\xCE\xEB |0 # <CJK>
+<U7736> \x8F\xCE\xEC |0 # <CJK>
+<U7739> \x8F\xCE\xED |0 # <CJK>
+<U773D> \x8F\xCE\xEE |0 # <CJK>
+<U773E> \x8F\xCE\xEF |0 # <CJK>
+<U7742> \x8F\xCE\xF0 |0 # <CJK>
+<U7745> \x8F\xCE\xF1 |0 # <CJK>
+<U7746> \x8F\xCE\xF2 |0 # <CJK>
+<U774A> \x8F\xCE\xF3 |0 # <CJK>
+<U774D> \x8F\xCE\xF4 |0 # <CJK>
+<U774E> \x8F\xCE\xF5 |0 # <CJK>
+<U774F> \x8F\xCE\xF6 |0 # <CJK>
+<U7752> \x8F\xCE\xF7 |0 # <CJK>
+<U7756> \x8F\xCE\xF8 |0 # <CJK>
+<U7757> \x8F\xCE\xF9 |0 # <CJK>
+<U775C> \x8F\xCE\xFA |0 # <CJK>
+<U775E> \x8F\xCE\xFB |0 # <CJK>
+<U775F> \x8F\xCE\xFC |0 # <CJK>
+<U7760> \x8F\xCE\xFD |0 # <CJK>
+<U7762> \x8F\xCE\xFE |0 # <CJK>
+<U7764> \x8F\xCF\xA1 |0 # <CJK>
+<U7767> \x8F\xCF\xA2 |0 # <CJK>
+<U776A> \x8F\xCF\xA3 |0 # <CJK>
+<U776C> \x8F\xCF\xA4 |0 # <CJK>
+<U7770> \x8F\xCF\xA5 |0 # <CJK>
+<U7772> \x8F\xCF\xA6 |0 # <CJK>
+<U7773> \x8F\xCF\xA7 |0 # <CJK>
+<U7774> \x8F\xCF\xA8 |0 # <CJK>
+<U777A> \x8F\xCF\xA9 |0 # <CJK>
+<U777D> \x8F\xCF\xAA |0 # <CJK>
+<U7780> \x8F\xCF\xAB |0 # <CJK>
+<U7784> \x8F\xCF\xAC |0 # <CJK>
+<U778C> \x8F\xCF\xAD |0 # <CJK>
+<U778D> \x8F\xCF\xAE |0 # <CJK>
+<U7794> \x8F\xCF\xAF |0 # <CJK>
+<U7795> \x8F\xCF\xB0 |0 # <CJK>
+<U7796> \x8F\xCF\xB1 |0 # <CJK>
+<U779A> \x8F\xCF\xB2 |0 # <CJK>
+<U779F> \x8F\xCF\xB3 |0 # <CJK>
+<U77A2> \x8F\xCF\xB4 |0 # <CJK>
+<U77A7> \x8F\xCF\xB5 |0 # <CJK>
+<U77AA> \x8F\xCF\xB6 |0 # <CJK>
+<U77AE> \x8F\xCF\xB7 |0 # <CJK>
+<U77AF> \x8F\xCF\xB8 |0 # <CJK>
+<U77B1> \x8F\xCF\xB9 |0 # <CJK>
+<U77B5> \x8F\xCF\xBA |0 # <CJK>
+<U77BE> \x8F\xCF\xBB |0 # <CJK>
+<U77C3> \x8F\xCF\xBC |0 # <CJK>
+<U77C9> \x8F\xCF\xBD |0 # <CJK>
+<U77D1> \x8F\xCF\xBE |0 # <CJK>
+<U77D2> \x8F\xCF\xBF |0 # <CJK>
+<U77D5> \x8F\xCF\xC0 |0 # <CJK>
+<U77D9> \x8F\xCF\xC1 |0 # <CJK>
+<U77DE> \x8F\xCF\xC2 |0 # <CJK>
+<U77DF> \x8F\xCF\xC3 |0 # <CJK>
+<U77E0> \x8F\xCF\xC4 |0 # <CJK>
+<U77E4> \x8F\xCF\xC5 |0 # <CJK>
+<U77E6> \x8F\xCF\xC6 |0 # <CJK>
+<U77EA> \x8F\xCF\xC7 |0 # <CJK>
+<U77EC> \x8F\xCF\xC8 |0 # <CJK>
+<U77F0> \x8F\xCF\xC9 |0 # <CJK>
+<U77F1> \x8F\xCF\xCA |0 # <CJK>
+<U77F4> \x8F\xCF\xCB |0 # <CJK>
+<U77F8> \x8F\xCF\xCC |0 # <CJK>
+<U77FB> \x8F\xCF\xCD |0 # <CJK>
+<U7805> \x8F\xCF\xCE |0 # <CJK>
+<U7806> \x8F\xCF\xCF |0 # <CJK>
+<U7809> \x8F\xCF\xD0 |0 # <CJK>
+<U780D> \x8F\xCF\xD1 |0 # <CJK>
+<U780E> \x8F\xCF\xD2 |0 # <CJK>
+<U7811> \x8F\xCF\xD3 |0 # <CJK>
+<U781D> \x8F\xCF\xD4 |0 # <CJK>
+<U7821> \x8F\xCF\xD5 |0 # <CJK>
+<U7822> \x8F\xCF\xD6 |0 # <CJK>
+<U7823> \x8F\xCF\xD7 |0 # <CJK>
+<U782D> \x8F\xCF\xD8 |0 # <CJK>
+<U782E> \x8F\xCF\xD9 |0 # <CJK>
+<U7830> \x8F\xCF\xDA |0 # <CJK>
+<U7835> \x8F\xCF\xDB |0 # <CJK>
+<U7837> \x8F\xCF\xDC |0 # <CJK>
+<U7843> \x8F\xCF\xDD |0 # <CJK>
+<U7844> \x8F\xCF\xDE |0 # <CJK>
+<U7847> \x8F\xCF\xDF |0 # <CJK>
+<U7848> \x8F\xCF\xE0 |0 # <CJK>
+<U784C> \x8F\xCF\xE1 |0 # <CJK>
+<U784E> \x8F\xCF\xE2 |0 # <CJK>
+<U7852> \x8F\xCF\xE3 |0 # <CJK>
+<U785C> \x8F\xCF\xE4 |0 # <CJK>
+<U785E> \x8F\xCF\xE5 |0 # <CJK>
+<U7860> \x8F\xCF\xE6 |0 # <CJK>
+<U7861> \x8F\xCF\xE7 |0 # <CJK>
+<U7863> \x8F\xCF\xE8 |0 # <CJK>
+<U7864> \x8F\xCF\xE9 |0 # <CJK>
+<U7868> \x8F\xCF\xEA |0 # <CJK>
+<U786A> \x8F\xCF\xEB |0 # <CJK>
+<U786E> \x8F\xCF\xEC |0 # <CJK>
+<U787A> \x8F\xCF\xED |0 # <CJK>
+<U787E> \x8F\xCF\xEE |0 # <CJK>
+<U788A> \x8F\xCF\xEF |0 # <CJK>
+<U788F> \x8F\xCF\xF0 |0 # <CJK>
+<U7894> \x8F\xCF\xF1 |0 # <CJK>
+<U7898> \x8F\xCF\xF2 |0 # <CJK>
+<U78A1> \x8F\xCF\xF3 |0 # <CJK>
+<U789D> \x8F\xCF\xF4 |0 # <CJK>
+<U789E> \x8F\xCF\xF5 |0 # <CJK>
+<U789F> \x8F\xCF\xF6 |0 # <CJK>
+<U78A4> \x8F\xCF\xF7 |0 # <CJK>
+<U78A8> \x8F\xCF\xF8 |0 # <CJK>
+<U78AC> \x8F\xCF\xF9 |0 # <CJK>
+<U78AD> \x8F\xCF\xFA |0 # <CJK>
+<U78B0> \x8F\xCF\xFB |0 # <CJK>
+<U78B1> \x8F\xCF\xFC |0 # <CJK>
+<U78B2> \x8F\xCF\xFD |0 # <CJK>
+<U78B3> \x8F\xCF\xFE |0 # <CJK>
+<U78BB> \x8F\xD0\xA1 |0 # <CJK>
+<U78BD> \x8F\xD0\xA2 |0 # <CJK>
+<U78BF> \x8F\xD0\xA3 |0 # <CJK>
+<U78C7> \x8F\xD0\xA4 |0 # <CJK>
+<U78C8> \x8F\xD0\xA5 |0 # <CJK>
+<U78C9> \x8F\xD0\xA6 |0 # <CJK>
+<U78CC> \x8F\xD0\xA7 |0 # <CJK>
+<U78CE> \x8F\xD0\xA8 |0 # <CJK>
+<U78D2> \x8F\xD0\xA9 |0 # <CJK>
+<U78D3> \x8F\xD0\xAA |0 # <CJK>
+<U78D5> \x8F\xD0\xAB |0 # <CJK>
+<U78D6> \x8F\xD0\xAC |0 # <CJK>
+<U78E4> \x8F\xD0\xAD |0 # <CJK>
+<U78DB> \x8F\xD0\xAE |0 # <CJK>
+<U78DF> \x8F\xD0\xAF |0 # <CJK>
+<U78E0> \x8F\xD0\xB0 |0 # <CJK>
+<U78E1> \x8F\xD0\xB1 |0 # <CJK>
+<U78E6> \x8F\xD0\xB2 |0 # <CJK>
+<U78EA> \x8F\xD0\xB3 |0 # <CJK>
+<U78F2> \x8F\xD0\xB4 |0 # <CJK>
+<U78F3> \x8F\xD0\xB5 |0 # <CJK>
+<U7900> \x8F\xD0\xB6 |0 # <CJK>
+<U78F6> \x8F\xD0\xB7 |0 # <CJK>
+<U78F7> \x8F\xD0\xB8 |0 # <CJK>
+<U78FA> \x8F\xD0\xB9 |0 # <CJK>
+<U78FB> \x8F\xD0\xBA |0 # <CJK>
+<U78FF> \x8F\xD0\xBB |0 # <CJK>
+<U7906> \x8F\xD0\xBC |0 # <CJK>
+<U790C> \x8F\xD0\xBD |0 # <CJK>
+<U7910> \x8F\xD0\xBE |0 # <CJK>
+<U791A> \x8F\xD0\xBF |0 # <CJK>
+<U791C> \x8F\xD0\xC0 |0 # <CJK>
+<U791E> \x8F\xD0\xC1 |0 # <CJK>
+<U791F> \x8F\xD0\xC2 |0 # <CJK>
+<U7920> \x8F\xD0\xC3 |0 # <CJK>
+<U7925> \x8F\xD0\xC4 |0 # <CJK>
+<U7927> \x8F\xD0\xC5 |0 # <CJK>
+<U7929> \x8F\xD0\xC6 |0 # <CJK>
+<U792D> \x8F\xD0\xC7 |0 # <CJK>
+<U7931> \x8F\xD0\xC8 |0 # <CJK>
+<U7934> \x8F\xD0\xC9 |0 # <CJK>
+<U7935> \x8F\xD0\xCA |0 # <CJK>
+<U793B> \x8F\xD0\xCB |0 # <CJK>
+<U793D> \x8F\xD0\xCC |0 # <CJK>
+<U793F> \x8F\xD0\xCD |0 # <CJK>
+<U7944> \x8F\xD0\xCE |0 # <CJK>
+<U7945> \x8F\xD0\xCF |0 # <CJK>
+<U7946> \x8F\xD0\xD0 |0 # <CJK>
+<U794A> \x8F\xD0\xD1 |0 # <CJK>
+<U794B> \x8F\xD0\xD2 |0 # <CJK>
+<U794F> \x8F\xD0\xD3 |0 # <CJK>
+<U7951> \x8F\xD0\xD4 |0 # <CJK>
+<U7954> \x8F\xD0\xD5 |0 # <CJK>
+<U7958> \x8F\xD0\xD6 |0 # <CJK>
+<U795B> \x8F\xD0\xD7 |0 # <CJK>
+<U795C> \x8F\xD0\xD8 |0 # <CJK>
+<U7967> \x8F\xD0\xD9 |0 # <CJK>
+<U7969> \x8F\xD0\xDA |0 # <CJK>
+<U796B> \x8F\xD0\xDB |0 # <CJK>
+<U7972> \x8F\xD0\xDC |0 # <CJK>
+<U7979> \x8F\xD0\xDD |0 # <CJK>
+<U797B> \x8F\xD0\xDE |0 # <CJK>
+<U797C> \x8F\xD0\xDF |0 # <CJK>
+<U797E> \x8F\xD0\xE0 |0 # <CJK>
+<U798B> \x8F\xD0\xE1 |0 # <CJK>
+<U798C> \x8F\xD0\xE2 |0 # <CJK>
+<U7991> \x8F\xD0\xE3 |0 # <CJK>
+<U7993> \x8F\xD0\xE4 |0 # <CJK>
+<U7994> \x8F\xD0\xE5 |0 # <CJK>
+<U7995> \x8F\xD0\xE6 |0 # <CJK>
+<U7996> \x8F\xD0\xE7 |0 # <CJK>
+<U7998> \x8F\xD0\xE8 |0 # <CJK>
+<U799B> \x8F\xD0\xE9 |0 # <CJK>
+<U799C> \x8F\xD0\xEA |0 # <CJK>
+<U79A1> \x8F\xD0\xEB |0 # <CJK>
+<U79A8> \x8F\xD0\xEC |0 # <CJK>
+<U79A9> \x8F\xD0\xED |0 # <CJK>
+<U79AB> \x8F\xD0\xEE |0 # <CJK>
+<U79AF> \x8F\xD0\xEF |0 # <CJK>
+<U79B1> \x8F\xD0\xF0 |0 # <CJK>
+<U79B4> \x8F\xD0\xF1 |0 # <CJK>
+<U79B8> \x8F\xD0\xF2 |0 # <CJK>
+<U79BB> \x8F\xD0\xF3 |0 # <CJK>
+<U79C2> \x8F\xD0\xF4 |0 # <CJK>
+<U79C4> \x8F\xD0\xF5 |0 # <CJK>
+<U79C7> \x8F\xD0\xF6 |0 # <CJK>
+<U79C8> \x8F\xD0\xF7 |0 # <CJK>
+<U79CA> \x8F\xD0\xF8 |0 # <CJK>
+<U79CF> \x8F\xD0\xF9 |0 # <CJK>
+<U79D4> \x8F\xD0\xFA |0 # <CJK>
+<U79D6> \x8F\xD0\xFB |0 # <CJK>
+<U79DA> \x8F\xD0\xFC |0 # <CJK>
+<U79DD> \x8F\xD0\xFD |0 # <CJK>
+<U79DE> \x8F\xD0\xFE |0 # <CJK>
+<U79E0> \x8F\xD1\xA1 |0 # <CJK>
+<U79E2> \x8F\xD1\xA2 |0 # <CJK>
+<U79E5> \x8F\xD1\xA3 |0 # <CJK>
+<U79EA> \x8F\xD1\xA4 |0 # <CJK>
+<U79EB> \x8F\xD1\xA5 |0 # <CJK>
+<U79ED> \x8F\xD1\xA6 |0 # <CJK>
+<U79F1> \x8F\xD1\xA7 |0 # <CJK>
+<U79F8> \x8F\xD1\xA8 |0 # <CJK>
+<U79FC> \x8F\xD1\xA9 |0 # <CJK>
+<U7A02> \x8F\xD1\xAA |0 # <CJK>
+<U7A03> \x8F\xD1\xAB |0 # <CJK>
+<U7A07> \x8F\xD1\xAC |0 # <CJK>
+<U7A09> \x8F\xD1\xAD |0 # <CJK>
+<U7A0A> \x8F\xD1\xAE |0 # <CJK>
+<U7A0C> \x8F\xD1\xAF |0 # <CJK>
+<U7A11> \x8F\xD1\xB0 |0 # <CJK>
+<U7A15> \x8F\xD1\xB1 |0 # <CJK>
+<U7A1B> \x8F\xD1\xB2 |0 # <CJK>
+<U7A1E> \x8F\xD1\xB3 |0 # <CJK>
+<U7A21> \x8F\xD1\xB4 |0 # <CJK>
+<U7A27> \x8F\xD1\xB5 |0 # <CJK>
+<U7A2B> \x8F\xD1\xB6 |0 # <CJK>
+<U7A2D> \x8F\xD1\xB7 |0 # <CJK>
+<U7A2F> \x8F\xD1\xB8 |0 # <CJK>
+<U7A30> \x8F\xD1\xB9 |0 # <CJK>
+<U7A34> \x8F\xD1\xBA |0 # <CJK>
+<U7A35> \x8F\xD1\xBB |0 # <CJK>
+<U7A38> \x8F\xD1\xBC |0 # <CJK>
+<U7A39> \x8F\xD1\xBD |0 # <CJK>
+<U7A3A> \x8F\xD1\xBE |0 # <CJK>
+<U7A44> \x8F\xD1\xBF |0 # <CJK>
+<U7A45> \x8F\xD1\xC0 |0 # <CJK>
+<U7A47> \x8F\xD1\xC1 |0 # <CJK>
+<U7A48> \x8F\xD1\xC2 |0 # <CJK>
+<U7A4C> \x8F\xD1\xC3 |0 # <CJK>
+<U7A55> \x8F\xD1\xC4 |0 # <CJK>
+<U7A56> \x8F\xD1\xC5 |0 # <CJK>
+<U7A59> \x8F\xD1\xC6 |0 # <CJK>
+<U7A5C> \x8F\xD1\xC7 |0 # <CJK>
+<U7A5D> \x8F\xD1\xC8 |0 # <CJK>
+<U7A5F> \x8F\xD1\xC9 |0 # <CJK>
+<U7A60> \x8F\xD1\xCA |0 # <CJK>
+<U7A65> \x8F\xD1\xCB |0 # <CJK>
+<U7A67> \x8F\xD1\xCC |0 # <CJK>
+<U7A6A> \x8F\xD1\xCD |0 # <CJK>
+<U7A6D> \x8F\xD1\xCE |0 # <CJK>
+<U7A75> \x8F\xD1\xCF |0 # <CJK>
+<U7A78> \x8F\xD1\xD0 |0 # <CJK>
+<U7A7E> \x8F\xD1\xD1 |0 # <CJK>
+<U7A80> \x8F\xD1\xD2 |0 # <CJK>
+<U7A82> \x8F\xD1\xD3 |0 # <CJK>
+<U7A85> \x8F\xD1\xD4 |0 # <CJK>
+<U7A86> \x8F\xD1\xD5 |0 # <CJK>
+<U7A8A> \x8F\xD1\xD6 |0 # <CJK>
+<U7A8B> \x8F\xD1\xD7 |0 # <CJK>
+<U7A90> \x8F\xD1\xD8 |0 # <CJK>
+<U7A91> \x8F\xD1\xD9 |0 # <CJK>
+<U7A94> \x8F\xD1\xDA |0 # <CJK>
+<U7A9E> \x8F\xD1\xDB |0 # <CJK>
+<U7AA0> \x8F\xD1\xDC |0 # <CJK>
+<U7AA3> \x8F\xD1\xDD |0 # <CJK>
+<U7AAC> \x8F\xD1\xDE |0 # <CJK>
+<U7AB3> \x8F\xD1\xDF |0 # <CJK>
+<U7AB5> \x8F\xD1\xE0 |0 # <CJK>
+<U7AB9> \x8F\xD1\xE1 |0 # <CJK>
+<U7ABB> \x8F\xD1\xE2 |0 # <CJK>
+<U7ABC> \x8F\xD1\xE3 |0 # <CJK>
+<U7AC6> \x8F\xD1\xE4 |0 # <CJK>
+<U7AC9> \x8F\xD1\xE5 |0 # <CJK>
+<U7ACC> \x8F\xD1\xE6 |0 # <CJK>
+<U7ACE> \x8F\xD1\xE7 |0 # <CJK>
+<U7AD1> \x8F\xD1\xE8 |0 # <CJK>
+<U7ADB> \x8F\xD1\xE9 |0 # <CJK>
+<U7AE8> \x8F\xD1\xEA |0 # <CJK>
+<U7AE9> \x8F\xD1\xEB |0 # <CJK>
+<U7AEB> \x8F\xD1\xEC |0 # <CJK>
+<U7AEC> \x8F\xD1\xED |0 # <CJK>
+<U7AF1> \x8F\xD1\xEE |0 # <CJK>
+<U7AF4> \x8F\xD1\xEF |0 # <CJK>
+<U7AFB> \x8F\xD1\xF0 |0 # <CJK>
+<U7AFD> \x8F\xD1\xF1 |0 # <CJK>
+<U7AFE> \x8F\xD1\xF2 |0 # <CJK>
+<U7B07> \x8F\xD1\xF3 |0 # <CJK>
+<U7B14> \x8F\xD1\xF4 |0 # <CJK>
+<U7B1F> \x8F\xD1\xF5 |0 # <CJK>
+<U7B23> \x8F\xD1\xF6 |0 # <CJK>
+<U7B27> \x8F\xD1\xF7 |0 # <CJK>
+<U7B29> \x8F\xD1\xF8 |0 # <CJK>
+<U7B2A> \x8F\xD1\xF9 |0 # <CJK>
+<U7B2B> \x8F\xD1\xFA |0 # <CJK>
+<U7B2D> \x8F\xD1\xFB |0 # <CJK>
+<U7B2E> \x8F\xD1\xFC |0 # <CJK>
+<U7B2F> \x8F\xD1\xFD |0 # <CJK>
+<U7B30> \x8F\xD1\xFE |0 # <CJK>
+<U7B31> \x8F\xD2\xA1 |0 # <CJK>
+<U7B34> \x8F\xD2\xA2 |0 # <CJK>
+<U7B3D> \x8F\xD2\xA3 |0 # <CJK>
+<U7B3F> \x8F\xD2\xA4 |0 # <CJK>
+<U7B40> \x8F\xD2\xA5 |0 # <CJK>
+<U7B41> \x8F\xD2\xA6 |0 # <CJK>
+<U7B47> \x8F\xD2\xA7 |0 # <CJK>
+<U7B4E> \x8F\xD2\xA8 |0 # <CJK>
+<U7B55> \x8F\xD2\xA9 |0 # <CJK>
+<U7B60> \x8F\xD2\xAA |0 # <CJK>
+<U7B64> \x8F\xD2\xAB |0 # <CJK>
+<U7B66> \x8F\xD2\xAC |0 # <CJK>
+<U7B69> \x8F\xD2\xAD |0 # <CJK>
+<U7B6A> \x8F\xD2\xAE |0 # <CJK>
+<U7B6D> \x8F\xD2\xAF |0 # <CJK>
+<U7B6F> \x8F\xD2\xB0 |0 # <CJK>
+<U7B72> \x8F\xD2\xB1 |0 # <CJK>
+<U7B73> \x8F\xD2\xB2 |0 # <CJK>
+<U7B77> \x8F\xD2\xB3 |0 # <CJK>
+<U7B84> \x8F\xD2\xB4 |0 # <CJK>
+<U7B89> \x8F\xD2\xB5 |0 # <CJK>
+<U7B8E> \x8F\xD2\xB6 |0 # <CJK>
+<U7B90> \x8F\xD2\xB7 |0 # <CJK>
+<U7B91> \x8F\xD2\xB8 |0 # <CJK>
+<U7B96> \x8F\xD2\xB9 |0 # <CJK>
+<U7B9B> \x8F\xD2\xBA |0 # <CJK>
+<U7B9E> \x8F\xD2\xBB |0 # <CJK>
+<U7BA0> \x8F\xD2\xBC |0 # <CJK>
+<U7BA5> \x8F\xD2\xBD |0 # <CJK>
+<U7BAC> \x8F\xD2\xBE |0 # <CJK>
+<U7BAF> \x8F\xD2\xBF |0 # <CJK>
+<U7BB0> \x8F\xD2\xC0 |0 # <CJK>
+<U7BB2> \x8F\xD2\xC1 |0 # <CJK>
+<U7BB5> \x8F\xD2\xC2 |0 # <CJK>
+<U7BB6> \x8F\xD2\xC3 |0 # <CJK>
+<U7BBA> \x8F\xD2\xC4 |0 # <CJK>
+<U7BBB> \x8F\xD2\xC5 |0 # <CJK>
+<U7BBC> \x8F\xD2\xC6 |0 # <CJK>
+<U7BBD> \x8F\xD2\xC7 |0 # <CJK>
+<U7BC2> \x8F\xD2\xC8 |0 # <CJK>
+<U7BC5> \x8F\xD2\xC9 |0 # <CJK>
+<U7BC8> \x8F\xD2\xCA |0 # <CJK>
+<U7BCA> \x8F\xD2\xCB |0 # <CJK>
+<U7BD4> \x8F\xD2\xCC |0 # <CJK>
+<U7BD6> \x8F\xD2\xCD |0 # <CJK>
+<U7BD7> \x8F\xD2\xCE |0 # <CJK>
+<U7BD9> \x8F\xD2\xCF |0 # <CJK>
+<U7BDA> \x8F\xD2\xD0 |0 # <CJK>
+<U7BDB> \x8F\xD2\xD1 |0 # <CJK>
+<U7BE8> \x8F\xD2\xD2 |0 # <CJK>
+<U7BEA> \x8F\xD2\xD3 |0 # <CJK>
+<U7BF2> \x8F\xD2\xD4 |0 # <CJK>
+<U7BF4> \x8F\xD2\xD5 |0 # <CJK>
+<U7BF5> \x8F\xD2\xD6 |0 # <CJK>
+<U7BF8> \x8F\xD2\xD7 |0 # <CJK>
+<U7BF9> \x8F\xD2\xD8 |0 # <CJK>
+<U7BFA> \x8F\xD2\xD9 |0 # <CJK>
+<U7BFC> \x8F\xD2\xDA |0 # <CJK>
+<U7BFE> \x8F\xD2\xDB |0 # <CJK>
+<U7C01> \x8F\xD2\xDC |0 # <CJK>
+<U7C02> \x8F\xD2\xDD |0 # <CJK>
+<U7C03> \x8F\xD2\xDE |0 # <CJK>
+<U7C04> \x8F\xD2\xDF |0 # <CJK>
+<U7C06> \x8F\xD2\xE0 |0 # <CJK>
+<U7C09> \x8F\xD2\xE1 |0 # <CJK>
+<U7C0B> \x8F\xD2\xE2 |0 # <CJK>
+<U7C0C> \x8F\xD2\xE3 |0 # <CJK>
+<U7C0E> \x8F\xD2\xE4 |0 # <CJK>
+<U7C0F> \x8F\xD2\xE5 |0 # <CJK>
+<U7C19> \x8F\xD2\xE6 |0 # <CJK>
+<U7C1B> \x8F\xD2\xE7 |0 # <CJK>
+<U7C20> \x8F\xD2\xE8 |0 # <CJK>
+<U7C25> \x8F\xD2\xE9 |0 # <CJK>
+<U7C26> \x8F\xD2\xEA |0 # <CJK>
+<U7C28> \x8F\xD2\xEB |0 # <CJK>
+<U7C2C> \x8F\xD2\xEC |0 # <CJK>
+<U7C31> \x8F\xD2\xED |0 # <CJK>
+<U7C33> \x8F\xD2\xEE |0 # <CJK>
+<U7C34> \x8F\xD2\xEF |0 # <CJK>
+<U7C36> \x8F\xD2\xF0 |0 # <CJK>
+<U7C39> \x8F\xD2\xF1 |0 # <CJK>
+<U7C3A> \x8F\xD2\xF2 |0 # <CJK>
+<U7C46> \x8F\xD2\xF3 |0 # <CJK>
+<U7C4A> \x8F\xD2\xF4 |0 # <CJK>
+<U7C55> \x8F\xD2\xF5 |0 # <CJK>
+<U7C51> \x8F\xD2\xF6 |0 # <CJK>
+<U7C52> \x8F\xD2\xF7 |0 # <CJK>
+<U7C53> \x8F\xD2\xF8 |0 # <CJK>
+<U7C59> \x8F\xD2\xF9 |0 # <CJK>
+<U7C5A> \x8F\xD2\xFA |0 # <CJK>
+<U7C5B> \x8F\xD2\xFB |0 # <CJK>
+<U7C5C> \x8F\xD2\xFC |0 # <CJK>
+<U7C5D> \x8F\xD2\xFD |0 # <CJK>
+<U7C5E> \x8F\xD2\xFE |0 # <CJK>
+<U7C61> \x8F\xD3\xA1 |0 # <CJK>
+<U7C63> \x8F\xD3\xA2 |0 # <CJK>
+<U7C67> \x8F\xD3\xA3 |0 # <CJK>
+<U7C69> \x8F\xD3\xA4 |0 # <CJK>
+<U7C6D> \x8F\xD3\xA5 |0 # <CJK>
+<U7C6E> \x8F\xD3\xA6 |0 # <CJK>
+<U7C70> \x8F\xD3\xA7 |0 # <CJK>
+<U7C72> \x8F\xD3\xA8 |0 # <CJK>
+<U7C79> \x8F\xD3\xA9 |0 # <CJK>
+<U7C7C> \x8F\xD3\xAA |0 # <CJK>
+<U7C7D> \x8F\xD3\xAB |0 # <CJK>
+<U7C86> \x8F\xD3\xAC |0 # <CJK>
+<U7C87> \x8F\xD3\xAD |0 # <CJK>
+<U7C8F> \x8F\xD3\xAE |0 # <CJK>
+<U7C94> \x8F\xD3\xAF |0 # <CJK>
+<U7C9E> \x8F\xD3\xB0 |0 # <CJK>
+<U7CA0> \x8F\xD3\xB1 |0 # <CJK>
+<U7CA6> \x8F\xD3\xB2 |0 # <CJK>
+<U7CB0> \x8F\xD3\xB3 |0 # <CJK>
+<U7CB6> \x8F\xD3\xB4 |0 # <CJK>
+<U7CB7> \x8F\xD3\xB5 |0 # <CJK>
+<U7CBA> \x8F\xD3\xB6 |0 # <CJK>
+<U7CBB> \x8F\xD3\xB7 |0 # <CJK>
+<U7CBC> \x8F\xD3\xB8 |0 # <CJK>
+<U7CBF> \x8F\xD3\xB9 |0 # <CJK>
+<U7CC4> \x8F\xD3\xBA |0 # <CJK>
+<U7CC7> \x8F\xD3\xBB |0 # <CJK>
+<U7CC8> \x8F\xD3\xBC |0 # <CJK>
+<U7CC9> \x8F\xD3\xBD |0 # <CJK>
+<U7CCD> \x8F\xD3\xBE |0 # <CJK>
+<U7CCF> \x8F\xD3\xBF |0 # <CJK>
+<U7CD3> \x8F\xD3\xC0 |0 # <CJK>
+<U7CD4> \x8F\xD3\xC1 |0 # <CJK>
+<U7CD5> \x8F\xD3\xC2 |0 # <CJK>
+<U7CD7> \x8F\xD3\xC3 |0 # <CJK>
+<U7CD9> \x8F\xD3\xC4 |0 # <CJK>
+<U7CDA> \x8F\xD3\xC5 |0 # <CJK>
+<U7CDD> \x8F\xD3\xC6 |0 # <CJK>
+<U7CE6> \x8F\xD3\xC7 |0 # <CJK>
+<U7CE9> \x8F\xD3\xC8 |0 # <CJK>
+<U7CEB> \x8F\xD3\xC9 |0 # <CJK>
+<U7CF5> \x8F\xD3\xCA |0 # <CJK>
+<U7D03> \x8F\xD3\xCB |0 # <CJK>
+<U7D07> \x8F\xD3\xCC |0 # <CJK>
+<U7D08> \x8F\xD3\xCD |0 # <CJK>
+<U7D09> \x8F\xD3\xCE |0 # <CJK>
+<U7D0F> \x8F\xD3\xCF |0 # <CJK>
+<U7D11> \x8F\xD3\xD0 |0 # <CJK>
+<U7D12> \x8F\xD3\xD1 |0 # <CJK>
+<U7D13> \x8F\xD3\xD2 |0 # <CJK>
+<U7D16> \x8F\xD3\xD3 |0 # <CJK>
+<U7D1D> \x8F\xD3\xD4 |0 # <CJK>
+<U7D1E> \x8F\xD3\xD5 |0 # <CJK>
+<U7D23> \x8F\xD3\xD6 |0 # <CJK>
+<U7D26> \x8F\xD3\xD7 |0 # <CJK>
+<U7D2A> \x8F\xD3\xD8 |0 # <CJK>
+<U7D2D> \x8F\xD3\xD9 |0 # <CJK>
+<U7D31> \x8F\xD3\xDA |0 # <CJK>
+<U7D3C> \x8F\xD3\xDB |0 # <CJK>
+<U7D3D> \x8F\xD3\xDC |0 # <CJK>
+<U7D3E> \x8F\xD3\xDD |0 # <CJK>
+<U7D40> \x8F\xD3\xDE |0 # <CJK>
+<U7D41> \x8F\xD3\xDF |0 # <CJK>
+<U7D47> \x8F\xD3\xE0 |0 # <CJK>
+<U7D48> \x8F\xD3\xE1 |0 # <CJK>
+<U7D4D> \x8F\xD3\xE2 |0 # <CJK>
+<U7D51> \x8F\xD3\xE3 |0 # <CJK>
+<U7D53> \x8F\xD3\xE4 |0 # <CJK>
+<U7D57> \x8F\xD3\xE5 |0 # <CJK>
+<U7D59> \x8F\xD3\xE6 |0 # <CJK>
+<U7D5A> \x8F\xD3\xE7 |0 # <CJK>
+<U7D5C> \x8F\xD3\xE8 |0 # <CJK>
+<U7D5D> \x8F\xD3\xE9 |0 # <CJK>
+<U7D65> \x8F\xD3\xEA |0 # <CJK>
+<U7D67> \x8F\xD3\xEB |0 # <CJK>
+<U7D6A> \x8F\xD3\xEC |0 # <CJK>
+<U7D70> \x8F\xD3\xED |0 # <CJK>
+<U7D78> \x8F\xD3\xEE |0 # <CJK>
+<U7D7A> \x8F\xD3\xEF |0 # <CJK>
+<U7D7B> \x8F\xD3\xF0 |0 # <CJK>
+<U7D7F> \x8F\xD3\xF1 |0 # <CJK>
+<U7D81> \x8F\xD3\xF2 |0 # <CJK>
+<U7D82> \x8F\xD3\xF3 |0 # <CJK>
+<U7D83> \x8F\xD3\xF4 |0 # <CJK>
+<U7D85> \x8F\xD3\xF5 |0 # <CJK>
+<U7D86> \x8F\xD3\xF6 |0 # <CJK>
+<U7D88> \x8F\xD3\xF7 |0 # <CJK>
+<U7D8B> \x8F\xD3\xF8 |0 # <CJK>
+<U7D8C> \x8F\xD3\xF9 |0 # <CJK>
+<U7D8D> \x8F\xD3\xFA |0 # <CJK>
+<U7D91> \x8F\xD3\xFB |0 # <CJK>
+<U7D96> \x8F\xD3\xFC |0 # <CJK>
+<U7D97> \x8F\xD3\xFD |0 # <CJK>
+<U7D9D> \x8F\xD3\xFE |0 # <CJK>
+<U7D9E> \x8F\xD4\xA1 |0 # <CJK>
+<U7DA6> \x8F\xD4\xA2 |0 # <CJK>
+<U7DA7> \x8F\xD4\xA3 |0 # <CJK>
+<U7DAA> \x8F\xD4\xA4 |0 # <CJK>
+<U7DB3> \x8F\xD4\xA5 |0 # <CJK>
+<U7DB6> \x8F\xD4\xA6 |0 # <CJK>
+<U7DB7> \x8F\xD4\xA7 |0 # <CJK>
+<U7DB9> \x8F\xD4\xA8 |0 # <CJK>
+<U7DC2> \x8F\xD4\xA9 |0 # <CJK>
+<U7DC3> \x8F\xD4\xAA |0 # <CJK>
+<U7DC4> \x8F\xD4\xAB |0 # <CJK>
+<U7DC5> \x8F\xD4\xAC |0 # <CJK>
+<U7DC6> \x8F\xD4\xAD |0 # <CJK>
+<U7DCC> \x8F\xD4\xAE |0 # <CJK>
+<U7DCD> \x8F\xD4\xAF |0 # <CJK>
+<U7DCE> \x8F\xD4\xB0 |0 # <CJK>
+<U7DD7> \x8F\xD4\xB1 |0 # <CJK>
+<U7DD9> \x8F\xD4\xB2 |0 # <CJK>
+<U7E00> \x8F\xD4\xB3 |0 # <CJK>
+<U7DE2> \x8F\xD4\xB4 |0 # <CJK>
+<U7DE5> \x8F\xD4\xB5 |0 # <CJK>
+<U7DE6> \x8F\xD4\xB6 |0 # <CJK>
+<U7DEA> \x8F\xD4\xB7 |0 # <CJK>
+<U7DEB> \x8F\xD4\xB8 |0 # <CJK>
+<U7DED> \x8F\xD4\xB9 |0 # <CJK>
+<U7DF1> \x8F\xD4\xBA |0 # <CJK>
+<U7DF5> \x8F\xD4\xBB |0 # <CJK>
+<U7DF6> \x8F\xD4\xBC |0 # <CJK>
+<U7DF9> \x8F\xD4\xBD |0 # <CJK>
+<U7DFA> \x8F\xD4\xBE |0 # <CJK>
+<U7E08> \x8F\xD4\xBF |0 # <CJK>
+<U7E10> \x8F\xD4\xC0 |0 # <CJK>
+<U7E11> \x8F\xD4\xC1 |0 # <CJK>
+<U7E15> \x8F\xD4\xC2 |0 # <CJK>
+<U7E17> \x8F\xD4\xC3 |0 # <CJK>
+<U7E1C> \x8F\xD4\xC4 |0 # <CJK>
+<U7E1D> \x8F\xD4\xC5 |0 # <CJK>
+<U7E20> \x8F\xD4\xC6 |0 # <CJK>
+<U7E27> \x8F\xD4\xC7 |0 # <CJK>
+<U7E28> \x8F\xD4\xC8 |0 # <CJK>
+<U7E2C> \x8F\xD4\xC9 |0 # <CJK>
+<U7E2D> \x8F\xD4\xCA |0 # <CJK>
+<U7E2F> \x8F\xD4\xCB |0 # <CJK>
+<U7E33> \x8F\xD4\xCC |0 # <CJK>
+<U7E36> \x8F\xD4\xCD |0 # <CJK>
+<U7E3F> \x8F\xD4\xCE |0 # <CJK>
+<U7E44> \x8F\xD4\xCF |0 # <CJK>
+<U7E45> \x8F\xD4\xD0 |0 # <CJK>
+<U7E47> \x8F\xD4\xD1 |0 # <CJK>
+<U7E4E> \x8F\xD4\xD2 |0 # <CJK>
+<U7E50> \x8F\xD4\xD3 |0 # <CJK>
+<U7E52> \x8F\xD4\xD4 |0 # <CJK>
+<U7E58> \x8F\xD4\xD5 |0 # <CJK>
+<U7E5F> \x8F\xD4\xD6 |0 # <CJK>
+<U7E61> \x8F\xD4\xD7 |0 # <CJK>
+<U7E62> \x8F\xD4\xD8 |0 # <CJK>
+<U7E65> \x8F\xD4\xD9 |0 # <CJK>
+<U7E6B> \x8F\xD4\xDA |0 # <CJK>
+<U7E6E> \x8F\xD4\xDB |0 # <CJK>
+<U7E6F> \x8F\xD4\xDC |0 # <CJK>
+<U7E73> \x8F\xD4\xDD |0 # <CJK>
+<U7E78> \x8F\xD4\xDE |0 # <CJK>
+<U7E7E> \x8F\xD4\xDF |0 # <CJK>
+<U7E81> \x8F\xD4\xE0 |0 # <CJK>
+<U7E86> \x8F\xD4\xE1 |0 # <CJK>
+<U7E87> \x8F\xD4\xE2 |0 # <CJK>
+<U7E8A> \x8F\xD4\xE3 |0 # <CJK>
+<U7E8D> \x8F\xD4\xE4 |0 # <CJK>
+<U7E91> \x8F\xD4\xE5 |0 # <CJK>
+<U7E95> \x8F\xD4\xE6 |0 # <CJK>
+<U7E98> \x8F\xD4\xE7 |0 # <CJK>
+<U7E9A> \x8F\xD4\xE8 |0 # <CJK>
+<U7E9D> \x8F\xD4\xE9 |0 # <CJK>
+<U7E9E> \x8F\xD4\xEA |0 # <CJK>
+<U7F3C> \x8F\xD4\xEB |0 # <CJK>
+<U7F3B> \x8F\xD4\xEC |0 # <CJK>
+<U7F3D> \x8F\xD4\xED |0 # <CJK>
+<U7F3E> \x8F\xD4\xEE |0 # <CJK>
+<U7F3F> \x8F\xD4\xEF |0 # <CJK>
+<U7F43> \x8F\xD4\xF0 |0 # <CJK>
+<U7F44> \x8F\xD4\xF1 |0 # <CJK>
+<U7F47> \x8F\xD4\xF2 |0 # <CJK>
+<U7F4F> \x8F\xD4\xF3 |0 # <CJK>
+<U7F52> \x8F\xD4\xF4 |0 # <CJK>
+<U7F53> \x8F\xD4\xF5 |0 # <CJK>
+<U7F5B> \x8F\xD4\xF6 |0 # <CJK>
+<U7F5C> \x8F\xD4\xF7 |0 # <CJK>
+<U7F5D> \x8F\xD4\xF8 |0 # <CJK>
+<U7F61> \x8F\xD4\xF9 |0 # <CJK>
+<U7F63> \x8F\xD4\xFA |0 # <CJK>
+<U7F64> \x8F\xD4\xFB |0 # <CJK>
+<U7F65> \x8F\xD4\xFC |0 # <CJK>
+<U7F66> \x8F\xD4\xFD |0 # <CJK>
+<U7F6D> \x8F\xD4\xFE |0 # <CJK>
+<U7F71> \x8F\xD5\xA1 |0 # <CJK>
+<U7F7D> \x8F\xD5\xA2 |0 # <CJK>
+<U7F7E> \x8F\xD5\xA3 |0 # <CJK>
+<U7F7F> \x8F\xD5\xA4 |0 # <CJK>
+<U7F80> \x8F\xD5\xA5 |0 # <CJK>
+<U7F8B> \x8F\xD5\xA6 |0 # <CJK>
+<U7F8D> \x8F\xD5\xA7 |0 # <CJK>
+<U7F8F> \x8F\xD5\xA8 |0 # <CJK>
+<U7F90> \x8F\xD5\xA9 |0 # <CJK>
+<U7F91> \x8F\xD5\xAA |0 # <CJK>
+<U7F96> \x8F\xD5\xAB |0 # <CJK>
+<U7F97> \x8F\xD5\xAC |0 # <CJK>
+<U7F9C> \x8F\xD5\xAD |0 # <CJK>
+<U7FA1> \x8F\xD5\xAE |0 # <CJK>
+<U7FA2> \x8F\xD5\xAF |0 # <CJK>
+<U7FA6> \x8F\xD5\xB0 |0 # <CJK>
+<U7FAA> \x8F\xD5\xB1 |0 # <CJK>
+<U7FAD> \x8F\xD5\xB2 |0 # <CJK>
+<U7FB4> \x8F\xD5\xB3 |0 # <CJK>
+<U7FBC> \x8F\xD5\xB4 |0 # <CJK>
+<U7FBF> \x8F\xD5\xB5 |0 # <CJK>
+<U7FC0> \x8F\xD5\xB6 |0 # <CJK>
+<U7FC3> \x8F\xD5\xB7 |0 # <CJK>
+<U7FC8> \x8F\xD5\xB8 |0 # <CJK>
+<U7FCE> \x8F\xD5\xB9 |0 # <CJK>
+<U7FCF> \x8F\xD5\xBA |0 # <CJK>
+<U7FDB> \x8F\xD5\xBB |0 # <CJK>
+<U7FDF> \x8F\xD5\xBC |0 # <CJK>
+<U7FE3> \x8F\xD5\xBD |0 # <CJK>
+<U7FE5> \x8F\xD5\xBE |0 # <CJK>
+<U7FE8> \x8F\xD5\xBF |0 # <CJK>
+<U7FEC> \x8F\xD5\xC0 |0 # <CJK>
+<U7FEE> \x8F\xD5\xC1 |0 # <CJK>
+<U7FEF> \x8F\xD5\xC2 |0 # <CJK>
+<U7FF2> \x8F\xD5\xC3 |0 # <CJK>
+<U7FFA> \x8F\xD5\xC4 |0 # <CJK>
+<U7FFD> \x8F\xD5\xC5 |0 # <CJK>
+<U7FFE> \x8F\xD5\xC6 |0 # <CJK>
+<U7FFF> \x8F\xD5\xC7 |0 # <CJK>
+<U8007> \x8F\xD5\xC8 |0 # <CJK>
+<U8008> \x8F\xD5\xC9 |0 # <CJK>
+<U800A> \x8F\xD5\xCA |0 # <CJK>
+<U800D> \x8F\xD5\xCB |0 # <CJK>
+<U800E> \x8F\xD5\xCC |0 # <CJK>
+<U800F> \x8F\xD5\xCD |0 # <CJK>
+<U8011> \x8F\xD5\xCE |0 # <CJK>
+<U8013> \x8F\xD5\xCF |0 # <CJK>
+<U8014> \x8F\xD5\xD0 |0 # <CJK>
+<U8016> \x8F\xD5\xD1 |0 # <CJK>
+<U801D> \x8F\xD5\xD2 |0 # <CJK>
+<U801E> \x8F\xD5\xD3 |0 # <CJK>
+<U801F> \x8F\xD5\xD4 |0 # <CJK>
+<U8020> \x8F\xD5\xD5 |0 # <CJK>
+<U8024> \x8F\xD5\xD6 |0 # <CJK>
+<U8026> \x8F\xD5\xD7 |0 # <CJK>
+<U802C> \x8F\xD5\xD8 |0 # <CJK>
+<U802E> \x8F\xD5\xD9 |0 # <CJK>
+<U8030> \x8F\xD5\xDA |0 # <CJK>
+<U8034> \x8F\xD5\xDB |0 # <CJK>
+<U8035> \x8F\xD5\xDC |0 # <CJK>
+<U8037> \x8F\xD5\xDD |0 # <CJK>
+<U8039> \x8F\xD5\xDE |0 # <CJK>
+<U803A> \x8F\xD5\xDF |0 # <CJK>
+<U803C> \x8F\xD5\xE0 |0 # <CJK>
+<U803E> \x8F\xD5\xE1 |0 # <CJK>
+<U8040> \x8F\xD5\xE2 |0 # <CJK>
+<U8044> \x8F\xD5\xE3 |0 # <CJK>
+<U8060> \x8F\xD5\xE4 |0 # <CJK>
+<U8064> \x8F\xD5\xE5 |0 # <CJK>
+<U8066> \x8F\xD5\xE6 |0 # <CJK>
+<U806D> \x8F\xD5\xE7 |0 # <CJK>
+<U8071> \x8F\xD5\xE8 |0 # <CJK>
+<U8075> \x8F\xD5\xE9 |0 # <CJK>
+<U8081> \x8F\xD5\xEA |0 # <CJK>
+<U8088> \x8F\xD5\xEB |0 # <CJK>
+<U808E> \x8F\xD5\xEC |0 # <CJK>
+<U809C> \x8F\xD5\xED |0 # <CJK>
+<U809E> \x8F\xD5\xEE |0 # <CJK>
+<U80A6> \x8F\xD5\xEF |0 # <CJK>
+<U80A7> \x8F\xD5\xF0 |0 # <CJK>
+<U80AB> \x8F\xD5\xF1 |0 # <CJK>
+<U80B8> \x8F\xD5\xF2 |0 # <CJK>
+<U80B9> \x8F\xD5\xF3 |0 # <CJK>
+<U80C8> \x8F\xD5\xF4 |0 # <CJK>
+<U80CD> \x8F\xD5\xF5 |0 # <CJK>
+<U80CF> \x8F\xD5\xF6 |0 # <CJK>
+<U80D2> \x8F\xD5\xF7 |0 # <CJK>
+<U80D4> \x8F\xD5\xF8 |0 # <CJK>
+<U80D5> \x8F\xD5\xF9 |0 # <CJK>
+<U80D7> \x8F\xD5\xFA |0 # <CJK>
+<U80D8> \x8F\xD5\xFB |0 # <CJK>
+<U80E0> \x8F\xD5\xFC |0 # <CJK>
+<U80ED> \x8F\xD5\xFD |0 # <CJK>
+<U80EE> \x8F\xD5\xFE |0 # <CJK>
+<U80F0> \x8F\xD6\xA1 |0 # <CJK>
+<U80F2> \x8F\xD6\xA2 |0 # <CJK>
+<U80F3> \x8F\xD6\xA3 |0 # <CJK>
+<U80F6> \x8F\xD6\xA4 |0 # <CJK>
+<U80F9> \x8F\xD6\xA5 |0 # <CJK>
+<U80FA> \x8F\xD6\xA6 |0 # <CJK>
+<U80FE> \x8F\xD6\xA7 |0 # <CJK>
+<U8103> \x8F\xD6\xA8 |0 # <CJK>
+<U810B> \x8F\xD6\xA9 |0 # <CJK>
+<U8116> \x8F\xD6\xAA |0 # <CJK>
+<U8117> \x8F\xD6\xAB |0 # <CJK>
+<U8118> \x8F\xD6\xAC |0 # <CJK>
+<U811C> \x8F\xD6\xAD |0 # <CJK>
+<U811E> \x8F\xD6\xAE |0 # <CJK>
+<U8120> \x8F\xD6\xAF |0 # <CJK>
+<U8124> \x8F\xD6\xB0 |0 # <CJK>
+<U8127> \x8F\xD6\xB1 |0 # <CJK>
+<U812C> \x8F\xD6\xB2 |0 # <CJK>
+<U8130> \x8F\xD6\xB3 |0 # <CJK>
+<U8135> \x8F\xD6\xB4 |0 # <CJK>
+<U813A> \x8F\xD6\xB5 |0 # <CJK>
+<U813C> \x8F\xD6\xB6 |0 # <CJK>
+<U8145> \x8F\xD6\xB7 |0 # <CJK>
+<U8147> \x8F\xD6\xB8 |0 # <CJK>
+<U814A> \x8F\xD6\xB9 |0 # <CJK>
+<U814C> \x8F\xD6\xBA |0 # <CJK>
+<U8152> \x8F\xD6\xBB |0 # <CJK>
+<U8157> \x8F\xD6\xBC |0 # <CJK>
+<U8160> \x8F\xD6\xBD |0 # <CJK>
+<U8161> \x8F\xD6\xBE |0 # <CJK>
+<U8167> \x8F\xD6\xBF |0 # <CJK>
+<U8168> \x8F\xD6\xC0 |0 # <CJK>
+<U8169> \x8F\xD6\xC1 |0 # <CJK>
+<U816D> \x8F\xD6\xC2 |0 # <CJK>
+<U816F> \x8F\xD6\xC3 |0 # <CJK>
+<U8177> \x8F\xD6\xC4 |0 # <CJK>
+<U8181> \x8F\xD6\xC5 |0 # <CJK>
+<U8190> \x8F\xD6\xC6 |0 # <CJK>
+<U8184> \x8F\xD6\xC7 |0 # <CJK>
+<U8185> \x8F\xD6\xC8 |0 # <CJK>
+<U8186> \x8F\xD6\xC9 |0 # <CJK>
+<U818B> \x8F\xD6\xCA |0 # <CJK>
+<U818E> \x8F\xD6\xCB |0 # <CJK>
+<U8196> \x8F\xD6\xCC |0 # <CJK>
+<U8198> \x8F\xD6\xCD |0 # <CJK>
+<U819B> \x8F\xD6\xCE |0 # <CJK>
+<U819E> \x8F\xD6\xCF |0 # <CJK>
+<U81A2> \x8F\xD6\xD0 |0 # <CJK>
+<U81AE> \x8F\xD6\xD1 |0 # <CJK>
+<U81B2> \x8F\xD6\xD2 |0 # <CJK>
+<U81B4> \x8F\xD6\xD3 |0 # <CJK>
+<U81BB> \x8F\xD6\xD4 |0 # <CJK>
+<U81CB> \x8F\xD6\xD5 |0 # <CJK>
+<U81C3> \x8F\xD6\xD6 |0 # <CJK>
+<U81C5> \x8F\xD6\xD7 |0 # <CJK>
+<U81CA> \x8F\xD6\xD8 |0 # <CJK>
+<U81CE> \x8F\xD6\xD9 |0 # <CJK>
+<U81CF> \x8F\xD6\xDA |0 # <CJK>
+<U81D5> \x8F\xD6\xDB |0 # <CJK>
+<U81D7> \x8F\xD6\xDC |0 # <CJK>
+<U81DB> \x8F\xD6\xDD |0 # <CJK>
+<U81DD> \x8F\xD6\xDE |0 # <CJK>
+<U81DE> \x8F\xD6\xDF |0 # <CJK>
+<U81E1> \x8F\xD6\xE0 |0 # <CJK>
+<U81E4> \x8F\xD6\xE1 |0 # <CJK>
+<U81EB> \x8F\xD6\xE2 |0 # <CJK>
+<U81EC> \x8F\xD6\xE3 |0 # <CJK>
+<U81F0> \x8F\xD6\xE4 |0 # <CJK>
+<U81F1> \x8F\xD6\xE5 |0 # <CJK>
+<U81F2> \x8F\xD6\xE6 |0 # <CJK>
+<U81F5> \x8F\xD6\xE7 |0 # <CJK>
+<U81F6> \x8F\xD6\xE8 |0 # <CJK>
+<U81F8> \x8F\xD6\xE9 |0 # <CJK>
+<U81F9> \x8F\xD6\xEA |0 # <CJK>
+<U81FD> \x8F\xD6\xEB |0 # <CJK>
+<U81FF> \x8F\xD6\xEC |0 # <CJK>
+<U8200> \x8F\xD6\xED |0 # <CJK>
+<U8203> \x8F\xD6\xEE |0 # <CJK>
+<U820F> \x8F\xD6\xEF |0 # <CJK>
+<U8213> \x8F\xD6\xF0 |0 # <CJK>
+<U8214> \x8F\xD6\xF1 |0 # <CJK>
+<U8219> \x8F\xD6\xF2 |0 # <CJK>
+<U821A> \x8F\xD6\xF3 |0 # <CJK>
+<U821D> \x8F\xD6\xF4 |0 # <CJK>
+<U8221> \x8F\xD6\xF5 |0 # <CJK>
+<U8222> \x8F\xD6\xF6 |0 # <CJK>
+<U8228> \x8F\xD6\xF7 |0 # <CJK>
+<U8232> \x8F\xD6\xF8 |0 # <CJK>
+<U8234> \x8F\xD6\xF9 |0 # <CJK>
+<U823A> \x8F\xD6\xFA |0 # <CJK>
+<U8243> \x8F\xD6\xFB |0 # <CJK>
+<U8244> \x8F\xD6\xFC |0 # <CJK>
+<U8245> \x8F\xD6\xFD |0 # <CJK>
+<U8246> \x8F\xD6\xFE |0 # <CJK>
+<U824B> \x8F\xD7\xA1 |0 # <CJK>
+<U824E> \x8F\xD7\xA2 |0 # <CJK>
+<U824F> \x8F\xD7\xA3 |0 # <CJK>
+<U8251> \x8F\xD7\xA4 |0 # <CJK>
+<U8256> \x8F\xD7\xA5 |0 # <CJK>
+<U825C> \x8F\xD7\xA6 |0 # <CJK>
+<U8260> \x8F\xD7\xA7 |0 # <CJK>
+<U8263> \x8F\xD7\xA8 |0 # <CJK>
+<U8267> \x8F\xD7\xA9 |0 # <CJK>
+<U826D> \x8F\xD7\xAA |0 # <CJK>
+<U8274> \x8F\xD7\xAB |0 # <CJK>
+<U827B> \x8F\xD7\xAC |0 # <CJK>
+<U827D> \x8F\xD7\xAD |0 # <CJK>
+<U827F> \x8F\xD7\xAE |0 # <CJK>
+<U8280> \x8F\xD7\xAF |0 # <CJK>
+<U8281> \x8F\xD7\xB0 |0 # <CJK>
+<U8283> \x8F\xD7\xB1 |0 # <CJK>
+<U8284> \x8F\xD7\xB2 |0 # <CJK>
+<U8287> \x8F\xD7\xB3 |0 # <CJK>
+<U8289> \x8F\xD7\xB4 |0 # <CJK>
+<U828A> \x8F\xD7\xB5 |0 # <CJK>
+<U828E> \x8F\xD7\xB6 |0 # <CJK>
+<U8291> \x8F\xD7\xB7 |0 # <CJK>
+<U8294> \x8F\xD7\xB8 |0 # <CJK>
+<U8296> \x8F\xD7\xB9 |0 # <CJK>
+<U8298> \x8F\xD7\xBA |0 # <CJK>
+<U829A> \x8F\xD7\xBB |0 # <CJK>
+<U829B> \x8F\xD7\xBC |0 # <CJK>
+<U82A0> \x8F\xD7\xBD |0 # <CJK>
+<U82A1> \x8F\xD7\xBE |0 # <CJK>
+<U82A3> \x8F\xD7\xBF |0 # <CJK>
+<U82A4> \x8F\xD7\xC0 |0 # <CJK>
+<U82A7> \x8F\xD7\xC1 |0 # <CJK>
+<U82A8> \x8F\xD7\xC2 |0 # <CJK>
+<U82A9> \x8F\xD7\xC3 |0 # <CJK>
+<U82AA> \x8F\xD7\xC4 |0 # <CJK>
+<U82AE> \x8F\xD7\xC5 |0 # <CJK>
+<U82B0> \x8F\xD7\xC6 |0 # <CJK>
+<U82B2> \x8F\xD7\xC7 |0 # <CJK>
+<U82B4> \x8F\xD7\xC8 |0 # <CJK>
+<U82B7> \x8F\xD7\xC9 |0 # <CJK>
+<U82BA> \x8F\xD7\xCA |0 # <CJK>
+<U82BC> \x8F\xD7\xCB |0 # <CJK>
+<U82BE> \x8F\xD7\xCC |0 # <CJK>
+<U82BF> \x8F\xD7\xCD |0 # <CJK>
+<U82C6> \x8F\xD7\xCE |0 # <CJK>
+<U82D0> \x8F\xD7\xCF |0 # <CJK>
+<U82D5> \x8F\xD7\xD0 |0 # <CJK>
+<U82DA> \x8F\xD7\xD1 |0 # <CJK>
+<U82E0> \x8F\xD7\xD2 |0 # <CJK>
+<U82E2> \x8F\xD7\xD3 |0 # <CJK>
+<U82E4> \x8F\xD7\xD4 |0 # <CJK>
+<U82E8> \x8F\xD7\xD5 |0 # <CJK>
+<U82EA> \x8F\xD7\xD6 |0 # <CJK>
+<U82ED> \x8F\xD7\xD7 |0 # <CJK>
+<U82EF> \x8F\xD7\xD8 |0 # <CJK>
+<U82F6> \x8F\xD7\xD9 |0 # <CJK>
+<U82F7> \x8F\xD7\xDA |0 # <CJK>
+<U82FD> \x8F\xD7\xDB |0 # <CJK>
+<U82FE> \x8F\xD7\xDC |0 # <CJK>
+<U8300> \x8F\xD7\xDD |0 # <CJK>
+<U8301> \x8F\xD7\xDE |0 # <CJK>
+<U8307> \x8F\xD7\xDF |0 # <CJK>
+<U8308> \x8F\xD7\xE0 |0 # <CJK>
+<U830A> \x8F\xD7\xE1 |0 # <CJK>
+<U830B> \x8F\xD7\xE2 |0 # <CJK>
+<U8354> \x8F\xD7\xE3 |0 # <CJK>
+<U831B> \x8F\xD7\xE4 |0 # <CJK>
+<U831D> \x8F\xD7\xE5 |0 # <CJK>
+<U831E> \x8F\xD7\xE6 |0 # <CJK>
+<U831F> \x8F\xD7\xE7 |0 # <CJK>
+<U8321> \x8F\xD7\xE8 |0 # <CJK>
+<U8322> \x8F\xD7\xE9 |0 # <CJK>
+<U832C> \x8F\xD7\xEA |0 # <CJK>
+<U832D> \x8F\xD7\xEB |0 # <CJK>
+<U832E> \x8F\xD7\xEC |0 # <CJK>
+<U8330> \x8F\xD7\xED |0 # <CJK>
+<U8333> \x8F\xD7\xEE |0 # <CJK>
+<U8337> \x8F\xD7\xEF |0 # <CJK>
+<U833A> \x8F\xD7\xF0 |0 # <CJK>
+<U833C> \x8F\xD7\xF1 |0 # <CJK>
+<U833D> \x8F\xD7\xF2 |0 # <CJK>
+<U8342> \x8F\xD7\xF3 |0 # <CJK>
+<U8343> \x8F\xD7\xF4 |0 # <CJK>
+<U8344> \x8F\xD7\xF5 |0 # <CJK>
+<U8347> \x8F\xD7\xF6 |0 # <CJK>
+<U834D> \x8F\xD7\xF7 |0 # <CJK>
+<U834E> \x8F\xD7\xF8 |0 # <CJK>
+<U8351> \x8F\xD7\xF9 |0 # <CJK>
+<U8355> \x8F\xD7\xFA |0 # <CJK>
+<U8356> \x8F\xD7\xFB |0 # <CJK>
+<U8357> \x8F\xD7\xFC |0 # <CJK>
+<U8370> \x8F\xD7\xFD |0 # <CJK>
+<U8378> \x8F\xD7\xFE |0 # <CJK>
+<U837D> \x8F\xD8\xA1 |0 # <CJK>
+<U837F> \x8F\xD8\xA2 |0 # <CJK>
+<U8380> \x8F\xD8\xA3 |0 # <CJK>
+<U8382> \x8F\xD8\xA4 |0 # <CJK>
+<U8384> \x8F\xD8\xA5 |0 # <CJK>
+<U8386> \x8F\xD8\xA6 |0 # <CJK>
+<U838D> \x8F\xD8\xA7 |0 # <CJK>
+<U8392> \x8F\xD8\xA8 |0 # <CJK>
+<U8394> \x8F\xD8\xA9 |0 # <CJK>
+<U8395> \x8F\xD8\xAA |0 # <CJK>
+<U8398> \x8F\xD8\xAB |0 # <CJK>
+<U8399> \x8F\xD8\xAC |0 # <CJK>
+<U839B> \x8F\xD8\xAD |0 # <CJK>
+<U839C> \x8F\xD8\xAE |0 # <CJK>
+<U839D> \x8F\xD8\xAF |0 # <CJK>
+<U83A6> \x8F\xD8\xB0 |0 # <CJK>
+<U83A7> \x8F\xD8\xB1 |0 # <CJK>
+<U83A9> \x8F\xD8\xB2 |0 # <CJK>
+<U83AC> \x8F\xD8\xB3 |0 # <CJK>
+<U83BE> \x8F\xD8\xB4 |0 # <CJK>
+<U83BF> \x8F\xD8\xB5 |0 # <CJK>
+<U83C0> \x8F\xD8\xB6 |0 # <CJK>
+<U83C7> \x8F\xD8\xB7 |0 # <CJK>
+<U83C9> \x8F\xD8\xB8 |0 # <CJK>
+<U83CF> \x8F\xD8\xB9 |0 # <CJK>
+<U83D0> \x8F\xD8\xBA |0 # <CJK>
+<U83D1> \x8F\xD8\xBB |0 # <CJK>
+<U83D4> \x8F\xD8\xBC |0 # <CJK>
+<U83DD> \x8F\xD8\xBD |0 # <CJK>
+<U8353> \x8F\xD8\xBE |0 # <CJK>
+<U83E8> \x8F\xD8\xBF |0 # <CJK>
+<U83EA> \x8F\xD8\xC0 |0 # <CJK>
+<U83F6> \x8F\xD8\xC1 |0 # <CJK>
+<U83F8> \x8F\xD8\xC2 |0 # <CJK>
+<U83F9> \x8F\xD8\xC3 |0 # <CJK>
+<U83FC> \x8F\xD8\xC4 |0 # <CJK>
+<U8401> \x8F\xD8\xC5 |0 # <CJK>
+<U8406> \x8F\xD8\xC6 |0 # <CJK>
+<U840A> \x8F\xD8\xC7 |0 # <CJK>
+<U840F> \x8F\xD8\xC8 |0 # <CJK>
+<U8411> \x8F\xD8\xC9 |0 # <CJK>
+<U8415> \x8F\xD8\xCA |0 # <CJK>
+<U8419> \x8F\xD8\xCB |0 # <CJK>
+<U83AD> \x8F\xD8\xCC |0 # <CJK>
+<U842F> \x8F\xD8\xCD |0 # <CJK>
+<U8439> \x8F\xD8\xCE |0 # <CJK>
+<U8445> \x8F\xD8\xCF |0 # <CJK>
+<U8447> \x8F\xD8\xD0 |0 # <CJK>
+<U8448> \x8F\xD8\xD1 |0 # <CJK>
+<U844A> \x8F\xD8\xD2 |0 # <CJK>
+<U844D> \x8F\xD8\xD3 |0 # <CJK>
+<U844F> \x8F\xD8\xD4 |0 # <CJK>
+<U8451> \x8F\xD8\xD5 |0 # <CJK>
+<U8452> \x8F\xD8\xD6 |0 # <CJK>
+<U8456> \x8F\xD8\xD7 |0 # <CJK>
+<U8458> \x8F\xD8\xD8 |0 # <CJK>
+<U8459> \x8F\xD8\xD9 |0 # <CJK>
+<U845A> \x8F\xD8\xDA |0 # <CJK>
+<U845C> \x8F\xD8\xDB |0 # <CJK>
+<U8460> \x8F\xD8\xDC |0 # <CJK>
+<U8464> \x8F\xD8\xDD |0 # <CJK>
+<U8465> \x8F\xD8\xDE |0 # <CJK>
+<U8467> \x8F\xD8\xDF |0 # <CJK>
+<U846A> \x8F\xD8\xE0 |0 # <CJK>
+<U8470> \x8F\xD8\xE1 |0 # <CJK>
+<U8473> \x8F\xD8\xE2 |0 # <CJK>
+<U8474> \x8F\xD8\xE3 |0 # <CJK>
+<U8476> \x8F\xD8\xE4 |0 # <CJK>
+<U8478> \x8F\xD8\xE5 |0 # <CJK>
+<U847C> \x8F\xD8\xE6 |0 # <CJK>
+<U847D> \x8F\xD8\xE7 |0 # <CJK>
+<U8481> \x8F\xD8\xE8 |0 # <CJK>
+<U8485> \x8F\xD8\xE9 |0 # <CJK>
+<U8492> \x8F\xD8\xEA |0 # <CJK>
+<U8493> \x8F\xD8\xEB |0 # <CJK>
+<U8495> \x8F\xD8\xEC |0 # <CJK>
+<U849E> \x8F\xD8\xED |0 # <CJK>
+<U84A6> \x8F\xD8\xEE |0 # <CJK>
+<U84A8> \x8F\xD8\xEF |0 # <CJK>
+<U84A9> \x8F\xD8\xF0 |0 # <CJK>
+<U84AA> \x8F\xD8\xF1 |0 # <CJK>
+<U84AF> \x8F\xD8\xF2 |0 # <CJK>
+<U84B1> \x8F\xD8\xF3 |0 # <CJK>
+<U84B4> \x8F\xD8\xF4 |0 # <CJK>
+<U84BA> \x8F\xD8\xF5 |0 # <CJK>
+<U84BD> \x8F\xD8\xF6 |0 # <CJK>
+<U84BE> \x8F\xD8\xF7 |0 # <CJK>
+<U84C0> \x8F\xD8\xF8 |0 # <CJK>
+<U84C2> \x8F\xD8\xF9 |0 # <CJK>
+<U84C7> \x8F\xD8\xFA |0 # <CJK>
+<U84C8> \x8F\xD8\xFB |0 # <CJK>
+<U84CC> \x8F\xD8\xFC |0 # <CJK>
+<U84CF> \x8F\xD8\xFD |0 # <CJK>
+<U84D3> \x8F\xD8\xFE |0 # <CJK>
+<U84DC> \x8F\xD9\xA1 |0 # <CJK>
+<U84E7> \x8F\xD9\xA2 |0 # <CJK>
+<U84EA> \x8F\xD9\xA3 |0 # <CJK>
+<U84EF> \x8F\xD9\xA4 |0 # <CJK>
+<U84F0> \x8F\xD9\xA5 |0 # <CJK>
+<U84F1> \x8F\xD9\xA6 |0 # <CJK>
+<U84F2> \x8F\xD9\xA7 |0 # <CJK>
+<U84F7> \x8F\xD9\xA8 |0 # <CJK>
+<U8532> \x8F\xD9\xA9 |0 # <CJK>
+<U84FA> \x8F\xD9\xAA |0 # <CJK>
+<U84FB> \x8F\xD9\xAB |0 # <CJK>
+<U84FD> \x8F\xD9\xAC |0 # <CJK>
+<U8502> \x8F\xD9\xAD |0 # <CJK>
+<U8503> \x8F\xD9\xAE |0 # <CJK>
+<U8507> \x8F\xD9\xAF |0 # <CJK>
+<U850C> \x8F\xD9\xB0 |0 # <CJK>
+<U850E> \x8F\xD9\xB1 |0 # <CJK>
+<U8510> \x8F\xD9\xB2 |0 # <CJK>
+<U851C> \x8F\xD9\xB3 |0 # <CJK>
+<U851E> \x8F\xD9\xB4 |0 # <CJK>
+<U8522> \x8F\xD9\xB5 |0 # <CJK>
+<U8523> \x8F\xD9\xB6 |0 # <CJK>
+<U8524> \x8F\xD9\xB7 |0 # <CJK>
+<U8525> \x8F\xD9\xB8 |0 # <CJK>
+<U8527> \x8F\xD9\xB9 |0 # <CJK>
+<U852A> \x8F\xD9\xBA |0 # <CJK>
+<U852B> \x8F\xD9\xBB |0 # <CJK>
+<U852F> \x8F\xD9\xBC |0 # <CJK>
+<U8533> \x8F\xD9\xBD |0 # <CJK>
+<U8534> \x8F\xD9\xBE |0 # <CJK>
+<U8536> \x8F\xD9\xBF |0 # <CJK>
+<U853F> \x8F\xD9\xC0 |0 # <CJK>
+<U8546> \x8F\xD9\xC1 |0 # <CJK>
+<U854F> \x8F\xD9\xC2 |0 # <CJK>
+<U8550> \x8F\xD9\xC3 |0 # <CJK>
+<U8551> \x8F\xD9\xC4 |0 # <CJK>
+<U8552> \x8F\xD9\xC5 |0 # <CJK>
+<U8553> \x8F\xD9\xC6 |0 # <CJK>
+<U8556> \x8F\xD9\xC7 |0 # <CJK>
+<U8559> \x8F\xD9\xC8 |0 # <CJK>
+<U855C> \x8F\xD9\xC9 |0 # <CJK>
+<U855D> \x8F\xD9\xCA |0 # <CJK>
+<U855E> \x8F\xD9\xCB |0 # <CJK>
+<U855F> \x8F\xD9\xCC |0 # <CJK>
+<U8560> \x8F\xD9\xCD |0 # <CJK>
+<U8561> \x8F\xD9\xCE |0 # <CJK>
+<U8562> \x8F\xD9\xCF |0 # <CJK>
+<U8564> \x8F\xD9\xD0 |0 # <CJK>
+<U856B> \x8F\xD9\xD1 |0 # <CJK>
+<U856F> \x8F\xD9\xD2 |0 # <CJK>
+<U8579> \x8F\xD9\xD3 |0 # <CJK>
+<U857A> \x8F\xD9\xD4 |0 # <CJK>
+<U857B> \x8F\xD9\xD5 |0 # <CJK>
+<U857D> \x8F\xD9\xD6 |0 # <CJK>
+<U857F> \x8F\xD9\xD7 |0 # <CJK>
+<U8581> \x8F\xD9\xD8 |0 # <CJK>
+<U8585> \x8F\xD9\xD9 |0 # <CJK>
+<U8586> \x8F\xD9\xDA |0 # <CJK>
+<U8589> \x8F\xD9\xDB |0 # <CJK>
+<U858B> \x8F\xD9\xDC |0 # <CJK>
+<U858C> \x8F\xD9\xDD |0 # <CJK>
+<U858F> \x8F\xD9\xDE |0 # <CJK>
+<U8593> \x8F\xD9\xDF |0 # <CJK>
+<U8598> \x8F\xD9\xE0 |0 # <CJK>
+<U859D> \x8F\xD9\xE1 |0 # <CJK>
+<U859F> \x8F\xD9\xE2 |0 # <CJK>
+<U85A0> \x8F\xD9\xE3 |0 # <CJK>
+<U85A2> \x8F\xD9\xE4 |0 # <CJK>
+<U85A5> \x8F\xD9\xE5 |0 # <CJK>
+<U85A7> \x8F\xD9\xE6 |0 # <CJK>
+<U85B4> \x8F\xD9\xE7 |0 # <CJK>
+<U85B6> \x8F\xD9\xE8 |0 # <CJK>
+<U85B7> \x8F\xD9\xE9 |0 # <CJK>
+<U85B8> \x8F\xD9\xEA |0 # <CJK>
+<U85BC> \x8F\xD9\xEB |0 # <CJK>
+<U85BD> \x8F\xD9\xEC |0 # <CJK>
+<U85BE> \x8F\xD9\xED |0 # <CJK>
+<U85BF> \x8F\xD9\xEE |0 # <CJK>
+<U85C2> \x8F\xD9\xEF |0 # <CJK>
+<U85C7> \x8F\xD9\xF0 |0 # <CJK>
+<U85CA> \x8F\xD9\xF1 |0 # <CJK>
+<U85CB> \x8F\xD9\xF2 |0 # <CJK>
+<U85CE> \x8F\xD9\xF3 |0 # <CJK>
+<U85AD> \x8F\xD9\xF4 |0 # <CJK>
+<U85D8> \x8F\xD9\xF5 |0 # <CJK>
+<U85DA> \x8F\xD9\xF6 |0 # <CJK>
+<U85DF> \x8F\xD9\xF7 |0 # <CJK>
+<U85E0> \x8F\xD9\xF8 |0 # <CJK>
+<U85E6> \x8F\xD9\xF9 |0 # <CJK>
+<U85E8> \x8F\xD9\xFA |0 # <CJK>
+<U85ED> \x8F\xD9\xFB |0 # <CJK>
+<U85F3> \x8F\xD9\xFC |0 # <CJK>
+<U85F6> \x8F\xD9\xFD |0 # <CJK>
+<U85FC> \x8F\xD9\xFE |0 # <CJK>
+<U85FF> \x8F\xDA\xA1 |0 # <CJK>
+<U8600> \x8F\xDA\xA2 |0 # <CJK>
+<U8604> \x8F\xDA\xA3 |0 # <CJK>
+<U8605> \x8F\xDA\xA4 |0 # <CJK>
+<U860D> \x8F\xDA\xA5 |0 # <CJK>
+<U860E> \x8F\xDA\xA6 |0 # <CJK>
+<U8610> \x8F\xDA\xA7 |0 # <CJK>
+<U8611> \x8F\xDA\xA8 |0 # <CJK>
+<U8612> \x8F\xDA\xA9 |0 # <CJK>
+<U8618> \x8F\xDA\xAA |0 # <CJK>
+<U8619> \x8F\xDA\xAB |0 # <CJK>
+<U861B> \x8F\xDA\xAC |0 # <CJK>
+<U861E> \x8F\xDA\xAD |0 # <CJK>
+<U8621> \x8F\xDA\xAE |0 # <CJK>
+<U8627> \x8F\xDA\xAF |0 # <CJK>
+<U8629> \x8F\xDA\xB0 |0 # <CJK>
+<U8636> \x8F\xDA\xB1 |0 # <CJK>
+<U8638> \x8F\xDA\xB2 |0 # <CJK>
+<U863A> \x8F\xDA\xB3 |0 # <CJK>
+<U863C> \x8F\xDA\xB4 |0 # <CJK>
+<U863D> \x8F\xDA\xB5 |0 # <CJK>
+<U8640> \x8F\xDA\xB6 |0 # <CJK>
+<U8642> \x8F\xDA\xB7 |0 # <CJK>
+<U8646> \x8F\xDA\xB8 |0 # <CJK>
+<U8652> \x8F\xDA\xB9 |0 # <CJK>
+<U8653> \x8F\xDA\xBA |0 # <CJK>
+<U8656> \x8F\xDA\xBB |0 # <CJK>
+<U8657> \x8F\xDA\xBC |0 # <CJK>
+<U8658> \x8F\xDA\xBD |0 # <CJK>
+<U8659> \x8F\xDA\xBE |0 # <CJK>
+<U865D> \x8F\xDA\xBF |0 # <CJK>
+<U8660> \x8F\xDA\xC0 |0 # <CJK>
+<U8661> \x8F\xDA\xC1 |0 # <CJK>
+<U8662> \x8F\xDA\xC2 |0 # <CJK>
+<U8663> \x8F\xDA\xC3 |0 # <CJK>
+<U8664> \x8F\xDA\xC4 |0 # <CJK>
+<U8669> \x8F\xDA\xC5 |0 # <CJK>
+<U866C> \x8F\xDA\xC6 |0 # <CJK>
+<U866F> \x8F\xDA\xC7 |0 # <CJK>
+<U8675> \x8F\xDA\xC8 |0 # <CJK>
+<U8676> \x8F\xDA\xC9 |0 # <CJK>
+<U8677> \x8F\xDA\xCA |0 # <CJK>
+<U867A> \x8F\xDA\xCB |0 # <CJK>
+<U868D> \x8F\xDA\xCC |0 # <CJK>
+<U8691> \x8F\xDA\xCD |0 # <CJK>
+<U8696> \x8F\xDA\xCE |0 # <CJK>
+<U8698> \x8F\xDA\xCF |0 # <CJK>
+<U869A> \x8F\xDA\xD0 |0 # <CJK>
+<U869C> \x8F\xDA\xD1 |0 # <CJK>
+<U86A1> \x8F\xDA\xD2 |0 # <CJK>
+<U86A6> \x8F\xDA\xD3 |0 # <CJK>
+<U86A7> \x8F\xDA\xD4 |0 # <CJK>
+<U86A8> \x8F\xDA\xD5 |0 # <CJK>
+<U86AD> \x8F\xDA\xD6 |0 # <CJK>
+<U86B1> \x8F\xDA\xD7 |0 # <CJK>
+<U86B3> \x8F\xDA\xD8 |0 # <CJK>
+<U86B4> \x8F\xDA\xD9 |0 # <CJK>
+<U86B5> \x8F\xDA\xDA |0 # <CJK>
+<U86B7> \x8F\xDA\xDB |0 # <CJK>
+<U86B8> \x8F\xDA\xDC |0 # <CJK>
+<U86B9> \x8F\xDA\xDD |0 # <CJK>
+<U86BF> \x8F\xDA\xDE |0 # <CJK>
+<U86C0> \x8F\xDA\xDF |0 # <CJK>
+<U86C1> \x8F\xDA\xE0 |0 # <CJK>
+<U86C3> \x8F\xDA\xE1 |0 # <CJK>
+<U86C5> \x8F\xDA\xE2 |0 # <CJK>
+<U86D1> \x8F\xDA\xE3 |0 # <CJK>
+<U86D2> \x8F\xDA\xE4 |0 # <CJK>
+<U86D5> \x8F\xDA\xE5 |0 # <CJK>
+<U86D7> \x8F\xDA\xE6 |0 # <CJK>
+<U86DA> \x8F\xDA\xE7 |0 # <CJK>
+<U86DC> \x8F\xDA\xE8 |0 # <CJK>
+<U86E0> \x8F\xDA\xE9 |0 # <CJK>
+<U86E3> \x8F\xDA\xEA |0 # <CJK>
+<U86E5> \x8F\xDA\xEB |0 # <CJK>
+<U86E7> \x8F\xDA\xEC |0 # <CJK>
+<U8688> \x8F\xDA\xED |0 # <CJK>
+<U86FA> \x8F\xDA\xEE |0 # <CJK>
+<U86FC> \x8F\xDA\xEF |0 # <CJK>
+<U86FD> \x8F\xDA\xF0 |0 # <CJK>
+<U8704> \x8F\xDA\xF1 |0 # <CJK>
+<U8705> \x8F\xDA\xF2 |0 # <CJK>
+<U8707> \x8F\xDA\xF3 |0 # <CJK>
+<U870B> \x8F\xDA\xF4 |0 # <CJK>
+<U870E> \x8F\xDA\xF5 |0 # <CJK>
+<U870F> \x8F\xDA\xF6 |0 # <CJK>
+<U8710> \x8F\xDA\xF7 |0 # <CJK>
+<U8713> \x8F\xDA\xF8 |0 # <CJK>
+<U8714> \x8F\xDA\xF9 |0 # <CJK>
+<U8719> \x8F\xDA\xFA |0 # <CJK>
+<U871E> \x8F\xDA\xFB |0 # <CJK>
+<U871F> \x8F\xDA\xFC |0 # <CJK>
+<U8721> \x8F\xDA\xFD |0 # <CJK>
+<U8723> \x8F\xDA\xFE |0 # <CJK>
+<U8728> \x8F\xDB\xA1 |0 # <CJK>
+<U872E> \x8F\xDB\xA2 |0 # <CJK>
+<U872F> \x8F\xDB\xA3 |0 # <CJK>
+<U8731> \x8F\xDB\xA4 |0 # <CJK>
+<U8732> \x8F\xDB\xA5 |0 # <CJK>
+<U8739> \x8F\xDB\xA6 |0 # <CJK>
+<U873A> \x8F\xDB\xA7 |0 # <CJK>
+<U873C> \x8F\xDB\xA8 |0 # <CJK>
+<U873D> \x8F\xDB\xA9 |0 # <CJK>
+<U873E> \x8F\xDB\xAA |0 # <CJK>
+<U8740> \x8F\xDB\xAB |0 # <CJK>
+<U8743> \x8F\xDB\xAC |0 # <CJK>
+<U8745> \x8F\xDB\xAD |0 # <CJK>
+<U874D> \x8F\xDB\xAE |0 # <CJK>
+<U8758> \x8F\xDB\xAF |0 # <CJK>
+<U875D> \x8F\xDB\xB0 |0 # <CJK>
+<U8761> \x8F\xDB\xB1 |0 # <CJK>
+<U8764> \x8F\xDB\xB2 |0 # <CJK>
+<U8765> \x8F\xDB\xB3 |0 # <CJK>
+<U876F> \x8F\xDB\xB4 |0 # <CJK>
+<U8771> \x8F\xDB\xB5 |0 # <CJK>
+<U8772> \x8F\xDB\xB6 |0 # <CJK>
+<U877B> \x8F\xDB\xB7 |0 # <CJK>
+<U8783> \x8F\xDB\xB8 |0 # <CJK>
+<U8784> \x8F\xDB\xB9 |0 # <CJK>
+<U8785> \x8F\xDB\xBA |0 # <CJK>
+<U8786> \x8F\xDB\xBB |0 # <CJK>
+<U8787> \x8F\xDB\xBC |0 # <CJK>
+<U8788> \x8F\xDB\xBD |0 # <CJK>
+<U8789> \x8F\xDB\xBE |0 # <CJK>
+<U878B> \x8F\xDB\xBF |0 # <CJK>
+<U878C> \x8F\xDB\xC0 |0 # <CJK>
+<U8790> \x8F\xDB\xC1 |0 # <CJK>
+<U8793> \x8F\xDB\xC2 |0 # <CJK>
+<U8795> \x8F\xDB\xC3 |0 # <CJK>
+<U8797> \x8F\xDB\xC4 |0 # <CJK>
+<U8798> \x8F\xDB\xC5 |0 # <CJK>
+<U8799> \x8F\xDB\xC6 |0 # <CJK>
+<U879E> \x8F\xDB\xC7 |0 # <CJK>
+<U87A0> \x8F\xDB\xC8 |0 # <CJK>
+<U87A3> \x8F\xDB\xC9 |0 # <CJK>
+<U87A7> \x8F\xDB\xCA |0 # <CJK>
+<U87AC> \x8F\xDB\xCB |0 # <CJK>
+<U87AD> \x8F\xDB\xCC |0 # <CJK>
+<U87AE> \x8F\xDB\xCD |0 # <CJK>
+<U87B1> \x8F\xDB\xCE |0 # <CJK>
+<U87B5> \x8F\xDB\xCF |0 # <CJK>
+<U87BE> \x8F\xDB\xD0 |0 # <CJK>
+<U87BF> \x8F\xDB\xD1 |0 # <CJK>
+<U87C1> \x8F\xDB\xD2 |0 # <CJK>
+<U87C8> \x8F\xDB\xD3 |0 # <CJK>
+<U87C9> \x8F\xDB\xD4 |0 # <CJK>
+<U87CA> \x8F\xDB\xD5 |0 # <CJK>
+<U87CE> \x8F\xDB\xD6 |0 # <CJK>
+<U87D5> \x8F\xDB\xD7 |0 # <CJK>
+<U87D6> \x8F\xDB\xD8 |0 # <CJK>
+<U87D9> \x8F\xDB\xD9 |0 # <CJK>
+<U87DA> \x8F\xDB\xDA |0 # <CJK>
+<U87DC> \x8F\xDB\xDB |0 # <CJK>
+<U87DF> \x8F\xDB\xDC |0 # <CJK>
+<U87E2> \x8F\xDB\xDD |0 # <CJK>
+<U87E3> \x8F\xDB\xDE |0 # <CJK>
+<U87E4> \x8F\xDB\xDF |0 # <CJK>
+<U87EA> \x8F\xDB\xE0 |0 # <CJK>
+<U87EB> \x8F\xDB\xE1 |0 # <CJK>
+<U87ED> \x8F\xDB\xE2 |0 # <CJK>
+<U87F1> \x8F\xDB\xE3 |0 # <CJK>
+<U87F3> \x8F\xDB\xE4 |0 # <CJK>
+<U87F8> \x8F\xDB\xE5 |0 # <CJK>
+<U87FA> \x8F\xDB\xE6 |0 # <CJK>
+<U87FF> \x8F\xDB\xE7 |0 # <CJK>
+<U8801> \x8F\xDB\xE8 |0 # <CJK>
+<U8803> \x8F\xDB\xE9 |0 # <CJK>
+<U8806> \x8F\xDB\xEA |0 # <CJK>
+<U8809> \x8F\xDB\xEB |0 # <CJK>
+<U880A> \x8F\xDB\xEC |0 # <CJK>
+<U880B> \x8F\xDB\xED |0 # <CJK>
+<U8810> \x8F\xDB\xEE |0 # <CJK>
+<U8819> \x8F\xDB\xEF |0 # <CJK>
+<U8812> \x8F\xDB\xF0 |0 # <CJK>
+<U8813> \x8F\xDB\xF1 |0 # <CJK>
+<U8814> \x8F\xDB\xF2 |0 # <CJK>
+<U8818> \x8F\xDB\xF3 |0 # <CJK>
+<U881A> \x8F\xDB\xF4 |0 # <CJK>
+<U881B> \x8F\xDB\xF5 |0 # <CJK>
+<U881C> \x8F\xDB\xF6 |0 # <CJK>
+<U881E> \x8F\xDB\xF7 |0 # <CJK>
+<U881F> \x8F\xDB\xF8 |0 # <CJK>
+<U8828> \x8F\xDB\xF9 |0 # <CJK>
+<U882D> \x8F\xDB\xFA |0 # <CJK>
+<U882E> \x8F\xDB\xFB |0 # <CJK>
+<U8830> \x8F\xDB\xFC |0 # <CJK>
+<U8832> \x8F\xDB\xFD |0 # <CJK>
+<U8835> \x8F\xDB\xFE |0 # <CJK>
+<U883A> \x8F\xDC\xA1 |0 # <CJK>
+<U883C> \x8F\xDC\xA2 |0 # <CJK>
+<U8841> \x8F\xDC\xA3 |0 # <CJK>
+<U8843> \x8F\xDC\xA4 |0 # <CJK>
+<U8845> \x8F\xDC\xA5 |0 # <CJK>
+<U8848> \x8F\xDC\xA6 |0 # <CJK>
+<U8849> \x8F\xDC\xA7 |0 # <CJK>
+<U884A> \x8F\xDC\xA8 |0 # <CJK>
+<U884B> \x8F\xDC\xA9 |0 # <CJK>
+<U884E> \x8F\xDC\xAA |0 # <CJK>
+<U8851> \x8F\xDC\xAB |0 # <CJK>
+<U8855> \x8F\xDC\xAC |0 # <CJK>
+<U8856> \x8F\xDC\xAD |0 # <CJK>
+<U8858> \x8F\xDC\xAE |0 # <CJK>
+<U885A> \x8F\xDC\xAF |0 # <CJK>
+<U885C> \x8F\xDC\xB0 |0 # <CJK>
+<U885F> \x8F\xDC\xB1 |0 # <CJK>
+<U8860> \x8F\xDC\xB2 |0 # <CJK>
+<U8864> \x8F\xDC\xB3 |0 # <CJK>
+<U8869> \x8F\xDC\xB4 |0 # <CJK>
+<U8871> \x8F\xDC\xB5 |0 # <CJK>
+<U8879> \x8F\xDC\xB6 |0 # <CJK>
+<U887B> \x8F\xDC\xB7 |0 # <CJK>
+<U8880> \x8F\xDC\xB8 |0 # <CJK>
+<U8898> \x8F\xDC\xB9 |0 # <CJK>
+<U889A> \x8F\xDC\xBA |0 # <CJK>
+<U889B> \x8F\xDC\xBB |0 # <CJK>
+<U889C> \x8F\xDC\xBC |0 # <CJK>
+<U889F> \x8F\xDC\xBD |0 # <CJK>
+<U88A0> \x8F\xDC\xBE |0 # <CJK>
+<U88A8> \x8F\xDC\xBF |0 # <CJK>
+<U88AA> \x8F\xDC\xC0 |0 # <CJK>
+<U88BA> \x8F\xDC\xC1 |0 # <CJK>
+<U88BD> \x8F\xDC\xC2 |0 # <CJK>
+<U88BE> \x8F\xDC\xC3 |0 # <CJK>
+<U88C0> \x8F\xDC\xC4 |0 # <CJK>
+<U88CA> \x8F\xDC\xC5 |0 # <CJK>
+<U88CB> \x8F\xDC\xC6 |0 # <CJK>
+<U88CC> \x8F\xDC\xC7 |0 # <CJK>
+<U88CD> \x8F\xDC\xC8 |0 # <CJK>
+<U88CE> \x8F\xDC\xC9 |0 # <CJK>
+<U88D1> \x8F\xDC\xCA |0 # <CJK>
+<U88D2> \x8F\xDC\xCB |0 # <CJK>
+<U88D3> \x8F\xDC\xCC |0 # <CJK>
+<U88DB> \x8F\xDC\xCD |0 # <CJK>
+<U88DE> \x8F\xDC\xCE |0 # <CJK>
+<U88E7> \x8F\xDC\xCF |0 # <CJK>
+<U88EF> \x8F\xDC\xD0 |0 # <CJK>
+<U88F0> \x8F\xDC\xD1 |0 # <CJK>
+<U88F1> \x8F\xDC\xD2 |0 # <CJK>
+<U88F5> \x8F\xDC\xD3 |0 # <CJK>
+<U88F7> \x8F\xDC\xD4 |0 # <CJK>
+<U8901> \x8F\xDC\xD5 |0 # <CJK>
+<U8906> \x8F\xDC\xD6 |0 # <CJK>
+<U890D> \x8F\xDC\xD7 |0 # <CJK>
+<U890E> \x8F\xDC\xD8 |0 # <CJK>
+<U890F> \x8F\xDC\xD9 |0 # <CJK>
+<U8915> \x8F\xDC\xDA |0 # <CJK>
+<U8916> \x8F\xDC\xDB |0 # <CJK>
+<U8918> \x8F\xDC\xDC |0 # <CJK>
+<U8919> \x8F\xDC\xDD |0 # <CJK>
+<U891A> \x8F\xDC\xDE |0 # <CJK>
+<U891C> \x8F\xDC\xDF |0 # <CJK>
+<U8920> \x8F\xDC\xE0 |0 # <CJK>
+<U8926> \x8F\xDC\xE1 |0 # <CJK>
+<U8927> \x8F\xDC\xE2 |0 # <CJK>
+<U8928> \x8F\xDC\xE3 |0 # <CJK>
+<U8930> \x8F\xDC\xE4 |0 # <CJK>
+<U8931> \x8F\xDC\xE5 |0 # <CJK>
+<U8932> \x8F\xDC\xE6 |0 # <CJK>
+<U8935> \x8F\xDC\xE7 |0 # <CJK>
+<U8939> \x8F\xDC\xE8 |0 # <CJK>
+<U893A> \x8F\xDC\xE9 |0 # <CJK>
+<U893E> \x8F\xDC\xEA |0 # <CJK>
+<U8940> \x8F\xDC\xEB |0 # <CJK>
+<U8942> \x8F\xDC\xEC |0 # <CJK>
+<U8945> \x8F\xDC\xED |0 # <CJK>
+<U8946> \x8F\xDC\xEE |0 # <CJK>
+<U8949> \x8F\xDC\xEF |0 # <CJK>
+<U894F> \x8F\xDC\xF0 |0 # <CJK>
+<U8952> \x8F\xDC\xF1 |0 # <CJK>
+<U8957> \x8F\xDC\xF2 |0 # <CJK>
+<U895A> \x8F\xDC\xF3 |0 # <CJK>
+<U895B> \x8F\xDC\xF4 |0 # <CJK>
+<U895C> \x8F\xDC\xF5 |0 # <CJK>
+<U8961> \x8F\xDC\xF6 |0 # <CJK>
+<U8962> \x8F\xDC\xF7 |0 # <CJK>
+<U8963> \x8F\xDC\xF8 |0 # <CJK>
+<U896B> \x8F\xDC\xF9 |0 # <CJK>
+<U896E> \x8F\xDC\xFA |0 # <CJK>
+<U8970> \x8F\xDC\xFB |0 # <CJK>
+<U8973> \x8F\xDC\xFC |0 # <CJK>
+<U8975> \x8F\xDC\xFD |0 # <CJK>
+<U897A> \x8F\xDC\xFE |0 # <CJK>
+<U897B> \x8F\xDD\xA1 |0 # <CJK>
+<U897C> \x8F\xDD\xA2 |0 # <CJK>
+<U897D> \x8F\xDD\xA3 |0 # <CJK>
+<U8989> \x8F\xDD\xA4 |0 # <CJK>
+<U898D> \x8F\xDD\xA5 |0 # <CJK>
+<U8990> \x8F\xDD\xA6 |0 # <CJK>
+<U8994> \x8F\xDD\xA7 |0 # <CJK>
+<U8995> \x8F\xDD\xA8 |0 # <CJK>
+<U899B> \x8F\xDD\xA9 |0 # <CJK>
+<U899C> \x8F\xDD\xAA |0 # <CJK>
+<U899F> \x8F\xDD\xAB |0 # <CJK>
+<U89A0> \x8F\xDD\xAC |0 # <CJK>
+<U89A5> \x8F\xDD\xAD |0 # <CJK>
+<U89B0> \x8F\xDD\xAE |0 # <CJK>
+<U89B4> \x8F\xDD\xAF |0 # <CJK>
+<U89B5> \x8F\xDD\xB0 |0 # <CJK>
+<U89B6> \x8F\xDD\xB1 |0 # <CJK>
+<U89B7> \x8F\xDD\xB2 |0 # <CJK>
+<U89BC> \x8F\xDD\xB3 |0 # <CJK>
+<U89D4> \x8F\xDD\xB4 |0 # <CJK>
+<U89D5> \x8F\xDD\xB5 |0 # <CJK>
+<U89D6> \x8F\xDD\xB6 |0 # <CJK>
+<U89D7> \x8F\xDD\xB7 |0 # <CJK>
+<U89D8> \x8F\xDD\xB8 |0 # <CJK>
+<U89E5> \x8F\xDD\xB9 |0 # <CJK>
+<U89E9> \x8F\xDD\xBA |0 # <CJK>
+<U89EB> \x8F\xDD\xBB |0 # <CJK>
+<U89ED> \x8F\xDD\xBC |0 # <CJK>
+<U89F1> \x8F\xDD\xBD |0 # <CJK>
+<U89F3> \x8F\xDD\xBE |0 # <CJK>
+<U89F6> \x8F\xDD\xBF |0 # <CJK>
+<U89F9> \x8F\xDD\xC0 |0 # <CJK>
+<U89FD> \x8F\xDD\xC1 |0 # <CJK>
+<U89FF> \x8F\xDD\xC2 |0 # <CJK>
+<U8A04> \x8F\xDD\xC3 |0 # <CJK>
+<U8A05> \x8F\xDD\xC4 |0 # <CJK>
+<U8A07> \x8F\xDD\xC5 |0 # <CJK>
+<U8A0F> \x8F\xDD\xC6 |0 # <CJK>
+<U8A11> \x8F\xDD\xC7 |0 # <CJK>
+<U8A12> \x8F\xDD\xC8 |0 # <CJK>
+<U8A14> \x8F\xDD\xC9 |0 # <CJK>
+<U8A15> \x8F\xDD\xCA |0 # <CJK>
+<U8A1E> \x8F\xDD\xCB |0 # <CJK>
+<U8A20> \x8F\xDD\xCC |0 # <CJK>
+<U8A22> \x8F\xDD\xCD |0 # <CJK>
+<U8A24> \x8F\xDD\xCE |0 # <CJK>
+<U8A26> \x8F\xDD\xCF |0 # <CJK>
+<U8A2B> \x8F\xDD\xD0 |0 # <CJK>
+<U8A2C> \x8F\xDD\xD1 |0 # <CJK>
+<U8A2F> \x8F\xDD\xD2 |0 # <CJK>
+<U8A35> \x8F\xDD\xD3 |0 # <CJK>
+<U8A37> \x8F\xDD\xD4 |0 # <CJK>
+<U8A3D> \x8F\xDD\xD5 |0 # <CJK>
+<U8A3E> \x8F\xDD\xD6 |0 # <CJK>
+<U8A40> \x8F\xDD\xD7 |0 # <CJK>
+<U8A43> \x8F\xDD\xD8 |0 # <CJK>
+<U8A45> \x8F\xDD\xD9 |0 # <CJK>
+<U8A47> \x8F\xDD\xDA |0 # <CJK>
+<U8A49> \x8F\xDD\xDB |0 # <CJK>
+<U8A4D> \x8F\xDD\xDC |0 # <CJK>
+<U8A4E> \x8F\xDD\xDD |0 # <CJK>
+<U8A53> \x8F\xDD\xDE |0 # <CJK>
+<U8A56> \x8F\xDD\xDF |0 # <CJK>
+<U8A57> \x8F\xDD\xE0 |0 # <CJK>
+<U8A58> \x8F\xDD\xE1 |0 # <CJK>
+<U8A5C> \x8F\xDD\xE2 |0 # <CJK>
+<U8A5D> \x8F\xDD\xE3 |0 # <CJK>
+<U8A61> \x8F\xDD\xE4 |0 # <CJK>
+<U8A65> \x8F\xDD\xE5 |0 # <CJK>
+<U8A67> \x8F\xDD\xE6 |0 # <CJK>
+<U8A75> \x8F\xDD\xE7 |0 # <CJK>
+<U8A76> \x8F\xDD\xE8 |0 # <CJK>
+<U8A77> \x8F\xDD\xE9 |0 # <CJK>
+<U8A79> \x8F\xDD\xEA |0 # <CJK>
+<U8A7A> \x8F\xDD\xEB |0 # <CJK>
+<U8A7B> \x8F\xDD\xEC |0 # <CJK>
+<U8A7E> \x8F\xDD\xED |0 # <CJK>
+<U8A7F> \x8F\xDD\xEE |0 # <CJK>
+<U8A80> \x8F\xDD\xEF |0 # <CJK>
+<U8A83> \x8F\xDD\xF0 |0 # <CJK>
+<U8A86> \x8F\xDD\xF1 |0 # <CJK>
+<U8A8B> \x8F\xDD\xF2 |0 # <CJK>
+<U8A8F> \x8F\xDD\xF3 |0 # <CJK>
+<U8A90> \x8F\xDD\xF4 |0 # <CJK>
+<U8A92> \x8F\xDD\xF5 |0 # <CJK>
+<U8A96> \x8F\xDD\xF6 |0 # <CJK>
+<U8A97> \x8F\xDD\xF7 |0 # <CJK>
+<U8A99> \x8F\xDD\xF8 |0 # <CJK>
+<U8A9F> \x8F\xDD\xF9 |0 # <CJK>
+<U8AA7> \x8F\xDD\xFA |0 # <CJK>
+<U8AA9> \x8F\xDD\xFB |0 # <CJK>
+<U8AAE> \x8F\xDD\xFC |0 # <CJK>
+<U8AAF> \x8F\xDD\xFD |0 # <CJK>
+<U8AB3> \x8F\xDD\xFE |0 # <CJK>
+<U8AB6> \x8F\xDE\xA1 |0 # <CJK>
+<U8AB7> \x8F\xDE\xA2 |0 # <CJK>
+<U8ABB> \x8F\xDE\xA3 |0 # <CJK>
+<U8ABE> \x8F\xDE\xA4 |0 # <CJK>
+<U8AC3> \x8F\xDE\xA5 |0 # <CJK>
+<U8AC6> \x8F\xDE\xA6 |0 # <CJK>
+<U8AC8> \x8F\xDE\xA7 |0 # <CJK>
+<U8AC9> \x8F\xDE\xA8 |0 # <CJK>
+<U8ACA> \x8F\xDE\xA9 |0 # <CJK>
+<U8AD1> \x8F\xDE\xAA |0 # <CJK>
+<U8AD3> \x8F\xDE\xAB |0 # <CJK>
+<U8AD4> \x8F\xDE\xAC |0 # <CJK>
+<U8AD5> \x8F\xDE\xAD |0 # <CJK>
+<U8AD7> \x8F\xDE\xAE |0 # <CJK>
+<U8ADD> \x8F\xDE\xAF |0 # <CJK>
+<U8ADF> \x8F\xDE\xB0 |0 # <CJK>
+<U8AEC> \x8F\xDE\xB1 |0 # <CJK>
+<U8AF0> \x8F\xDE\xB2 |0 # <CJK>
+<U8AF4> \x8F\xDE\xB3 |0 # <CJK>
+<U8AF5> \x8F\xDE\xB4 |0 # <CJK>
+<U8AF6> \x8F\xDE\xB5 |0 # <CJK>
+<U8AFC> \x8F\xDE\xB6 |0 # <CJK>
+<U8AFF> \x8F\xDE\xB7 |0 # <CJK>
+<U8B05> \x8F\xDE\xB8 |0 # <CJK>
+<U8B06> \x8F\xDE\xB9 |0 # <CJK>
+<U8B0B> \x8F\xDE\xBA |0 # <CJK>
+<U8B11> \x8F\xDE\xBB |0 # <CJK>
+<U8B1C> \x8F\xDE\xBC |0 # <CJK>
+<U8B1E> \x8F\xDE\xBD |0 # <CJK>
+<U8B1F> \x8F\xDE\xBE |0 # <CJK>
+<U8B0A> \x8F\xDE\xBF |0 # <CJK>
+<U8B2D> \x8F\xDE\xC0 |0 # <CJK>
+<U8B30> \x8F\xDE\xC1 |0 # <CJK>
+<U8B37> \x8F\xDE\xC2 |0 # <CJK>
+<U8B3C> \x8F\xDE\xC3 |0 # <CJK>
+<U8B42> \x8F\xDE\xC4 |0 # <CJK>
+<U8B43> \x8F\xDE\xC5 |0 # <CJK>
+<U8B44> \x8F\xDE\xC6 |0 # <CJK>
+<U8B45> \x8F\xDE\xC7 |0 # <CJK>
+<U8B46> \x8F\xDE\xC8 |0 # <CJK>
+<U8B48> \x8F\xDE\xC9 |0 # <CJK>
+<U8B52> \x8F\xDE\xCA |0 # <CJK>
+<U8B53> \x8F\xDE\xCB |0 # <CJK>
+<U8B54> \x8F\xDE\xCC |0 # <CJK>
+<U8B59> \x8F\xDE\xCD |0 # <CJK>
+<U8B4D> \x8F\xDE\xCE |0 # <CJK>
+<U8B5E> \x8F\xDE\xCF |0 # <CJK>
+<U8B63> \x8F\xDE\xD0 |0 # <CJK>
+<U8B6D> \x8F\xDE\xD1 |0 # <CJK>
+<U8B76> \x8F\xDE\xD2 |0 # <CJK>
+<U8B78> \x8F\xDE\xD3 |0 # <CJK>
+<U8B79> \x8F\xDE\xD4 |0 # <CJK>
+<U8B7C> \x8F\xDE\xD5 |0 # <CJK>
+<U8B7E> \x8F\xDE\xD6 |0 # <CJK>
+<U8B81> \x8F\xDE\xD7 |0 # <CJK>
+<U8B84> \x8F\xDE\xD8 |0 # <CJK>
+<U8B85> \x8F\xDE\xD9 |0 # <CJK>
+<U8B8B> \x8F\xDE\xDA |0 # <CJK>
+<U8B8D> \x8F\xDE\xDB |0 # <CJK>
+<U8B8F> \x8F\xDE\xDC |0 # <CJK>
+<U8B94> \x8F\xDE\xDD |0 # <CJK>
+<U8B95> \x8F\xDE\xDE |0 # <CJK>
+<U8B9C> \x8F\xDE\xDF |0 # <CJK>
+<U8B9E> \x8F\xDE\xE0 |0 # <CJK>
+<U8B9F> \x8F\xDE\xE1 |0 # <CJK>
+<U8C38> \x8F\xDE\xE2 |0 # <CJK>
+<U8C39> \x8F\xDE\xE3 |0 # <CJK>
+<U8C3D> \x8F\xDE\xE4 |0 # <CJK>
+<U8C3E> \x8F\xDE\xE5 |0 # <CJK>
+<U8C45> \x8F\xDE\xE6 |0 # <CJK>
+<U8C47> \x8F\xDE\xE7 |0 # <CJK>
+<U8C49> \x8F\xDE\xE8 |0 # <CJK>
+<U8C4B> \x8F\xDE\xE9 |0 # <CJK>
+<U8C4F> \x8F\xDE\xEA |0 # <CJK>
+<U8C51> \x8F\xDE\xEB |0 # <CJK>
+<U8C53> \x8F\xDE\xEC |0 # <CJK>
+<U8C54> \x8F\xDE\xED |0 # <CJK>
+<U8C57> \x8F\xDE\xEE |0 # <CJK>
+<U8C58> \x8F\xDE\xEF |0 # <CJK>
+<U8C5B> \x8F\xDE\xF0 |0 # <CJK>
+<U8C5D> \x8F\xDE\xF1 |0 # <CJK>
+<U8C59> \x8F\xDE\xF2 |0 # <CJK>
+<U8C63> \x8F\xDE\xF3 |0 # <CJK>
+<U8C64> \x8F\xDE\xF4 |0 # <CJK>
+<U8C66> \x8F\xDE\xF5 |0 # <CJK>
+<U8C68> \x8F\xDE\xF6 |0 # <CJK>
+<U8C69> \x8F\xDE\xF7 |0 # <CJK>
+<U8C6D> \x8F\xDE\xF8 |0 # <CJK>
+<U8C73> \x8F\xDE\xF9 |0 # <CJK>
+<U8C75> \x8F\xDE\xFA |0 # <CJK>
+<U8C76> \x8F\xDE\xFB |0 # <CJK>
+<U8C7B> \x8F\xDE\xFC |0 # <CJK>
+<U8C7E> \x8F\xDE\xFD |0 # <CJK>
+<U8C86> \x8F\xDE\xFE |0 # <CJK>
+<U8C87> \x8F\xDF\xA1 |0 # <CJK>
+<U8C8B> \x8F\xDF\xA2 |0 # <CJK>
+<U8C90> \x8F\xDF\xA3 |0 # <CJK>
+<U8C92> \x8F\xDF\xA4 |0 # <CJK>
+<U8C93> \x8F\xDF\xA5 |0 # <CJK>
+<U8C99> \x8F\xDF\xA6 |0 # <CJK>
+<U8C9B> \x8F\xDF\xA7 |0 # <CJK>
+<U8C9C> \x8F\xDF\xA8 |0 # <CJK>
+<U8CA4> \x8F\xDF\xA9 |0 # <CJK>
+<U8CB9> \x8F\xDF\xAA |0 # <CJK>
+<U8CBA> \x8F\xDF\xAB |0 # <CJK>
+<U8CC5> \x8F\xDF\xAC |0 # <CJK>
+<U8CC6> \x8F\xDF\xAD |0 # <CJK>
+<U8CC9> \x8F\xDF\xAE |0 # <CJK>
+<U8CCB> \x8F\xDF\xAF |0 # <CJK>
+<U8CCF> \x8F\xDF\xB0 |0 # <CJK>
+<U8CD6> \x8F\xDF\xB1 |0 # <CJK>
+<U8CD5> \x8F\xDF\xB2 |0 # <CJK>
+<U8CD9> \x8F\xDF\xB3 |0 # <CJK>
+<U8CDD> \x8F\xDF\xB4 |0 # <CJK>
+<U8CE1> \x8F\xDF\xB5 |0 # <CJK>
+<U8CE8> \x8F\xDF\xB6 |0 # <CJK>
+<U8CEC> \x8F\xDF\xB7 |0 # <CJK>
+<U8CEF> \x8F\xDF\xB8 |0 # <CJK>
+<U8CF0> \x8F\xDF\xB9 |0 # <CJK>
+<U8CF2> \x8F\xDF\xBA |0 # <CJK>
+<U8CF5> \x8F\xDF\xBB |0 # <CJK>
+<U8CF7> \x8F\xDF\xBC |0 # <CJK>
+<U8CF8> \x8F\xDF\xBD |0 # <CJK>
+<U8CFE> \x8F\xDF\xBE |0 # <CJK>
+<U8CFF> \x8F\xDF\xBF |0 # <CJK>
+<U8D01> \x8F\xDF\xC0 |0 # <CJK>
+<U8D03> \x8F\xDF\xC1 |0 # <CJK>
+<U8D09> \x8F\xDF\xC2 |0 # <CJK>
+<U8D12> \x8F\xDF\xC3 |0 # <CJK>
+<U8D17> \x8F\xDF\xC4 |0 # <CJK>
+<U8D1B> \x8F\xDF\xC5 |0 # <CJK>
+<U8D65> \x8F\xDF\xC6 |0 # <CJK>
+<U8D69> \x8F\xDF\xC7 |0 # <CJK>
+<U8D6C> \x8F\xDF\xC8 |0 # <CJK>
+<U8D6E> \x8F\xDF\xC9 |0 # <CJK>
+<U8D7F> \x8F\xDF\xCA |0 # <CJK>
+<U8D82> \x8F\xDF\xCB |0 # <CJK>
+<U8D84> \x8F\xDF\xCC |0 # <CJK>
+<U8D88> \x8F\xDF\xCD |0 # <CJK>
+<U8D8D> \x8F\xDF\xCE |0 # <CJK>
+<U8D90> \x8F\xDF\xCF |0 # <CJK>
+<U8D91> \x8F\xDF\xD0 |0 # <CJK>
+<U8D95> \x8F\xDF\xD1 |0 # <CJK>
+<U8D9E> \x8F\xDF\xD2 |0 # <CJK>
+<U8D9F> \x8F\xDF\xD3 |0 # <CJK>
+<U8DA0> \x8F\xDF\xD4 |0 # <CJK>
+<U8DA6> \x8F\xDF\xD5 |0 # <CJK>
+<U8DAB> \x8F\xDF\xD6 |0 # <CJK>
+<U8DAC> \x8F\xDF\xD7 |0 # <CJK>
+<U8DAF> \x8F\xDF\xD8 |0 # <CJK>
+<U8DB2> \x8F\xDF\xD9 |0 # <CJK>
+<U8DB5> \x8F\xDF\xDA |0 # <CJK>
+<U8DB7> \x8F\xDF\xDB |0 # <CJK>
+<U8DB9> \x8F\xDF\xDC |0 # <CJK>
+<U8DBB> \x8F\xDF\xDD |0 # <CJK>
+<U8DC0> \x8F\xDF\xDE |0 # <CJK>
+<U8DC5> \x8F\xDF\xDF |0 # <CJK>
+<U8DC6> \x8F\xDF\xE0 |0 # <CJK>
+<U8DC7> \x8F\xDF\xE1 |0 # <CJK>
+<U8DC8> \x8F\xDF\xE2 |0 # <CJK>
+<U8DCA> \x8F\xDF\xE3 |0 # <CJK>
+<U8DCE> \x8F\xDF\xE4 |0 # <CJK>
+<U8DD1> \x8F\xDF\xE5 |0 # <CJK>
+<U8DD4> \x8F\xDF\xE6 |0 # <CJK>
+<U8DD5> \x8F\xDF\xE7 |0 # <CJK>
+<U8DD7> \x8F\xDF\xE8 |0 # <CJK>
+<U8DD9> \x8F\xDF\xE9 |0 # <CJK>
+<U8DE4> \x8F\xDF\xEA |0 # <CJK>
+<U8DE5> \x8F\xDF\xEB |0 # <CJK>
+<U8DE7> \x8F\xDF\xEC |0 # <CJK>
+<U8DEC> \x8F\xDF\xED |0 # <CJK>
+<U8DF0> \x8F\xDF\xEE |0 # <CJK>
+<U8DBC> \x8F\xDF\xEF |0 # <CJK>
+<U8DF1> \x8F\xDF\xF0 |0 # <CJK>
+<U8DF2> \x8F\xDF\xF1 |0 # <CJK>
+<U8DF4> \x8F\xDF\xF2 |0 # <CJK>
+<U8DFD> \x8F\xDF\xF3 |0 # <CJK>
+<U8E01> \x8F\xDF\xF4 |0 # <CJK>
+<U8E04> \x8F\xDF\xF5 |0 # <CJK>
+<U8E05> \x8F\xDF\xF6 |0 # <CJK>
+<U8E06> \x8F\xDF\xF7 |0 # <CJK>
+<U8E0B> \x8F\xDF\xF8 |0 # <CJK>
+<U8E11> \x8F\xDF\xF9 |0 # <CJK>
+<U8E14> \x8F\xDF\xFA |0 # <CJK>
+<U8E16> \x8F\xDF\xFB |0 # <CJK>
+<U8E20> \x8F\xDF\xFC |0 # <CJK>
+<U8E21> \x8F\xDF\xFD |0 # <CJK>
+<U8E22> \x8F\xDF\xFE |0 # <CJK>
+<U8E23> \x8F\xE0\xA1 |0 # <CJK>
+<U8E26> \x8F\xE0\xA2 |0 # <CJK>
+<U8E27> \x8F\xE0\xA3 |0 # <CJK>
+<U8E31> \x8F\xE0\xA4 |0 # <CJK>
+<U8E33> \x8F\xE0\xA5 |0 # <CJK>
+<U8E36> \x8F\xE0\xA6 |0 # <CJK>
+<U8E37> \x8F\xE0\xA7 |0 # <CJK>
+<U8E38> \x8F\xE0\xA8 |0 # <CJK>
+<U8E39> \x8F\xE0\xA9 |0 # <CJK>
+<U8E3D> \x8F\xE0\xAA |0 # <CJK>
+<U8E40> \x8F\xE0\xAB |0 # <CJK>
+<U8E41> \x8F\xE0\xAC |0 # <CJK>
+<U8E4B> \x8F\xE0\xAD |0 # <CJK>
+<U8E4D> \x8F\xE0\xAE |0 # <CJK>
+<U8E4E> \x8F\xE0\xAF |0 # <CJK>
+<U8E4F> \x8F\xE0\xB0 |0 # <CJK>
+<U8E54> \x8F\xE0\xB1 |0 # <CJK>
+<U8E5B> \x8F\xE0\xB2 |0 # <CJK>
+<U8E5C> \x8F\xE0\xB3 |0 # <CJK>
+<U8E5D> \x8F\xE0\xB4 |0 # <CJK>
+<U8E5E> \x8F\xE0\xB5 |0 # <CJK>
+<U8E61> \x8F\xE0\xB6 |0 # <CJK>
+<U8E62> \x8F\xE0\xB7 |0 # <CJK>
+<U8E69> \x8F\xE0\xB8 |0 # <CJK>
+<U8E6C> \x8F\xE0\xB9 |0 # <CJK>
+<U8E6D> \x8F\xE0\xBA |0 # <CJK>
+<U8E6F> \x8F\xE0\xBB |0 # <CJK>
+<U8E70> \x8F\xE0\xBC |0 # <CJK>
+<U8E71> \x8F\xE0\xBD |0 # <CJK>
+<U8E79> \x8F\xE0\xBE |0 # <CJK>
+<U8E7A> \x8F\xE0\xBF |0 # <CJK>
+<U8E7B> \x8F\xE0\xC0 |0 # <CJK>
+<U8E82> \x8F\xE0\xC1 |0 # <CJK>
+<U8E83> \x8F\xE0\xC2 |0 # <CJK>
+<U8E89> \x8F\xE0\xC3 |0 # <CJK>
+<U8E90> \x8F\xE0\xC4 |0 # <CJK>
+<U8E92> \x8F\xE0\xC5 |0 # <CJK>
+<U8E95> \x8F\xE0\xC6 |0 # <CJK>
+<U8E9A> \x8F\xE0\xC7 |0 # <CJK>
+<U8E9B> \x8F\xE0\xC8 |0 # <CJK>
+<U8E9D> \x8F\xE0\xC9 |0 # <CJK>
+<U8E9E> \x8F\xE0\xCA |0 # <CJK>
+<U8EA2> \x8F\xE0\xCB |0 # <CJK>
+<U8EA7> \x8F\xE0\xCC |0 # <CJK>
+<U8EA9> \x8F\xE0\xCD |0 # <CJK>
+<U8EAD> \x8F\xE0\xCE |0 # <CJK>
+<U8EAE> \x8F\xE0\xCF |0 # <CJK>
+<U8EB3> \x8F\xE0\xD0 |0 # <CJK>
+<U8EB5> \x8F\xE0\xD1 |0 # <CJK>
+<U8EBA> \x8F\xE0\xD2 |0 # <CJK>
+<U8EBB> \x8F\xE0\xD3 |0 # <CJK>
+<U8EC0> \x8F\xE0\xD4 |0 # <CJK>
+<U8EC1> \x8F\xE0\xD5 |0 # <CJK>
+<U8EC3> \x8F\xE0\xD6 |0 # <CJK>
+<U8EC4> \x8F\xE0\xD7 |0 # <CJK>
+<U8EC7> \x8F\xE0\xD8 |0 # <CJK>
+<U8ECF> \x8F\xE0\xD9 |0 # <CJK>
+<U8ED1> \x8F\xE0\xDA |0 # <CJK>
+<U8ED4> \x8F\xE0\xDB |0 # <CJK>
+<U8EDC> \x8F\xE0\xDC |0 # <CJK>
+<U8EE8> \x8F\xE0\xDD |0 # <CJK>
+<U8EEE> \x8F\xE0\xDE |0 # <CJK>
+<U8EF0> \x8F\xE0\xDF |0 # <CJK>
+<U8EF1> \x8F\xE0\xE0 |0 # <CJK>
+<U8EF7> \x8F\xE0\xE1 |0 # <CJK>
+<U8EF9> \x8F\xE0\xE2 |0 # <CJK>
+<U8EFA> \x8F\xE0\xE3 |0 # <CJK>
+<U8EED> \x8F\xE0\xE4 |0 # <CJK>
+<U8F00> \x8F\xE0\xE5 |0 # <CJK>
+<U8F02> \x8F\xE0\xE6 |0 # <CJK>
+<U8F07> \x8F\xE0\xE7 |0 # <CJK>
+<U8F08> \x8F\xE0\xE8 |0 # <CJK>
+<U8F0F> \x8F\xE0\xE9 |0 # <CJK>
+<U8F10> \x8F\xE0\xEA |0 # <CJK>
+<U8F16> \x8F\xE0\xEB |0 # <CJK>
+<U8F17> \x8F\xE0\xEC |0 # <CJK>
+<U8F18> \x8F\xE0\xED |0 # <CJK>
+<U8F1E> \x8F\xE0\xEE |0 # <CJK>
+<U8F20> \x8F\xE0\xEF |0 # <CJK>
+<U8F21> \x8F\xE0\xF0 |0 # <CJK>
+<U8F23> \x8F\xE0\xF1 |0 # <CJK>
+<U8F25> \x8F\xE0\xF2 |0 # <CJK>
+<U8F27> \x8F\xE0\xF3 |0 # <CJK>
+<U8F28> \x8F\xE0\xF4 |0 # <CJK>
+<U8F2C> \x8F\xE0\xF5 |0 # <CJK>
+<U8F2D> \x8F\xE0\xF6 |0 # <CJK>
+<U8F2E> \x8F\xE0\xF7 |0 # <CJK>
+<U8F34> \x8F\xE0\xF8 |0 # <CJK>
+<U8F35> \x8F\xE0\xF9 |0 # <CJK>
+<U8F36> \x8F\xE0\xFA |0 # <CJK>
+<U8F37> \x8F\xE0\xFB |0 # <CJK>
+<U8F3A> \x8F\xE0\xFC |0 # <CJK>
+<U8F40> \x8F\xE0\xFD |0 # <CJK>
+<U8F41> \x8F\xE0\xFE |0 # <CJK>
+<U8F43> \x8F\xE1\xA1 |0 # <CJK>
+<U8F47> \x8F\xE1\xA2 |0 # <CJK>
+<U8F4F> \x8F\xE1\xA3 |0 # <CJK>
+<U8F51> \x8F\xE1\xA4 |0 # <CJK>
+<U8F52> \x8F\xE1\xA5 |0 # <CJK>
+<U8F53> \x8F\xE1\xA6 |0 # <CJK>
+<U8F54> \x8F\xE1\xA7 |0 # <CJK>
+<U8F55> \x8F\xE1\xA8 |0 # <CJK>
+<U8F58> \x8F\xE1\xA9 |0 # <CJK>
+<U8F5D> \x8F\xE1\xAA |0 # <CJK>
+<U8F5E> \x8F\xE1\xAB |0 # <CJK>
+<U8F65> \x8F\xE1\xAC |0 # <CJK>
+<U8F9D> \x8F\xE1\xAD |0 # <CJK>
+<U8FA0> \x8F\xE1\xAE |0 # <CJK>
+<U8FA1> \x8F\xE1\xAF |0 # <CJK>
+<U8FA4> \x8F\xE1\xB0 |0 # <CJK>
+<U8FA5> \x8F\xE1\xB1 |0 # <CJK>
+<U8FA6> \x8F\xE1\xB2 |0 # <CJK>
+<U8FB5> \x8F\xE1\xB3 |0 # <CJK>
+<U8FB6> \x8F\xE1\xB4 |0 # <CJK>
+<U8FB8> \x8F\xE1\xB5 |0 # <CJK>
+<U8FBE> \x8F\xE1\xB6 |0 # <CJK>
+<U8FC0> \x8F\xE1\xB7 |0 # <CJK>
+<U8FC1> \x8F\xE1\xB8 |0 # <CJK>
+<U8FC6> \x8F\xE1\xB9 |0 # <CJK>
+<U8FCA> \x8F\xE1\xBA |0 # <CJK>
+<U8FCB> \x8F\xE1\xBB |0 # <CJK>
+<U8FCD> \x8F\xE1\xBC |0 # <CJK>
+<U8FD0> \x8F\xE1\xBD |0 # <CJK>
+<U8FD2> \x8F\xE1\xBE |0 # <CJK>
+<U8FD3> \x8F\xE1\xBF |0 # <CJK>
+<U8FD5> \x8F\xE1\xC0 |0 # <CJK>
+<U8FE0> \x8F\xE1\xC1 |0 # <CJK>
+<U8FE3> \x8F\xE1\xC2 |0 # <CJK>
+<U8FE4> \x8F\xE1\xC3 |0 # <CJK>
+<U8FE8> \x8F\xE1\xC4 |0 # <CJK>
+<U8FEE> \x8F\xE1\xC5 |0 # <CJK>
+<U8FF1> \x8F\xE1\xC6 |0 # <CJK>
+<U8FF5> \x8F\xE1\xC7 |0 # <CJK>
+<U8FF6> \x8F\xE1\xC8 |0 # <CJK>
+<U8FFB> \x8F\xE1\xC9 |0 # <CJK>
+<U8FFE> \x8F\xE1\xCA |0 # <CJK>
+<U9002> \x8F\xE1\xCB |0 # <CJK>
+<U9004> \x8F\xE1\xCC |0 # <CJK>
+<U9008> \x8F\xE1\xCD |0 # <CJK>
+<U900C> \x8F\xE1\xCE |0 # <CJK>
+<U9018> \x8F\xE1\xCF |0 # <CJK>
+<U901B> \x8F\xE1\xD0 |0 # <CJK>
+<U9028> \x8F\xE1\xD1 |0 # <CJK>
+<U9029> \x8F\xE1\xD2 |0 # <CJK>
+<U902F> \x8F\xE1\xD3 |0 # <CJK>
+<U902A> \x8F\xE1\xD4 |0 # <CJK>
+<U902C> \x8F\xE1\xD5 |0 # <CJK>
+<U902D> \x8F\xE1\xD6 |0 # <CJK>
+<U9033> \x8F\xE1\xD7 |0 # <CJK>
+<U9034> \x8F\xE1\xD8 |0 # <CJK>
+<U9037> \x8F\xE1\xD9 |0 # <CJK>
+<U903F> \x8F\xE1\xDA |0 # <CJK>
+<U9043> \x8F\xE1\xDB |0 # <CJK>
+<U9044> \x8F\xE1\xDC |0 # <CJK>
+<U904C> \x8F\xE1\xDD |0 # <CJK>
+<U905B> \x8F\xE1\xDE |0 # <CJK>
+<U905D> \x8F\xE1\xDF |0 # <CJK>
+<U9062> \x8F\xE1\xE0 |0 # <CJK>
+<U9066> \x8F\xE1\xE1 |0 # <CJK>
+<U9067> \x8F\xE1\xE2 |0 # <CJK>
+<U906C> \x8F\xE1\xE3 |0 # <CJK>
+<U9070> \x8F\xE1\xE4 |0 # <CJK>
+<U9074> \x8F\xE1\xE5 |0 # <CJK>
+<U9079> \x8F\xE1\xE6 |0 # <CJK>
+<U9085> \x8F\xE1\xE7 |0 # <CJK>
+<U9088> \x8F\xE1\xE8 |0 # <CJK>
+<U908B> \x8F\xE1\xE9 |0 # <CJK>
+<U908C> \x8F\xE1\xEA |0 # <CJK>
+<U908E> \x8F\xE1\xEB |0 # <CJK>
+<U9090> \x8F\xE1\xEC |0 # <CJK>
+<U9095> \x8F\xE1\xED |0 # <CJK>
+<U9097> \x8F\xE1\xEE |0 # <CJK>
+<U9098> \x8F\xE1\xEF |0 # <CJK>
+<U9099> \x8F\xE1\xF0 |0 # <CJK>
+<U909B> \x8F\xE1\xF1 |0 # <CJK>
+<U90A0> \x8F\xE1\xF2 |0 # <CJK>
+<U90A1> \x8F\xE1\xF3 |0 # <CJK>
+<U90A2> \x8F\xE1\xF4 |0 # <CJK>
+<U90A5> \x8F\xE1\xF5 |0 # <CJK>
+<U90B0> \x8F\xE1\xF6 |0 # <CJK>
+<U90B2> \x8F\xE1\xF7 |0 # <CJK>
+<U90B3> \x8F\xE1\xF8 |0 # <CJK>
+<U90B4> \x8F\xE1\xF9 |0 # <CJK>
+<U90B6> \x8F\xE1\xFA |0 # <CJK>
+<U90BD> \x8F\xE1\xFB |0 # <CJK>
+<U90CC> \x8F\xE1\xFC |0 # <CJK>
+<U90BE> \x8F\xE1\xFD |0 # <CJK>
+<U90C3> \x8F\xE1\xFE |0 # <CJK>
+<U90C4> \x8F\xE2\xA1 |0 # <CJK>
+<U90C5> \x8F\xE2\xA2 |0 # <CJK>
+<U90C7> \x8F\xE2\xA3 |0 # <CJK>
+<U90C8> \x8F\xE2\xA4 |0 # <CJK>
+<U90D5> \x8F\xE2\xA5 |0 # <CJK>
+<U90D7> \x8F\xE2\xA6 |0 # <CJK>
+<U90D8> \x8F\xE2\xA7 |0 # <CJK>
+<U90D9> \x8F\xE2\xA8 |0 # <CJK>
+<U90DC> \x8F\xE2\xA9 |0 # <CJK>
+<U90DD> \x8F\xE2\xAA |0 # <CJK>
+<U90DF> \x8F\xE2\xAB |0 # <CJK>
+<U90E5> \x8F\xE2\xAC |0 # <CJK>
+<U90D2> \x8F\xE2\xAD |0 # <CJK>
+<U90F6> \x8F\xE2\xAE |0 # <CJK>
+<U90EB> \x8F\xE2\xAF |0 # <CJK>
+<U90EF> \x8F\xE2\xB0 |0 # <CJK>
+<U90F0> \x8F\xE2\xB1 |0 # <CJK>
+<U90F4> \x8F\xE2\xB2 |0 # <CJK>
+<U90FE> \x8F\xE2\xB3 |0 # <CJK>
+<U90FF> \x8F\xE2\xB4 |0 # <CJK>
+<U9100> \x8F\xE2\xB5 |0 # <CJK>
+<U9104> \x8F\xE2\xB6 |0 # <CJK>
+<U9105> \x8F\xE2\xB7 |0 # <CJK>
+<U9106> \x8F\xE2\xB8 |0 # <CJK>
+<U9108> \x8F\xE2\xB9 |0 # <CJK>
+<U910D> \x8F\xE2\xBA |0 # <CJK>
+<U9110> \x8F\xE2\xBB |0 # <CJK>
+<U9114> \x8F\xE2\xBC |0 # <CJK>
+<U9116> \x8F\xE2\xBD |0 # <CJK>
+<U9117> \x8F\xE2\xBE |0 # <CJK>
+<U9118> \x8F\xE2\xBF |0 # <CJK>
+<U911A> \x8F\xE2\xC0 |0 # <CJK>
+<U911C> \x8F\xE2\xC1 |0 # <CJK>
+<U911E> \x8F\xE2\xC2 |0 # <CJK>
+<U9120> \x8F\xE2\xC3 |0 # <CJK>
+<U9125> \x8F\xE2\xC4 |0 # <CJK>
+<U9122> \x8F\xE2\xC5 |0 # <CJK>
+<U9123> \x8F\xE2\xC6 |0 # <CJK>
+<U9127> \x8F\xE2\xC7 |0 # <CJK>
+<U9129> \x8F\xE2\xC8 |0 # <CJK>
+<U912E> \x8F\xE2\xC9 |0 # <CJK>
+<U912F> \x8F\xE2\xCA |0 # <CJK>
+<U9131> \x8F\xE2\xCB |0 # <CJK>
+<U9134> \x8F\xE2\xCC |0 # <CJK>
+<U9136> \x8F\xE2\xCD |0 # <CJK>
+<U9137> \x8F\xE2\xCE |0 # <CJK>
+<U9139> \x8F\xE2\xCF |0 # <CJK>
+<U913A> \x8F\xE2\xD0 |0 # <CJK>
+<U913C> \x8F\xE2\xD1 |0 # <CJK>
+<U913D> \x8F\xE2\xD2 |0 # <CJK>
+<U9143> \x8F\xE2\xD3 |0 # <CJK>
+<U9147> \x8F\xE2\xD4 |0 # <CJK>
+<U9148> \x8F\xE2\xD5 |0 # <CJK>
+<U914F> \x8F\xE2\xD6 |0 # <CJK>
+<U9153> \x8F\xE2\xD7 |0 # <CJK>
+<U9157> \x8F\xE2\xD8 |0 # <CJK>
+<U9159> \x8F\xE2\xD9 |0 # <CJK>
+<U915A> \x8F\xE2\xDA |0 # <CJK>
+<U915B> \x8F\xE2\xDB |0 # <CJK>
+<U9161> \x8F\xE2\xDC |0 # <CJK>
+<U9164> \x8F\xE2\xDD |0 # <CJK>
+<U9167> \x8F\xE2\xDE |0 # <CJK>
+<U916D> \x8F\xE2\xDF |0 # <CJK>
+<U9174> \x8F\xE2\xE0 |0 # <CJK>
+<U9179> \x8F\xE2\xE1 |0 # <CJK>
+<U917A> \x8F\xE2\xE2 |0 # <CJK>
+<U917B> \x8F\xE2\xE3 |0 # <CJK>
+<U9181> \x8F\xE2\xE4 |0 # <CJK>
+<U9183> \x8F\xE2\xE5 |0 # <CJK>
+<U9185> \x8F\xE2\xE6 |0 # <CJK>
+<U9186> \x8F\xE2\xE7 |0 # <CJK>
+<U918A> \x8F\xE2\xE8 |0 # <CJK>
+<U918E> \x8F\xE2\xE9 |0 # <CJK>
+<U9191> \x8F\xE2\xEA |0 # <CJK>
+<U9193> \x8F\xE2\xEB |0 # <CJK>
+<U9194> \x8F\xE2\xEC |0 # <CJK>
+<U9195> \x8F\xE2\xED |0 # <CJK>
+<U9198> \x8F\xE2\xEE |0 # <CJK>
+<U919E> \x8F\xE2\xEF |0 # <CJK>
+<U91A1> \x8F\xE2\xF0 |0 # <CJK>
+<U91A6> \x8F\xE2\xF1 |0 # <CJK>
+<U91A8> \x8F\xE2\xF2 |0 # <CJK>
+<U91AC> \x8F\xE2\xF3 |0 # <CJK>
+<U91AD> \x8F\xE2\xF4 |0 # <CJK>
+<U91AE> \x8F\xE2\xF5 |0 # <CJK>
+<U91B0> \x8F\xE2\xF6 |0 # <CJK>
+<U91B1> \x8F\xE2\xF7 |0 # <CJK>
+<U91B2> \x8F\xE2\xF8 |0 # <CJK>
+<U91B3> \x8F\xE2\xF9 |0 # <CJK>
+<U91B6> \x8F\xE2\xFA |0 # <CJK>
+<U91BB> \x8F\xE2\xFB |0 # <CJK>
+<U91BC> \x8F\xE2\xFC |0 # <CJK>
+<U91BD> \x8F\xE2\xFD |0 # <CJK>
+<U91BF> \x8F\xE2\xFE |0 # <CJK>
+<U91C2> \x8F\xE3\xA1 |0 # <CJK>
+<U91C3> \x8F\xE3\xA2 |0 # <CJK>
+<U91C5> \x8F\xE3\xA3 |0 # <CJK>
+<U91D3> \x8F\xE3\xA4 |0 # <CJK>
+<U91D4> \x8F\xE3\xA5 |0 # <CJK>
+<U91D7> \x8F\xE3\xA6 |0 # <CJK>
+<U91D9> \x8F\xE3\xA7 |0 # <CJK>
+<U91DA> \x8F\xE3\xA8 |0 # <CJK>
+<U91DE> \x8F\xE3\xA9 |0 # <CJK>
+<U91E4> \x8F\xE3\xAA |0 # <CJK>
+<U91E5> \x8F\xE3\xAB |0 # <CJK>
+<U91E9> \x8F\xE3\xAC |0 # <CJK>
+<U91EA> \x8F\xE3\xAD |0 # <CJK>
+<U91EC> \x8F\xE3\xAE |0 # <CJK>
+<U91ED> \x8F\xE3\xAF |0 # <CJK>
+<U91EE> \x8F\xE3\xB0 |0 # <CJK>
+<U91EF> \x8F\xE3\xB1 |0 # <CJK>
+<U91F0> \x8F\xE3\xB2 |0 # <CJK>
+<U91F1> \x8F\xE3\xB3 |0 # <CJK>
+<U91F7> \x8F\xE3\xB4 |0 # <CJK>
+<U91F9> \x8F\xE3\xB5 |0 # <CJK>
+<U91FB> \x8F\xE3\xB6 |0 # <CJK>
+<U91FD> \x8F\xE3\xB7 |0 # <CJK>
+<U9200> \x8F\xE3\xB8 |0 # <CJK>
+<U9201> \x8F\xE3\xB9 |0 # <CJK>
+<U9204> \x8F\xE3\xBA |0 # <CJK>
+<U9205> \x8F\xE3\xBB |0 # <CJK>
+<U9206> \x8F\xE3\xBC |0 # <CJK>
+<U9207> \x8F\xE3\xBD |0 # <CJK>
+<U9209> \x8F\xE3\xBE |0 # <CJK>
+<U920A> \x8F\xE3\xBF |0 # <CJK>
+<U920C> \x8F\xE3\xC0 |0 # <CJK>
+<U9210> \x8F\xE3\xC1 |0 # <CJK>
+<U9212> \x8F\xE3\xC2 |0 # <CJK>
+<U9213> \x8F\xE3\xC3 |0 # <CJK>
+<U9216> \x8F\xE3\xC4 |0 # <CJK>
+<U9218> \x8F\xE3\xC5 |0 # <CJK>
+<U921C> \x8F\xE3\xC6 |0 # <CJK>
+<U921D> \x8F\xE3\xC7 |0 # <CJK>
+<U9223> \x8F\xE3\xC8 |0 # <CJK>
+<U9224> \x8F\xE3\xC9 |0 # <CJK>
+<U9225> \x8F\xE3\xCA |0 # <CJK>
+<U9226> \x8F\xE3\xCB |0 # <CJK>
+<U9228> \x8F\xE3\xCC |0 # <CJK>
+<U922E> \x8F\xE3\xCD |0 # <CJK>
+<U922F> \x8F\xE3\xCE |0 # <CJK>
+<U9230> \x8F\xE3\xCF |0 # <CJK>
+<U9233> \x8F\xE3\xD0 |0 # <CJK>
+<U9235> \x8F\xE3\xD1 |0 # <CJK>
+<U9236> \x8F\xE3\xD2 |0 # <CJK>
+<U9238> \x8F\xE3\xD3 |0 # <CJK>
+<U9239> \x8F\xE3\xD4 |0 # <CJK>
+<U923A> \x8F\xE3\xD5 |0 # <CJK>
+<U923C> \x8F\xE3\xD6 |0 # <CJK>
+<U923E> \x8F\xE3\xD7 |0 # <CJK>
+<U9240> \x8F\xE3\xD8 |0 # <CJK>
+<U9242> \x8F\xE3\xD9 |0 # <CJK>
+<U9243> \x8F\xE3\xDA |0 # <CJK>
+<U9246> \x8F\xE3\xDB |0 # <CJK>
+<U9247> \x8F\xE3\xDC |0 # <CJK>
+<U924A> \x8F\xE3\xDD |0 # <CJK>
+<U924D> \x8F\xE3\xDE |0 # <CJK>
+<U924E> \x8F\xE3\xDF |0 # <CJK>
+<U924F> \x8F\xE3\xE0 |0 # <CJK>
+<U9251> \x8F\xE3\xE1 |0 # <CJK>
+<U9258> \x8F\xE3\xE2 |0 # <CJK>
+<U9259> \x8F\xE3\xE3 |0 # <CJK>
+<U925C> \x8F\xE3\xE4 |0 # <CJK>
+<U925D> \x8F\xE3\xE5 |0 # <CJK>
+<U9260> \x8F\xE3\xE6 |0 # <CJK>
+<U9261> \x8F\xE3\xE7 |0 # <CJK>
+<U9265> \x8F\xE3\xE8 |0 # <CJK>
+<U9267> \x8F\xE3\xE9 |0 # <CJK>
+<U9268> \x8F\xE3\xEA |0 # <CJK>
+<U9269> \x8F\xE3\xEB |0 # <CJK>
+<U926E> \x8F\xE3\xEC |0 # <CJK>
+<U926F> \x8F\xE3\xED |0 # <CJK>
+<U9270> \x8F\xE3\xEE |0 # <CJK>
+<U9275> \x8F\xE3\xEF |0 # <CJK>
+<U9276> \x8F\xE3\xF0 |0 # <CJK>
+<U9277> \x8F\xE3\xF1 |0 # <CJK>
+<U9278> \x8F\xE3\xF2 |0 # <CJK>
+<U9279> \x8F\xE3\xF3 |0 # <CJK>
+<U927B> \x8F\xE3\xF4 |0 # <CJK>
+<U927C> \x8F\xE3\xF5 |0 # <CJK>
+<U927D> \x8F\xE3\xF6 |0 # <CJK>
+<U927F> \x8F\xE3\xF7 |0 # <CJK>
+<U9288> \x8F\xE3\xF8 |0 # <CJK>
+<U9289> \x8F\xE3\xF9 |0 # <CJK>
+<U928A> \x8F\xE3\xFA |0 # <CJK>
+<U928D> \x8F\xE3\xFB |0 # <CJK>
+<U928E> \x8F\xE3\xFC |0 # <CJK>
+<U9292> \x8F\xE3\xFD |0 # <CJK>
+<U9297> \x8F\xE3\xFE |0 # <CJK>
+<U9299> \x8F\xE4\xA1 |0 # <CJK>
+<U929F> \x8F\xE4\xA2 |0 # <CJK>
+<U92A0> \x8F\xE4\xA3 |0 # <CJK>
+<U92A4> \x8F\xE4\xA4 |0 # <CJK>
+<U92A5> \x8F\xE4\xA5 |0 # <CJK>
+<U92A7> \x8F\xE4\xA6 |0 # <CJK>
+<U92A8> \x8F\xE4\xA7 |0 # <CJK>
+<U92AB> \x8F\xE4\xA8 |0 # <CJK>
+<U92AF> \x8F\xE4\xA9 |0 # <CJK>
+<U92B2> \x8F\xE4\xAA |0 # <CJK>
+<U92B6> \x8F\xE4\xAB |0 # <CJK>
+<U92B8> \x8F\xE4\xAC |0 # <CJK>
+<U92BA> \x8F\xE4\xAD |0 # <CJK>
+<U92BB> \x8F\xE4\xAE |0 # <CJK>
+<U92BC> \x8F\xE4\xAF |0 # <CJK>
+<U92BD> \x8F\xE4\xB0 |0 # <CJK>
+<U92BF> \x8F\xE4\xB1 |0 # <CJK>
+<U92C0> \x8F\xE4\xB2 |0 # <CJK>
+<U92C1> \x8F\xE4\xB3 |0 # <CJK>
+<U92C2> \x8F\xE4\xB4 |0 # <CJK>
+<U92C3> \x8F\xE4\xB5 |0 # <CJK>
+<U92C5> \x8F\xE4\xB6 |0 # <CJK>
+<U92C6> \x8F\xE4\xB7 |0 # <CJK>
+<U92C7> \x8F\xE4\xB8 |0 # <CJK>
+<U92C8> \x8F\xE4\xB9 |0 # <CJK>
+<U92CB> \x8F\xE4\xBA |0 # <CJK>
+<U92CC> \x8F\xE4\xBB |0 # <CJK>
+<U92CD> \x8F\xE4\xBC |0 # <CJK>
+<U92CE> \x8F\xE4\xBD |0 # <CJK>
+<U92D0> \x8F\xE4\xBE |0 # <CJK>
+<U92D3> \x8F\xE4\xBF |0 # <CJK>
+<U92D5> \x8F\xE4\xC0 |0 # <CJK>
+<U92D7> \x8F\xE4\xC1 |0 # <CJK>
+<U92D8> \x8F\xE4\xC2 |0 # <CJK>
+<U92D9> \x8F\xE4\xC3 |0 # <CJK>
+<U92DC> \x8F\xE4\xC4 |0 # <CJK>
+<U92DD> \x8F\xE4\xC5 |0 # <CJK>
+<U92DF> \x8F\xE4\xC6 |0 # <CJK>
+<U92E0> \x8F\xE4\xC7 |0 # <CJK>
+<U92E1> \x8F\xE4\xC8 |0 # <CJK>
+<U92E3> \x8F\xE4\xC9 |0 # <CJK>
+<U92E5> \x8F\xE4\xCA |0 # <CJK>
+<U92E7> \x8F\xE4\xCB |0 # <CJK>
+<U92E8> \x8F\xE4\xCC |0 # <CJK>
+<U92EC> \x8F\xE4\xCD |0 # <CJK>
+<U92EE> \x8F\xE4\xCE |0 # <CJK>
+<U92F0> \x8F\xE4\xCF |0 # <CJK>
+<U92F9> \x8F\xE4\xD0 |0 # <CJK>
+<U92FB> \x8F\xE4\xD1 |0 # <CJK>
+<U92FF> \x8F\xE4\xD2 |0 # <CJK>
+<U9300> \x8F\xE4\xD3 |0 # <CJK>
+<U9302> \x8F\xE4\xD4 |0 # <CJK>
+<U9308> \x8F\xE4\xD5 |0 # <CJK>
+<U930D> \x8F\xE4\xD6 |0 # <CJK>
+<U9311> \x8F\xE4\xD7 |0 # <CJK>
+<U9314> \x8F\xE4\xD8 |0 # <CJK>
+<U9315> \x8F\xE4\xD9 |0 # <CJK>
+<U931C> \x8F\xE4\xDA |0 # <CJK>
+<U931D> \x8F\xE4\xDB |0 # <CJK>
+<U931E> \x8F\xE4\xDC |0 # <CJK>
+<U931F> \x8F\xE4\xDD |0 # <CJK>
+<U9321> \x8F\xE4\xDE |0 # <CJK>
+<U9324> \x8F\xE4\xDF |0 # <CJK>
+<U9325> \x8F\xE4\xE0 |0 # <CJK>
+<U9327> \x8F\xE4\xE1 |0 # <CJK>
+<U9329> \x8F\xE4\xE2 |0 # <CJK>
+<U932A> \x8F\xE4\xE3 |0 # <CJK>
+<U9333> \x8F\xE4\xE4 |0 # <CJK>
+<U9334> \x8F\xE4\xE5 |0 # <CJK>
+<U9336> \x8F\xE4\xE6 |0 # <CJK>
+<U9337> \x8F\xE4\xE7 |0 # <CJK>
+<U9347> \x8F\xE4\xE8 |0 # <CJK>
+<U9348> \x8F\xE4\xE9 |0 # <CJK>
+<U9349> \x8F\xE4\xEA |0 # <CJK>
+<U9350> \x8F\xE4\xEB |0 # <CJK>
+<U9351> \x8F\xE4\xEC |0 # <CJK>
+<U9352> \x8F\xE4\xED |0 # <CJK>
+<U9355> \x8F\xE4\xEE |0 # <CJK>
+<U9357> \x8F\xE4\xEF |0 # <CJK>
+<U9358> \x8F\xE4\xF0 |0 # <CJK>
+<U935A> \x8F\xE4\xF1 |0 # <CJK>
+<U935E> \x8F\xE4\xF2 |0 # <CJK>
+<U9364> \x8F\xE4\xF3 |0 # <CJK>
+<U9365> \x8F\xE4\xF4 |0 # <CJK>
+<U9367> \x8F\xE4\xF5 |0 # <CJK>
+<U9369> \x8F\xE4\xF6 |0 # <CJK>
+<U936A> \x8F\xE4\xF7 |0 # <CJK>
+<U936D> \x8F\xE4\xF8 |0 # <CJK>
+<U936F> \x8F\xE4\xF9 |0 # <CJK>
+<U9370> \x8F\xE4\xFA |0 # <CJK>
+<U9371> \x8F\xE4\xFB |0 # <CJK>
+<U9373> \x8F\xE4\xFC |0 # <CJK>
+<U9374> \x8F\xE4\xFD |0 # <CJK>
+<U9376> \x8F\xE4\xFE |0 # <CJK>
+<U937A> \x8F\xE5\xA1 |0 # <CJK>
+<U937D> \x8F\xE5\xA2 |0 # <CJK>
+<U937F> \x8F\xE5\xA3 |0 # <CJK>
+<U9380> \x8F\xE5\xA4 |0 # <CJK>
+<U9381> \x8F\xE5\xA5 |0 # <CJK>
+<U9382> \x8F\xE5\xA6 |0 # <CJK>
+<U9388> \x8F\xE5\xA7 |0 # <CJK>
+<U938A> \x8F\xE5\xA8 |0 # <CJK>
+<U938B> \x8F\xE5\xA9 |0 # <CJK>
+<U938D> \x8F\xE5\xAA |0 # <CJK>
+<U938F> \x8F\xE5\xAB |0 # <CJK>
+<U9392> \x8F\xE5\xAC |0 # <CJK>
+<U9395> \x8F\xE5\xAD |0 # <CJK>
+<U9398> \x8F\xE5\xAE |0 # <CJK>
+<U939B> \x8F\xE5\xAF |0 # <CJK>
+<U939E> \x8F\xE5\xB0 |0 # <CJK>
+<U93A1> \x8F\xE5\xB1 |0 # <CJK>
+<U93A3> \x8F\xE5\xB2 |0 # <CJK>
+<U93A4> \x8F\xE5\xB3 |0 # <CJK>
+<U93A6> \x8F\xE5\xB4 |0 # <CJK>
+<U93A8> \x8F\xE5\xB5 |0 # <CJK>
+<U93AB> \x8F\xE5\xB6 |0 # <CJK>
+<U93B4> \x8F\xE5\xB7 |0 # <CJK>
+<U93B5> \x8F\xE5\xB8 |0 # <CJK>
+<U93B6> \x8F\xE5\xB9 |0 # <CJK>
+<U93BA> \x8F\xE5\xBA |0 # <CJK>
+<U93A9> \x8F\xE5\xBB |0 # <CJK>
+<U93C1> \x8F\xE5\xBC |0 # <CJK>
+<U93C4> \x8F\xE5\xBD |0 # <CJK>
+<U93C5> \x8F\xE5\xBE |0 # <CJK>
+<U93C6> \x8F\xE5\xBF |0 # <CJK>
+<U93C7> \x8F\xE5\xC0 |0 # <CJK>
+<U93C9> \x8F\xE5\xC1 |0 # <CJK>
+<U93CA> \x8F\xE5\xC2 |0 # <CJK>
+<U93CB> \x8F\xE5\xC3 |0 # <CJK>
+<U93CC> \x8F\xE5\xC4 |0 # <CJK>
+<U93CD> \x8F\xE5\xC5 |0 # <CJK>
+<U93D3> \x8F\xE5\xC6 |0 # <CJK>
+<U93D9> \x8F\xE5\xC7 |0 # <CJK>
+<U93DC> \x8F\xE5\xC8 |0 # <CJK>
+<U93DE> \x8F\xE5\xC9 |0 # <CJK>
+<U93DF> \x8F\xE5\xCA |0 # <CJK>
+<U93E2> \x8F\xE5\xCB |0 # <CJK>
+<U93E6> \x8F\xE5\xCC |0 # <CJK>
+<U93E7> \x8F\xE5\xCD |0 # <CJK>
+<U93F9> \x8F\xE5\xCE |0 # <CJK>
+<U93F7> \x8F\xE5\xCF |0 # <CJK>
+<U93F8> \x8F\xE5\xD0 |0 # <CJK>
+<U93FA> \x8F\xE5\xD1 |0 # <CJK>
+<U93FB> \x8F\xE5\xD2 |0 # <CJK>
+<U93FD> \x8F\xE5\xD3 |0 # <CJK>
+<U9401> \x8F\xE5\xD4 |0 # <CJK>
+<U9402> \x8F\xE5\xD5 |0 # <CJK>
+<U9404> \x8F\xE5\xD6 |0 # <CJK>
+<U9408> \x8F\xE5\xD7 |0 # <CJK>
+<U9409> \x8F\xE5\xD8 |0 # <CJK>
+<U940D> \x8F\xE5\xD9 |0 # <CJK>
+<U940E> \x8F\xE5\xDA |0 # <CJK>
+<U940F> \x8F\xE5\xDB |0 # <CJK>
+<U9415> \x8F\xE5\xDC |0 # <CJK>
+<U9416> \x8F\xE5\xDD |0 # <CJK>
+<U9417> \x8F\xE5\xDE |0 # <CJK>
+<U941F> \x8F\xE5\xDF |0 # <CJK>
+<U942E> \x8F\xE5\xE0 |0 # <CJK>
+<U942F> \x8F\xE5\xE1 |0 # <CJK>
+<U9431> \x8F\xE5\xE2 |0 # <CJK>
+<U9432> \x8F\xE5\xE3 |0 # <CJK>
+<U9433> \x8F\xE5\xE4 |0 # <CJK>
+<U9434> \x8F\xE5\xE5 |0 # <CJK>
+<U943B> \x8F\xE5\xE6 |0 # <CJK>
+<U943F> \x8F\xE5\xE7 |0 # <CJK>
+<U943D> \x8F\xE5\xE8 |0 # <CJK>
+<U9443> \x8F\xE5\xE9 |0 # <CJK>
+<U9445> \x8F\xE5\xEA |0 # <CJK>
+<U9448> \x8F\xE5\xEB |0 # <CJK>
+<U944A> \x8F\xE5\xEC |0 # <CJK>
+<U944C> \x8F\xE5\xED |0 # <CJK>
+<U9455> \x8F\xE5\xEE |0 # <CJK>
+<U9459> \x8F\xE5\xEF |0 # <CJK>
+<U945C> \x8F\xE5\xF0 |0 # <CJK>
+<U945F> \x8F\xE5\xF1 |0 # <CJK>
+<U9461> \x8F\xE5\xF2 |0 # <CJK>
+<U9463> \x8F\xE5\xF3 |0 # <CJK>
+<U9468> \x8F\xE5\xF4 |0 # <CJK>
+<U946B> \x8F\xE5\xF5 |0 # <CJK>
+<U946D> \x8F\xE5\xF6 |0 # <CJK>
+<U946E> \x8F\xE5\xF7 |0 # <CJK>
+<U946F> \x8F\xE5\xF8 |0 # <CJK>
+<U9471> \x8F\xE5\xF9 |0 # <CJK>
+<U9472> \x8F\xE5\xFA |0 # <CJK>
+<U9484> \x8F\xE5\xFB |0 # <CJK>
+<U9483> \x8F\xE5\xFC |0 # <CJK>
+<U9578> \x8F\xE5\xFD |0 # <CJK>
+<U9579> \x8F\xE5\xFE |0 # <CJK>
+<U957E> \x8F\xE6\xA1 |0 # <CJK>
+<U9584> \x8F\xE6\xA2 |0 # <CJK>
+<U9588> \x8F\xE6\xA3 |0 # <CJK>
+<U958C> \x8F\xE6\xA4 |0 # <CJK>
+<U958D> \x8F\xE6\xA5 |0 # <CJK>
+<U958E> \x8F\xE6\xA6 |0 # <CJK>
+<U959D> \x8F\xE6\xA7 |0 # <CJK>
+<U959E> \x8F\xE6\xA8 |0 # <CJK>
+<U959F> \x8F\xE6\xA9 |0 # <CJK>
+<U95A1> \x8F\xE6\xAA |0 # <CJK>
+<U95A6> \x8F\xE6\xAB |0 # <CJK>
+<U95A9> \x8F\xE6\xAC |0 # <CJK>
+<U95AB> \x8F\xE6\xAD |0 # <CJK>
+<U95AC> \x8F\xE6\xAE |0 # <CJK>
+<U95B4> \x8F\xE6\xAF |0 # <CJK>
+<U95B6> \x8F\xE6\xB0 |0 # <CJK>
+<U95BA> \x8F\xE6\xB1 |0 # <CJK>
+<U95BD> \x8F\xE6\xB2 |0 # <CJK>
+<U95BF> \x8F\xE6\xB3 |0 # <CJK>
+<U95C6> \x8F\xE6\xB4 |0 # <CJK>
+<U95C8> \x8F\xE6\xB5 |0 # <CJK>
+<U95C9> \x8F\xE6\xB6 |0 # <CJK>
+<U95CB> \x8F\xE6\xB7 |0 # <CJK>
+<U95D0> \x8F\xE6\xB8 |0 # <CJK>
+<U95D1> \x8F\xE6\xB9 |0 # <CJK>
+<U95D2> \x8F\xE6\xBA |0 # <CJK>
+<U95D3> \x8F\xE6\xBB |0 # <CJK>
+<U95D9> \x8F\xE6\xBC |0 # <CJK>
+<U95DA> \x8F\xE6\xBD |0 # <CJK>
+<U95DD> \x8F\xE6\xBE |0 # <CJK>
+<U95DE> \x8F\xE6\xBF |0 # <CJK>
+<U95DF> \x8F\xE6\xC0 |0 # <CJK>
+<U95E0> \x8F\xE6\xC1 |0 # <CJK>
+<U95E4> \x8F\xE6\xC2 |0 # <CJK>
+<U95E6> \x8F\xE6\xC3 |0 # <CJK>
+<U961D> \x8F\xE6\xC4 |0 # <CJK>
+<U961E> \x8F\xE6\xC5 |0 # <CJK>
+<U9622> \x8F\xE6\xC6 |0 # <CJK>
+<U9624> \x8F\xE6\xC7 |0 # <CJK>
+<U9625> \x8F\xE6\xC8 |0 # <CJK>
+<U9626> \x8F\xE6\xC9 |0 # <CJK>
+<U962C> \x8F\xE6\xCA |0 # <CJK>
+<U9631> \x8F\xE6\xCB |0 # <CJK>
+<U9633> \x8F\xE6\xCC |0 # <CJK>
+<U9637> \x8F\xE6\xCD |0 # <CJK>
+<U9638> \x8F\xE6\xCE |0 # <CJK>
+<U9639> \x8F\xE6\xCF |0 # <CJK>
+<U963A> \x8F\xE6\xD0 |0 # <CJK>
+<U963C> \x8F\xE6\xD1 |0 # <CJK>
+<U963D> \x8F\xE6\xD2 |0 # <CJK>
+<U9641> \x8F\xE6\xD3 |0 # <CJK>
+<U9652> \x8F\xE6\xD4 |0 # <CJK>
+<U9654> \x8F\xE6\xD5 |0 # <CJK>
+<U9656> \x8F\xE6\xD6 |0 # <CJK>
+<U9657> \x8F\xE6\xD7 |0 # <CJK>
+<U9658> \x8F\xE6\xD8 |0 # <CJK>
+<U9661> \x8F\xE6\xD9 |0 # <CJK>
+<U966E> \x8F\xE6\xDA |0 # <CJK>
+<U9674> \x8F\xE6\xDB |0 # <CJK>
+<U967B> \x8F\xE6\xDC |0 # <CJK>
+<U967C> \x8F\xE6\xDD |0 # <CJK>
+<U967E> \x8F\xE6\xDE |0 # <CJK>
+<U967F> \x8F\xE6\xDF |0 # <CJK>
+<U9681> \x8F\xE6\xE0 |0 # <CJK>
+<U9682> \x8F\xE6\xE1 |0 # <CJK>
+<U9683> \x8F\xE6\xE2 |0 # <CJK>
+<U9684> \x8F\xE6\xE3 |0 # <CJK>
+<U9689> \x8F\xE6\xE4 |0 # <CJK>
+<U9691> \x8F\xE6\xE5 |0 # <CJK>
+<U9696> \x8F\xE6\xE6 |0 # <CJK>
+<U969A> \x8F\xE6\xE7 |0 # <CJK>
+<U969D> \x8F\xE6\xE8 |0 # <CJK>
+<U969F> \x8F\xE6\xE9 |0 # <CJK>
+<U96A4> \x8F\xE6\xEA |0 # <CJK>
+<U96A5> \x8F\xE6\xEB |0 # <CJK>
+<U96A6> \x8F\xE6\xEC |0 # <CJK>
+<U96A9> \x8F\xE6\xED |0 # <CJK>
+<U96AE> \x8F\xE6\xEE |0 # <CJK>
+<U96AF> \x8F\xE6\xEF |0 # <CJK>
+<U96B3> \x8F\xE6\xF0 |0 # <CJK>
+<U96BA> \x8F\xE6\xF1 |0 # <CJK>
+<U96CA> \x8F\xE6\xF2 |0 # <CJK>
+<U96D2> \x8F\xE6\xF3 |0 # <CJK>
+<U5DB2> \x8F\xE6\xF4 |0 # <CJK>
+<U96D8> \x8F\xE6\xF5 |0 # <CJK>
+<U96DA> \x8F\xE6\xF6 |0 # <CJK>
+<U96DD> \x8F\xE6\xF7 |0 # <CJK>
+<U96DE> \x8F\xE6\xF8 |0 # <CJK>
+<U96DF> \x8F\xE6\xF9 |0 # <CJK>
+<U96E9> \x8F\xE6\xFA |0 # <CJK>
+<U96EF> \x8F\xE6\xFB |0 # <CJK>
+<U96F1> \x8F\xE6\xFC |0 # <CJK>
+<U96FA> \x8F\xE6\xFD |0 # <CJK>
+<U9702> \x8F\xE6\xFE |0 # <CJK>
+<U9703> \x8F\xE7\xA1 |0 # <CJK>
+<U9705> \x8F\xE7\xA2 |0 # <CJK>
+<U9709> \x8F\xE7\xA3 |0 # <CJK>
+<U971A> \x8F\xE7\xA4 |0 # <CJK>
+<U971B> \x8F\xE7\xA5 |0 # <CJK>
+<U971D> \x8F\xE7\xA6 |0 # <CJK>
+<U9721> \x8F\xE7\xA7 |0 # <CJK>
+<U9722> \x8F\xE7\xA8 |0 # <CJK>
+<U9723> \x8F\xE7\xA9 |0 # <CJK>
+<U9728> \x8F\xE7\xAA |0 # <CJK>
+<U9731> \x8F\xE7\xAB |0 # <CJK>
+<U9733> \x8F\xE7\xAC |0 # <CJK>
+<U9741> \x8F\xE7\xAD |0 # <CJK>
+<U9743> \x8F\xE7\xAE |0 # <CJK>
+<U974A> \x8F\xE7\xAF |0 # <CJK>
+<U974E> \x8F\xE7\xB0 |0 # <CJK>
+<U974F> \x8F\xE7\xB1 |0 # <CJK>
+<U9755> \x8F\xE7\xB2 |0 # <CJK>
+<U9757> \x8F\xE7\xB3 |0 # <CJK>
+<U9758> \x8F\xE7\xB4 |0 # <CJK>
+<U975A> \x8F\xE7\xB5 |0 # <CJK>
+<U975B> \x8F\xE7\xB6 |0 # <CJK>
+<U9763> \x8F\xE7\xB7 |0 # <CJK>
+<U9767> \x8F\xE7\xB8 |0 # <CJK>
+<U976A> \x8F\xE7\xB9 |0 # <CJK>
+<U976E> \x8F\xE7\xBA |0 # <CJK>
+<U9773> \x8F\xE7\xBB |0 # <CJK>
+<U9776> \x8F\xE7\xBC |0 # <CJK>
+<U9777> \x8F\xE7\xBD |0 # <CJK>
+<U9778> \x8F\xE7\xBE |0 # <CJK>
+<U977B> \x8F\xE7\xBF |0 # <CJK>
+<U977D> \x8F\xE7\xC0 |0 # <CJK>
+<U977F> \x8F\xE7\xC1 |0 # <CJK>
+<U9780> \x8F\xE7\xC2 |0 # <CJK>
+<U9789> \x8F\xE7\xC3 |0 # <CJK>
+<U9795> \x8F\xE7\xC4 |0 # <CJK>
+<U9796> \x8F\xE7\xC5 |0 # <CJK>
+<U9797> \x8F\xE7\xC6 |0 # <CJK>
+<U9799> \x8F\xE7\xC7 |0 # <CJK>
+<U979A> \x8F\xE7\xC8 |0 # <CJK>
+<U979E> \x8F\xE7\xC9 |0 # <CJK>
+<U979F> \x8F\xE7\xCA |0 # <CJK>
+<U97A2> \x8F\xE7\xCB |0 # <CJK>
+<U97AC> \x8F\xE7\xCC |0 # <CJK>
+<U97AE> \x8F\xE7\xCD |0 # <CJK>
+<U97B1> \x8F\xE7\xCE |0 # <CJK>
+<U97B2> \x8F\xE7\xCF |0 # <CJK>
+<U97B5> \x8F\xE7\xD0 |0 # <CJK>
+<U97B6> \x8F\xE7\xD1 |0 # <CJK>
+<U97B8> \x8F\xE7\xD2 |0 # <CJK>
+<U97B9> \x8F\xE7\xD3 |0 # <CJK>
+<U97BA> \x8F\xE7\xD4 |0 # <CJK>
+<U97BC> \x8F\xE7\xD5 |0 # <CJK>
+<U97BE> \x8F\xE7\xD6 |0 # <CJK>
+<U97BF> \x8F\xE7\xD7 |0 # <CJK>
+<U97C1> \x8F\xE7\xD8 |0 # <CJK>
+<U97C4> \x8F\xE7\xD9 |0 # <CJK>
+<U97C5> \x8F\xE7\xDA |0 # <CJK>
+<U97C7> \x8F\xE7\xDB |0 # <CJK>
+<U97C9> \x8F\xE7\xDC |0 # <CJK>
+<U97CA> \x8F\xE7\xDD |0 # <CJK>
+<U97CC> \x8F\xE7\xDE |0 # <CJK>
+<U97CD> \x8F\xE7\xDF |0 # <CJK>
+<U97CE> \x8F\xE7\xE0 |0 # <CJK>
+<U97D0> \x8F\xE7\xE1 |0 # <CJK>
+<U97D1> \x8F\xE7\xE2 |0 # <CJK>
+<U97D4> \x8F\xE7\xE3 |0 # <CJK>
+<U97D7> \x8F\xE7\xE4 |0 # <CJK>
+<U97D8> \x8F\xE7\xE5 |0 # <CJK>
+<U97D9> \x8F\xE7\xE6 |0 # <CJK>
+<U97DD> \x8F\xE7\xE7 |0 # <CJK>
+<U97DE> \x8F\xE7\xE8 |0 # <CJK>
+<U97E0> \x8F\xE7\xE9 |0 # <CJK>
+<U97DB> \x8F\xE7\xEA |0 # <CJK>
+<U97E1> \x8F\xE7\xEB |0 # <CJK>
+<U97E4> \x8F\xE7\xEC |0 # <CJK>
+<U97EF> \x8F\xE7\xED |0 # <CJK>
+<U97F1> \x8F\xE7\xEE |0 # <CJK>
+<U97F4> \x8F\xE7\xEF |0 # <CJK>
+<U97F7> \x8F\xE7\xF0 |0 # <CJK>
+<U97F8> \x8F\xE7\xF1 |0 # <CJK>
+<U97FA> \x8F\xE7\xF2 |0 # <CJK>
+<U9807> \x8F\xE7\xF3 |0 # <CJK>
+<U980A> \x8F\xE7\xF4 |0 # <CJK>
+<U9819> \x8F\xE7\xF5 |0 # <CJK>
+<U980D> \x8F\xE7\xF6 |0 # <CJK>
+<U980E> \x8F\xE7\xF7 |0 # <CJK>
+<U9814> \x8F\xE7\xF8 |0 # <CJK>
+<U9816> \x8F\xE7\xF9 |0 # <CJK>
+<U981C> \x8F\xE7\xFA |0 # <CJK>
+<U981E> \x8F\xE7\xFB |0 # <CJK>
+<U9820> \x8F\xE7\xFC |0 # <CJK>
+<U9823> \x8F\xE7\xFD |0 # <CJK>
+<U9826> \x8F\xE7\xFE |0 # <CJK>
+<U982B> \x8F\xE8\xA1 |0 # <CJK>
+<U982E> \x8F\xE8\xA2 |0 # <CJK>
+<U982F> \x8F\xE8\xA3 |0 # <CJK>
+<U9830> \x8F\xE8\xA4 |0 # <CJK>
+<U9832> \x8F\xE8\xA5 |0 # <CJK>
+<U9833> \x8F\xE8\xA6 |0 # <CJK>
+<U9835> \x8F\xE8\xA7 |0 # <CJK>
+<U9825> \x8F\xE8\xA8 |0 # <CJK>
+<U983E> \x8F\xE8\xA9 |0 # <CJK>
+<U9844> \x8F\xE8\xAA |0 # <CJK>
+<U9847> \x8F\xE8\xAB |0 # <CJK>
+<U984A> \x8F\xE8\xAC |0 # <CJK>
+<U9851> \x8F\xE8\xAD |0 # <CJK>
+<U9852> \x8F\xE8\xAE |0 # <CJK>
+<U9853> \x8F\xE8\xAF |0 # <CJK>
+<U9856> \x8F\xE8\xB0 |0 # <CJK>
+<U9857> \x8F\xE8\xB1 |0 # <CJK>
+<U9859> \x8F\xE8\xB2 |0 # <CJK>
+<U985A> \x8F\xE8\xB3 |0 # <CJK>
+<U9862> \x8F\xE8\xB4 |0 # <CJK>
+<U9863> \x8F\xE8\xB5 |0 # <CJK>
+<U9865> \x8F\xE8\xB6 |0 # <CJK>
+<U9866> \x8F\xE8\xB7 |0 # <CJK>
+<U986A> \x8F\xE8\xB8 |0 # <CJK>
+<U986C> \x8F\xE8\xB9 |0 # <CJK>
+<U98AB> \x8F\xE8\xBA |0 # <CJK>
+<U98AD> \x8F\xE8\xBB |0 # <CJK>
+<U98AE> \x8F\xE8\xBC |0 # <CJK>
+<U98B0> \x8F\xE8\xBD |0 # <CJK>
+<U98B4> \x8F\xE8\xBE |0 # <CJK>
+<U98B7> \x8F\xE8\xBF |0 # <CJK>
+<U98B8> \x8F\xE8\xC0 |0 # <CJK>
+<U98BA> \x8F\xE8\xC1 |0 # <CJK>
+<U98BB> \x8F\xE8\xC2 |0 # <CJK>
+<U98BF> \x8F\xE8\xC3 |0 # <CJK>
+<U98C2> \x8F\xE8\xC4 |0 # <CJK>
+<U98C5> \x8F\xE8\xC5 |0 # <CJK>
+<U98C8> \x8F\xE8\xC6 |0 # <CJK>
+<U98CC> \x8F\xE8\xC7 |0 # <CJK>
+<U98E1> \x8F\xE8\xC8 |0 # <CJK>
+<U98E3> \x8F\xE8\xC9 |0 # <CJK>
+<U98E5> \x8F\xE8\xCA |0 # <CJK>
+<U98E6> \x8F\xE8\xCB |0 # <CJK>
+<U98E7> \x8F\xE8\xCC |0 # <CJK>
+<U98EA> \x8F\xE8\xCD |0 # <CJK>
+<U98F3> \x8F\xE8\xCE |0 # <CJK>
+<U98F6> \x8F\xE8\xCF |0 # <CJK>
+<U9902> \x8F\xE8\xD0 |0 # <CJK>
+<U9907> \x8F\xE8\xD1 |0 # <CJK>
+<U9908> \x8F\xE8\xD2 |0 # <CJK>
+<U9911> \x8F\xE8\xD3 |0 # <CJK>
+<U9915> \x8F\xE8\xD4 |0 # <CJK>
+<U9916> \x8F\xE8\xD5 |0 # <CJK>
+<U9917> \x8F\xE8\xD6 |0 # <CJK>
+<U991A> \x8F\xE8\xD7 |0 # <CJK>
+<U991B> \x8F\xE8\xD8 |0 # <CJK>
+<U991C> \x8F\xE8\xD9 |0 # <CJK>
+<U991F> \x8F\xE8\xDA |0 # <CJK>
+<U9922> \x8F\xE8\xDB |0 # <CJK>
+<U9926> \x8F\xE8\xDC |0 # <CJK>
+<U9927> \x8F\xE8\xDD |0 # <CJK>
+<U992B> \x8F\xE8\xDE |0 # <CJK>
+<U9931> \x8F\xE8\xDF |0 # <CJK>
+<U9932> \x8F\xE8\xE0 |0 # <CJK>
+<U9933> \x8F\xE8\xE1 |0 # <CJK>
+<U9934> \x8F\xE8\xE2 |0 # <CJK>
+<U9935> \x8F\xE8\xE3 |0 # <CJK>
+<U9939> \x8F\xE8\xE4 |0 # <CJK>
+<U993A> \x8F\xE8\xE5 |0 # <CJK>
+<U993B> \x8F\xE8\xE6 |0 # <CJK>
+<U993C> \x8F\xE8\xE7 |0 # <CJK>
+<U9940> \x8F\xE8\xE8 |0 # <CJK>
+<U9941> \x8F\xE8\xE9 |0 # <CJK>
+<U9946> \x8F\xE8\xEA |0 # <CJK>
+<U9947> \x8F\xE8\xEB |0 # <CJK>
+<U9948> \x8F\xE8\xEC |0 # <CJK>
+<U994D> \x8F\xE8\xED |0 # <CJK>
+<U994E> \x8F\xE8\xEE |0 # <CJK>
+<U9954> \x8F\xE8\xEF |0 # <CJK>
+<U9958> \x8F\xE8\xF0 |0 # <CJK>
+<U9959> \x8F\xE8\xF1 |0 # <CJK>
+<U995B> \x8F\xE8\xF2 |0 # <CJK>
+<U995C> \x8F\xE8\xF3 |0 # <CJK>
+<U995E> \x8F\xE8\xF4 |0 # <CJK>
+<U995F> \x8F\xE8\xF5 |0 # <CJK>
+<U9960> \x8F\xE8\xF6 |0 # <CJK>
+<U999B> \x8F\xE8\xF7 |0 # <CJK>
+<U999D> \x8F\xE8\xF8 |0 # <CJK>
+<U999F> \x8F\xE8\xF9 |0 # <CJK>
+<U99A6> \x8F\xE8\xFA |0 # <CJK>
+<U99B0> \x8F\xE8\xFB |0 # <CJK>
+<U99B1> \x8F\xE8\xFC |0 # <CJK>
+<U99B2> \x8F\xE8\xFD |0 # <CJK>
+<U99B5> \x8F\xE8\xFE |0 # <CJK>
+<U99B9> \x8F\xE9\xA1 |0 # <CJK>
+<U99BA> \x8F\xE9\xA2 |0 # <CJK>
+<U99BD> \x8F\xE9\xA3 |0 # <CJK>
+<U99BF> \x8F\xE9\xA4 |0 # <CJK>
+<U99C3> \x8F\xE9\xA5 |0 # <CJK>
+<U99C9> \x8F\xE9\xA6 |0 # <CJK>
+<U99D3> \x8F\xE9\xA7 |0 # <CJK>
+<U99D4> \x8F\xE9\xA8 |0 # <CJK>
+<U99D9> \x8F\xE9\xA9 |0 # <CJK>
+<U99DA> \x8F\xE9\xAA |0 # <CJK>
+<U99DC> \x8F\xE9\xAB |0 # <CJK>
+<U99DE> \x8F\xE9\xAC |0 # <CJK>
+<U99E7> \x8F\xE9\xAD |0 # <CJK>
+<U99EA> \x8F\xE9\xAE |0 # <CJK>
+<U99EB> \x8F\xE9\xAF |0 # <CJK>
+<U99EC> \x8F\xE9\xB0 |0 # <CJK>
+<U99F0> \x8F\xE9\xB1 |0 # <CJK>
+<U99F4> \x8F\xE9\xB2 |0 # <CJK>
+<U99F5> \x8F\xE9\xB3 |0 # <CJK>
+<U99F9> \x8F\xE9\xB4 |0 # <CJK>
+<U99FD> \x8F\xE9\xB5 |0 # <CJK>
+<U99FE> \x8F\xE9\xB6 |0 # <CJK>
+<U9A02> \x8F\xE9\xB7 |0 # <CJK>
+<U9A03> \x8F\xE9\xB8 |0 # <CJK>
+<U9A04> \x8F\xE9\xB9 |0 # <CJK>
+<U9A0B> \x8F\xE9\xBA |0 # <CJK>
+<U9A0C> \x8F\xE9\xBB |0 # <CJK>
+<U9A10> \x8F\xE9\xBC |0 # <CJK>
+<U9A11> \x8F\xE9\xBD |0 # <CJK>
+<U9A16> \x8F\xE9\xBE |0 # <CJK>
+<U9A1E> \x8F\xE9\xBF |0 # <CJK>
+<U9A20> \x8F\xE9\xC0 |0 # <CJK>
+<U9A22> \x8F\xE9\xC1 |0 # <CJK>
+<U9A23> \x8F\xE9\xC2 |0 # <CJK>
+<U9A24> \x8F\xE9\xC3 |0 # <CJK>
+<U9A27> \x8F\xE9\xC4 |0 # <CJK>
+<U9A2D> \x8F\xE9\xC5 |0 # <CJK>
+<U9A2E> \x8F\xE9\xC6 |0 # <CJK>
+<U9A33> \x8F\xE9\xC7 |0 # <CJK>
+<U9A35> \x8F\xE9\xC8 |0 # <CJK>
+<U9A36> \x8F\xE9\xC9 |0 # <CJK>
+<U9A38> \x8F\xE9\xCA |0 # <CJK>
+<U9A47> \x8F\xE9\xCB |0 # <CJK>
+<U9A41> \x8F\xE9\xCC |0 # <CJK>
+<U9A44> \x8F\xE9\xCD |0 # <CJK>
+<U9A4A> \x8F\xE9\xCE |0 # <CJK>
+<U9A4B> \x8F\xE9\xCF |0 # <CJK>
+<U9A4C> \x8F\xE9\xD0 |0 # <CJK>
+<U9A4E> \x8F\xE9\xD1 |0 # <CJK>
+<U9A51> \x8F\xE9\xD2 |0 # <CJK>
+<U9A54> \x8F\xE9\xD3 |0 # <CJK>
+<U9A56> \x8F\xE9\xD4 |0 # <CJK>
+<U9A5D> \x8F\xE9\xD5 |0 # <CJK>
+<U9AAA> \x8F\xE9\xD6 |0 # <CJK>
+<U9AAC> \x8F\xE9\xD7 |0 # <CJK>
+<U9AAE> \x8F\xE9\xD8 |0 # <CJK>
+<U9AAF> \x8F\xE9\xD9 |0 # <CJK>
+<U9AB2> \x8F\xE9\xDA |0 # <CJK>
+<U9AB4> \x8F\xE9\xDB |0 # <CJK>
+<U9AB5> \x8F\xE9\xDC |0 # <CJK>
+<U9AB6> \x8F\xE9\xDD |0 # <CJK>
+<U9AB9> \x8F\xE9\xDE |0 # <CJK>
+<U9ABB> \x8F\xE9\xDF |0 # <CJK>
+<U9ABE> \x8F\xE9\xE0 |0 # <CJK>
+<U9ABF> \x8F\xE9\xE1 |0 # <CJK>
+<U9AC1> \x8F\xE9\xE2 |0 # <CJK>
+<U9AC3> \x8F\xE9\xE3 |0 # <CJK>
+<U9AC6> \x8F\xE9\xE4 |0 # <CJK>
+<U9AC8> \x8F\xE9\xE5 |0 # <CJK>
+<U9ACE> \x8F\xE9\xE6 |0 # <CJK>
+<U9AD0> \x8F\xE9\xE7 |0 # <CJK>
+<U9AD2> \x8F\xE9\xE8 |0 # <CJK>
+<U9AD5> \x8F\xE9\xE9 |0 # <CJK>
+<U9AD6> \x8F\xE9\xEA |0 # <CJK>
+<U9AD7> \x8F\xE9\xEB |0 # <CJK>
+<U9ADB> \x8F\xE9\xEC |0 # <CJK>
+<U9ADC> \x8F\xE9\xED |0 # <CJK>
+<U9AE0> \x8F\xE9\xEE |0 # <CJK>
+<U9AE4> \x8F\xE9\xEF |0 # <CJK>
+<U9AE5> \x8F\xE9\xF0 |0 # <CJK>
+<U9AE7> \x8F\xE9\xF1 |0 # <CJK>
+<U9AE9> \x8F\xE9\xF2 |0 # <CJK>
+<U9AEC> \x8F\xE9\xF3 |0 # <CJK>
+<U9AF2> \x8F\xE9\xF4 |0 # <CJK>
+<U9AF3> \x8F\xE9\xF5 |0 # <CJK>
+<U9AF5> \x8F\xE9\xF6 |0 # <CJK>
+<U9AF9> \x8F\xE9\xF7 |0 # <CJK>
+<U9AFA> \x8F\xE9\xF8 |0 # <CJK>
+<U9AFD> \x8F\xE9\xF9 |0 # <CJK>
+<U9AFF> \x8F\xE9\xFA |0 # <CJK>
+<U9B00> \x8F\xE9\xFB |0 # <CJK>
+<U9B01> \x8F\xE9\xFC |0 # <CJK>
+<U9B02> \x8F\xE9\xFD |0 # <CJK>
+<U9B03> \x8F\xE9\xFE |0 # <CJK>
+<U9B04> \x8F\xEA\xA1 |0 # <CJK>
+<U9B05> \x8F\xEA\xA2 |0 # <CJK>
+<U9B08> \x8F\xEA\xA3 |0 # <CJK>
+<U9B09> \x8F\xEA\xA4 |0 # <CJK>
+<U9B0B> \x8F\xEA\xA5 |0 # <CJK>
+<U9B0C> \x8F\xEA\xA6 |0 # <CJK>
+<U9B0D> \x8F\xEA\xA7 |0 # <CJK>
+<U9B0E> \x8F\xEA\xA8 |0 # <CJK>
+<U9B10> \x8F\xEA\xA9 |0 # <CJK>
+<U9B12> \x8F\xEA\xAA |0 # <CJK>
+<U9B16> \x8F\xEA\xAB |0 # <CJK>
+<U9B19> \x8F\xEA\xAC |0 # <CJK>
+<U9B1B> \x8F\xEA\xAD |0 # <CJK>
+<U9B1C> \x8F\xEA\xAE |0 # <CJK>
+<U9B20> \x8F\xEA\xAF |0 # <CJK>
+<U9B26> \x8F\xEA\xB0 |0 # <CJK>
+<U9B2B> \x8F\xEA\xB1 |0 # <CJK>
+<U9B2D> \x8F\xEA\xB2 |0 # <CJK>
+<U9B33> \x8F\xEA\xB3 |0 # <CJK>
+<U9B34> \x8F\xEA\xB4 |0 # <CJK>
+<U9B35> \x8F\xEA\xB5 |0 # <CJK>
+<U9B37> \x8F\xEA\xB6 |0 # <CJK>
+<U9B39> \x8F\xEA\xB7 |0 # <CJK>
+<U9B3A> \x8F\xEA\xB8 |0 # <CJK>
+<U9B3D> \x8F\xEA\xB9 |0 # <CJK>
+<U9B48> \x8F\xEA\xBA |0 # <CJK>
+<U9B4B> \x8F\xEA\xBB |0 # <CJK>
+<U9B4C> \x8F\xEA\xBC |0 # <CJK>
+<U9B55> \x8F\xEA\xBD |0 # <CJK>
+<U9B56> \x8F\xEA\xBE |0 # <CJK>
+<U9B57> \x8F\xEA\xBF |0 # <CJK>
+<U9B5B> \x8F\xEA\xC0 |0 # <CJK>
+<U9B5E> \x8F\xEA\xC1 |0 # <CJK>
+<U9B61> \x8F\xEA\xC2 |0 # <CJK>
+<U9B63> \x8F\xEA\xC3 |0 # <CJK>
+<U9B65> \x8F\xEA\xC4 |0 # <CJK>
+<U9B66> \x8F\xEA\xC5 |0 # <CJK>
+<U9B68> \x8F\xEA\xC6 |0 # <CJK>
+<U9B6A> \x8F\xEA\xC7 |0 # <CJK>
+<U9B6B> \x8F\xEA\xC8 |0 # <CJK>
+<U9B6C> \x8F\xEA\xC9 |0 # <CJK>
+<U9B6D> \x8F\xEA\xCA |0 # <CJK>
+<U9B6E> \x8F\xEA\xCB |0 # <CJK>
+<U9B73> \x8F\xEA\xCC |0 # <CJK>
+<U9B75> \x8F\xEA\xCD |0 # <CJK>
+<U9B77> \x8F\xEA\xCE |0 # <CJK>
+<U9B78> \x8F\xEA\xCF |0 # <CJK>
+<U9B79> \x8F\xEA\xD0 |0 # <CJK>
+<U9B7F> \x8F\xEA\xD1 |0 # <CJK>
+<U9B80> \x8F\xEA\xD2 |0 # <CJK>
+<U9B84> \x8F\xEA\xD3 |0 # <CJK>
+<U9B85> \x8F\xEA\xD4 |0 # <CJK>
+<U9B86> \x8F\xEA\xD5 |0 # <CJK>
+<U9B87> \x8F\xEA\xD6 |0 # <CJK>
+<U9B89> \x8F\xEA\xD7 |0 # <CJK>
+<U9B8A> \x8F\xEA\xD8 |0 # <CJK>
+<U9B8B> \x8F\xEA\xD9 |0 # <CJK>
+<U9B8D> \x8F\xEA\xDA |0 # <CJK>
+<U9B8F> \x8F\xEA\xDB |0 # <CJK>
+<U9B90> \x8F\xEA\xDC |0 # <CJK>
+<U9B94> \x8F\xEA\xDD |0 # <CJK>
+<U9B9A> \x8F\xEA\xDE |0 # <CJK>
+<U9B9D> \x8F\xEA\xDF |0 # <CJK>
+<U9B9E> \x8F\xEA\xE0 |0 # <CJK>
+<U9BA6> \x8F\xEA\xE1 |0 # <CJK>
+<U9BA7> \x8F\xEA\xE2 |0 # <CJK>
+<U9BA9> \x8F\xEA\xE3 |0 # <CJK>
+<U9BAC> \x8F\xEA\xE4 |0 # <CJK>
+<U9BB0> \x8F\xEA\xE5 |0 # <CJK>
+<U9BB1> \x8F\xEA\xE6 |0 # <CJK>
+<U9BB2> \x8F\xEA\xE7 |0 # <CJK>
+<U9BB7> \x8F\xEA\xE8 |0 # <CJK>
+<U9BB8> \x8F\xEA\xE9 |0 # <CJK>
+<U9BBB> \x8F\xEA\xEA |0 # <CJK>
+<U9BBC> \x8F\xEA\xEB |0 # <CJK>
+<U9BBE> \x8F\xEA\xEC |0 # <CJK>
+<U9BBF> \x8F\xEA\xED |0 # <CJK>
+<U9BC1> \x8F\xEA\xEE |0 # <CJK>
+<U9BC7> \x8F\xEA\xEF |0 # <CJK>
+<U9BC8> \x8F\xEA\xF0 |0 # <CJK>
+<U9BCE> \x8F\xEA\xF1 |0 # <CJK>
+<U9BD0> \x8F\xEA\xF2 |0 # <CJK>
+<U9BD7> \x8F\xEA\xF3 |0 # <CJK>
+<U9BD8> \x8F\xEA\xF4 |0 # <CJK>
+<U9BDD> \x8F\xEA\xF5 |0 # <CJK>
+<U9BDF> \x8F\xEA\xF6 |0 # <CJK>
+<U9BE5> \x8F\xEA\xF7 |0 # <CJK>
+<U9BE7> \x8F\xEA\xF8 |0 # <CJK>
+<U9BEA> \x8F\xEA\xF9 |0 # <CJK>
+<U9BEB> \x8F\xEA\xFA |0 # <CJK>
+<U9BEF> \x8F\xEA\xFB |0 # <CJK>
+<U9BF3> \x8F\xEA\xFC |0 # <CJK>
+<U9BF7> \x8F\xEA\xFD |0 # <CJK>
+<U9BF8> \x8F\xEA\xFE |0 # <CJK>
+<U9BF9> \x8F\xEB\xA1 |0 # <CJK>
+<U9BFA> \x8F\xEB\xA2 |0 # <CJK>
+<U9BFD> \x8F\xEB\xA3 |0 # <CJK>
+<U9BFF> \x8F\xEB\xA4 |0 # <CJK>
+<U9C00> \x8F\xEB\xA5 |0 # <CJK>
+<U9C02> \x8F\xEB\xA6 |0 # <CJK>
+<U9C0B> \x8F\xEB\xA7 |0 # <CJK>
+<U9C0F> \x8F\xEB\xA8 |0 # <CJK>
+<U9C11> \x8F\xEB\xA9 |0 # <CJK>
+<U9C16> \x8F\xEB\xAA |0 # <CJK>
+<U9C18> \x8F\xEB\xAB |0 # <CJK>
+<U9C19> \x8F\xEB\xAC |0 # <CJK>
+<U9C1A> \x8F\xEB\xAD |0 # <CJK>
+<U9C1C> \x8F\xEB\xAE |0 # <CJK>
+<U9C1E> \x8F\xEB\xAF |0 # <CJK>
+<U9C22> \x8F\xEB\xB0 |0 # <CJK>
+<U9C23> \x8F\xEB\xB1 |0 # <CJK>
+<U9C26> \x8F\xEB\xB2 |0 # <CJK>
+<U9C27> \x8F\xEB\xB3 |0 # <CJK>
+<U9C28> \x8F\xEB\xB4 |0 # <CJK>
+<U9C29> \x8F\xEB\xB5 |0 # <CJK>
+<U9C2A> \x8F\xEB\xB6 |0 # <CJK>
+<U9C31> \x8F\xEB\xB7 |0 # <CJK>
+<U9C35> \x8F\xEB\xB8 |0 # <CJK>
+<U9C36> \x8F\xEB\xB9 |0 # <CJK>
+<U9C37> \x8F\xEB\xBA |0 # <CJK>
+<U9C3D> \x8F\xEB\xBB |0 # <CJK>
+<U9C41> \x8F\xEB\xBC |0 # <CJK>
+<U9C43> \x8F\xEB\xBD |0 # <CJK>
+<U9C44> \x8F\xEB\xBE |0 # <CJK>
+<U9C45> \x8F\xEB\xBF |0 # <CJK>
+<U9C49> \x8F\xEB\xC0 |0 # <CJK>
+<U9C4A> \x8F\xEB\xC1 |0 # <CJK>
+<U9C4E> \x8F\xEB\xC2 |0 # <CJK>
+<U9C4F> \x8F\xEB\xC3 |0 # <CJK>
+<U9C50> \x8F\xEB\xC4 |0 # <CJK>
+<U9C53> \x8F\xEB\xC5 |0 # <CJK>
+<U9C54> \x8F\xEB\xC6 |0 # <CJK>
+<U9C56> \x8F\xEB\xC7 |0 # <CJK>
+<U9C58> \x8F\xEB\xC8 |0 # <CJK>
+<U9C5B> \x8F\xEB\xC9 |0 # <CJK>
+<U9C5D> \x8F\xEB\xCA |0 # <CJK>
+<U9C5E> \x8F\xEB\xCB |0 # <CJK>
+<U9C5F> \x8F\xEB\xCC |0 # <CJK>
+<U9C63> \x8F\xEB\xCD |0 # <CJK>
+<U9C69> \x8F\xEB\xCE |0 # <CJK>
+<U9C6A> \x8F\xEB\xCF |0 # <CJK>
+<U9C5C> \x8F\xEB\xD0 |0 # <CJK>
+<U9C6B> \x8F\xEB\xD1 |0 # <CJK>
+<U9C68> \x8F\xEB\xD2 |0 # <CJK>
+<U9C6E> \x8F\xEB\xD3 |0 # <CJK>
+<U9C70> \x8F\xEB\xD4 |0 # <CJK>
+<U9C72> \x8F\xEB\xD5 |0 # <CJK>
+<U9C75> \x8F\xEB\xD6 |0 # <CJK>
+<U9C77> \x8F\xEB\xD7 |0 # <CJK>
+<U9C7B> \x8F\xEB\xD8 |0 # <CJK>
+<U9CE6> \x8F\xEB\xD9 |0 # <CJK>
+<U9CF2> \x8F\xEB\xDA |0 # <CJK>
+<U9CF7> \x8F\xEB\xDB |0 # <CJK>
+<U9CF9> \x8F\xEB\xDC |0 # <CJK>
+<U9D0B> \x8F\xEB\xDD |0 # <CJK>
+<U9D02> \x8F\xEB\xDE |0 # <CJK>
+<U9D11> \x8F\xEB\xDF |0 # <CJK>
+<U9D17> \x8F\xEB\xE0 |0 # <CJK>
+<U9D18> \x8F\xEB\xE1 |0 # <CJK>
+<U9D1C> \x8F\xEB\xE2 |0 # <CJK>
+<U9D1D> \x8F\xEB\xE3 |0 # <CJK>
+<U9D1E> \x8F\xEB\xE4 |0 # <CJK>
+<U9D2F> \x8F\xEB\xE5 |0 # <CJK>
+<U9D30> \x8F\xEB\xE6 |0 # <CJK>
+<U9D32> \x8F\xEB\xE7 |0 # <CJK>
+<U9D33> \x8F\xEB\xE8 |0 # <CJK>
+<U9D34> \x8F\xEB\xE9 |0 # <CJK>
+<U9D3A> \x8F\xEB\xEA |0 # <CJK>
+<U9D3C> \x8F\xEB\xEB |0 # <CJK>
+<U9D45> \x8F\xEB\xEC |0 # <CJK>
+<U9D3D> \x8F\xEB\xED |0 # <CJK>
+<U9D42> \x8F\xEB\xEE |0 # <CJK>
+<U9D43> \x8F\xEB\xEF |0 # <CJK>
+<U9D47> \x8F\xEB\xF0 |0 # <CJK>
+<U9D4A> \x8F\xEB\xF1 |0 # <CJK>
+<U9D53> \x8F\xEB\xF2 |0 # <CJK>
+<U9D54> \x8F\xEB\xF3 |0 # <CJK>
+<U9D5F> \x8F\xEB\xF4 |0 # <CJK>
+<U9D63> \x8F\xEB\xF5 |0 # <CJK>
+<U9D62> \x8F\xEB\xF6 |0 # <CJK>
+<U9D65> \x8F\xEB\xF7 |0 # <CJK>
+<U9D69> \x8F\xEB\xF8 |0 # <CJK>
+<U9D6A> \x8F\xEB\xF9 |0 # <CJK>
+<U9D6B> \x8F\xEB\xFA |0 # <CJK>
+<U9D70> \x8F\xEB\xFB |0 # <CJK>
+<U9D76> \x8F\xEB\xFC |0 # <CJK>
+<U9D77> \x8F\xEB\xFD |0 # <CJK>
+<U9D7B> \x8F\xEB\xFE |0 # <CJK>
+<U9D7C> \x8F\xEC\xA1 |0 # <CJK>
+<U9D7E> \x8F\xEC\xA2 |0 # <CJK>
+<U9D83> \x8F\xEC\xA3 |0 # <CJK>
+<U9D84> \x8F\xEC\xA4 |0 # <CJK>
+<U9D86> \x8F\xEC\xA5 |0 # <CJK>
+<U9D8A> \x8F\xEC\xA6 |0 # <CJK>
+<U9D8D> \x8F\xEC\xA7 |0 # <CJK>
+<U9D8E> \x8F\xEC\xA8 |0 # <CJK>
+<U9D92> \x8F\xEC\xA9 |0 # <CJK>
+<U9D93> \x8F\xEC\xAA |0 # <CJK>
+<U9D95> \x8F\xEC\xAB |0 # <CJK>
+<U9D96> \x8F\xEC\xAC |0 # <CJK>
+<U9D97> \x8F\xEC\xAD |0 # <CJK>
+<U9D98> \x8F\xEC\xAE |0 # <CJK>
+<U9DA1> \x8F\xEC\xAF |0 # <CJK>
+<U9DAA> \x8F\xEC\xB0 |0 # <CJK>
+<U9DAC> \x8F\xEC\xB1 |0 # <CJK>
+<U9DAE> \x8F\xEC\xB2 |0 # <CJK>
+<U9DB1> \x8F\xEC\xB3 |0 # <CJK>
+<U9DB5> \x8F\xEC\xB4 |0 # <CJK>
+<U9DB9> \x8F\xEC\xB5 |0 # <CJK>
+<U9DBC> \x8F\xEC\xB6 |0 # <CJK>
+<U9DBF> \x8F\xEC\xB7 |0 # <CJK>
+<U9DC3> \x8F\xEC\xB8 |0 # <CJK>
+<U9DC7> \x8F\xEC\xB9 |0 # <CJK>
+<U9DC9> \x8F\xEC\xBA |0 # <CJK>
+<U9DCA> \x8F\xEC\xBB |0 # <CJK>
+<U9DD4> \x8F\xEC\xBC |0 # <CJK>
+<U9DD5> \x8F\xEC\xBD |0 # <CJK>
+<U9DD6> \x8F\xEC\xBE |0 # <CJK>
+<U9DD7> \x8F\xEC\xBF |0 # <CJK>
+<U9DDA> \x8F\xEC\xC0 |0 # <CJK>
+<U9DDE> \x8F\xEC\xC1 |0 # <CJK>
+<U9DDF> \x8F\xEC\xC2 |0 # <CJK>
+<U9DE0> \x8F\xEC\xC3 |0 # <CJK>
+<U9DE5> \x8F\xEC\xC4 |0 # <CJK>
+<U9DE7> \x8F\xEC\xC5 |0 # <CJK>
+<U9DE9> \x8F\xEC\xC6 |0 # <CJK>
+<U9DEB> \x8F\xEC\xC7 |0 # <CJK>
+<U9DEE> \x8F\xEC\xC8 |0 # <CJK>
+<U9DF0> \x8F\xEC\xC9 |0 # <CJK>
+<U9DF3> \x8F\xEC\xCA |0 # <CJK>
+<U9DF4> \x8F\xEC\xCB |0 # <CJK>
+<U9DFE> \x8F\xEC\xCC |0 # <CJK>
+<U9E0A> \x8F\xEC\xCD |0 # <CJK>
+<U9E02> \x8F\xEC\xCE |0 # <CJK>
+<U9E07> \x8F\xEC\xCF |0 # <CJK>
+<U9E0E> \x8F\xEC\xD0 |0 # <CJK>
+<U9E10> \x8F\xEC\xD1 |0 # <CJK>
+<U9E11> \x8F\xEC\xD2 |0 # <CJK>
+<U9E12> \x8F\xEC\xD3 |0 # <CJK>
+<U9E15> \x8F\xEC\xD4 |0 # <CJK>
+<U9E16> \x8F\xEC\xD5 |0 # <CJK>
+<U9E19> \x8F\xEC\xD6 |0 # <CJK>
+<U9E1C> \x8F\xEC\xD7 |0 # <CJK>
+<U9E1D> \x8F\xEC\xD8 |0 # <CJK>
+<U9E7A> \x8F\xEC\xD9 |0 # <CJK>
+<U9E7B> \x8F\xEC\xDA |0 # <CJK>
+<U9E7C> \x8F\xEC\xDB |0 # <CJK>
+<U9E80> \x8F\xEC\xDC |0 # <CJK>
+<U9E82> \x8F\xEC\xDD |0 # <CJK>
+<U9E83> \x8F\xEC\xDE |0 # <CJK>
+<U9E84> \x8F\xEC\xDF |0 # <CJK>
+<U9E85> \x8F\xEC\xE0 |0 # <CJK>
+<U9E87> \x8F\xEC\xE1 |0 # <CJK>
+<U9E8E> \x8F\xEC\xE2 |0 # <CJK>
+<U9E8F> \x8F\xEC\xE3 |0 # <CJK>
+<U9E96> \x8F\xEC\xE4 |0 # <CJK>
+<U9E98> \x8F\xEC\xE5 |0 # <CJK>
+<U9E9B> \x8F\xEC\xE6 |0 # <CJK>
+<U9E9E> \x8F\xEC\xE7 |0 # <CJK>
+<U9EA4> \x8F\xEC\xE8 |0 # <CJK>
+<U9EA8> \x8F\xEC\xE9 |0 # <CJK>
+<U9EAC> \x8F\xEC\xEA |0 # <CJK>
+<U9EAE> \x8F\xEC\xEB |0 # <CJK>
+<U9EAF> \x8F\xEC\xEC |0 # <CJK>
+<U9EB0> \x8F\xEC\xED |0 # <CJK>
+<U9EB3> \x8F\xEC\xEE |0 # <CJK>
+<U9EB4> \x8F\xEC\xEF |0 # <CJK>
+<U9EB5> \x8F\xEC\xF0 |0 # <CJK>
+<U9EC6> \x8F\xEC\xF1 |0 # <CJK>
+<U9EC8> \x8F\xEC\xF2 |0 # <CJK>
+<U9ECB> \x8F\xEC\xF3 |0 # <CJK>
+<U9ED5> \x8F\xEC\xF4 |0 # <CJK>
+<U9EDF> \x8F\xEC\xF5 |0 # <CJK>
+<U9EE4> \x8F\xEC\xF6 |0 # <CJK>
+<U9EE7> \x8F\xEC\xF7 |0 # <CJK>
+<U9EEC> \x8F\xEC\xF8 |0 # <CJK>
+<U9EED> \x8F\xEC\xF9 |0 # <CJK>
+<U9EEE> \x8F\xEC\xFA |0 # <CJK>
+<U9EF0> \x8F\xEC\xFB |0 # <CJK>
+<U9EF1> \x8F\xEC\xFC |0 # <CJK>
+<U9EF2> \x8F\xEC\xFD |0 # <CJK>
+<U9EF5> \x8F\xEC\xFE |0 # <CJK>
+<U9EF8> \x8F\xED\xA1 |0 # <CJK>
+<U9EFF> \x8F\xED\xA2 |0 # <CJK>
+<U9F02> \x8F\xED\xA3 |0 # <CJK>
+<U9F03> \x8F\xED\xA4 |0 # <CJK>
+<U9F09> \x8F\xED\xA5 |0 # <CJK>
+<U9F0F> \x8F\xED\xA6 |0 # <CJK>
+<U9F10> \x8F\xED\xA7 |0 # <CJK>
+<U9F11> \x8F\xED\xA8 |0 # <CJK>
+<U9F12> \x8F\xED\xA9 |0 # <CJK>
+<U9F14> \x8F\xED\xAA |0 # <CJK>
+<U9F16> \x8F\xED\xAB |0 # <CJK>
+<U9F17> \x8F\xED\xAC |0 # <CJK>
+<U9F19> \x8F\xED\xAD |0 # <CJK>
+<U9F1A> \x8F\xED\xAE |0 # <CJK>
+<U9F1B> \x8F\xED\xAF |0 # <CJK>
+<U9F1F> \x8F\xED\xB0 |0 # <CJK>
+<U9F22> \x8F\xED\xB1 |0 # <CJK>
+<U9F26> \x8F\xED\xB2 |0 # <CJK>
+<U9F2A> \x8F\xED\xB3 |0 # <CJK>
+<U9F2B> \x8F\xED\xB4 |0 # <CJK>
+<U9F2F> \x8F\xED\xB5 |0 # <CJK>
+<U9F31> \x8F\xED\xB6 |0 # <CJK>
+<U9F32> \x8F\xED\xB7 |0 # <CJK>
+<U9F34> \x8F\xED\xB8 |0 # <CJK>
+<U9F37> \x8F\xED\xB9 |0 # <CJK>
+<U9F39> \x8F\xED\xBA |0 # <CJK>
+<U9F3A> \x8F\xED\xBB |0 # <CJK>
+<U9F3C> \x8F\xED\xBC |0 # <CJK>
+<U9F3D> \x8F\xED\xBD |0 # <CJK>
+<U9F3F> \x8F\xED\xBE |0 # <CJK>
+<U9F41> \x8F\xED\xBF |0 # <CJK>
+<U9F43> \x8F\xED\xC0 |0 # <CJK>
+<U9F44> \x8F\xED\xC1 |0 # <CJK>
+<U9F45> \x8F\xED\xC2 |0 # <CJK>
+<U9F46> \x8F\xED\xC3 |0 # <CJK>
+<U9F47> \x8F\xED\xC4 |0 # <CJK>
+<U9F53> \x8F\xED\xC5 |0 # <CJK>
+<U9F55> \x8F\xED\xC6 |0 # <CJK>
+<U9F56> \x8F\xED\xC7 |0 # <CJK>
+<U9F57> \x8F\xED\xC8 |0 # <CJK>
+<U9F58> \x8F\xED\xC9 |0 # <CJK>
+<U9F5A> \x8F\xED\xCA |0 # <CJK>
+<U9F5D> \x8F\xED\xCB |0 # <CJK>
+<U9F5E> \x8F\xED\xCC |0 # <CJK>
+<U9F68> \x8F\xED\xCD |0 # <CJK>
+<U9F69> \x8F\xED\xCE |0 # <CJK>
+<U9F6D> \x8F\xED\xCF |0 # <CJK>
+<U9F6E> \x8F\xED\xD0 |0 # <CJK>
+<U9F6F> \x8F\xED\xD1 |0 # <CJK>
+<U9F70> \x8F\xED\xD2 |0 # <CJK>
+<U9F71> \x8F\xED\xD3 |0 # <CJK>
+<U9F73> \x8F\xED\xD4 |0 # <CJK>
+<U9F75> \x8F\xED\xD5 |0 # <CJK>
+<U9F7A> \x8F\xED\xD6 |0 # <CJK>
+<U9F7D> \x8F\xED\xD7 |0 # <CJK>
+<U9F8F> \x8F\xED\xD8 |0 # <CJK>
+<U9F90> \x8F\xED\xD9 |0 # <CJK>
+<U9F91> \x8F\xED\xDA |0 # <CJK>
+<U9F92> \x8F\xED\xDB |0 # <CJK>
+<U9F94> \x8F\xED\xDC |0 # <CJK>
+<U9F96> \x8F\xED\xDD |0 # <CJK>
+<U9F97> \x8F\xED\xDE |0 # <CJK>
+<U9F9E> \x8F\xED\xDF |0 # <CJK>
+<U9FA1> \x8F\xED\xE0 |0 # <CJK>
+<U9FA2> \x8F\xED\xE1 |0 # <CJK>
+<U9FA3> \x8F\xED\xE2 |0 # <CJK>
+<U9FA5> \x8F\xED\xE3 |0 # <CJK>
+
END CHARMAP
diff --git a/ext/Encode/JP/JP.pm b/ext/Encode/JP/JP.pm
index aadf339a5d..3091a99f5b 100644
--- a/ext/Encode/JP/JP.pm
+++ b/ext/Encode/JP/JP.pm
@@ -5,13 +5,21 @@ BEGIN {
}
}
use Encode;
-our $VERSION = '0.02';
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
use XSLoader;
XSLoader::load('Encode::JP',$VERSION);
use Encode::JP::JIS;
use Encode::JP::ISO_2022_JP;
+Encode::define_alias( qr/euc.*jp$/i => '"euc-jp"' );
+Encode::define_alias( qr/jp.*euc/i => '"euc-jp"' );
+Encode::define_alias( qr/ujis$/i => '"euc-jp"' );
+Encode::define_alias( qr/shift.*jis$/i => '"shiftjis"' );
+Encode::define_alias( qr/sjis$/i => '"shiftjis"' );
+Encode::define_alias( qr/^jis$/i => '"7bit-jis"' );
+
1;
__END__
=head1 NAME
@@ -20,21 +28,28 @@ Encode::JP - Japanese Encodings
=head1 SYNOPSIS
- use Encode 'encode';
+ use Encode qw/encode decode/;
$euc_jp = encode("euc-jp", $utf8); # loads Encode::JP implicitly
- $utf8 = encode("euc-jp", $euc_jp); # ditto
+ $utf8 = decode("euc-jp", $euc_jp); # ditto
=head1 ABSTRACT
This module implements Japanese charset encodings. Encodings
supported are as follows.
- euc-jp EUC (Extended Unix Character)
- shiftjis Shift JIS (aka MS Kanji)
- 7bit-jis 7bit JIS
- iso-2022-jp ISO-2022-JP (7bit JIS with all X201 converted to X208)
- macjapan Mac Japan (Shift JIS + Apple vendor mappings)
- cp932 Code Page 932 (Shift JIS + Microsoft vendor mappings)
+ Canonical Alias Description
+ --------------------------------------------------------------------
+ euc-jp /euc.*jp$/i EUC (Extended Unix Character)
+ /jp.*euc/i
+ /ujis$/i
+ shiftjis /shift.*jis$/i Shift JIS (aka MS Kanji)
+ /sjis$/i
+ 7bit-jis /^jis$/i 7bit JIS
+ iso-2022-jp ISO-2022-JP
+ (7bit JIS with all Halfwidth Kana
+ converted to Fullwidth)
+ macjapan Mac Japan (Shift JIS + Apple vendor mappings)
+ cp932 Code Page 932 (Shift JIS + Microsoft vendor mappings)
=head1 DESCRIPTION
@@ -42,8 +57,6 @@ To find how to use this module in detail, see L<Encode>.
=head1 BUGS
-JIS X0212-1990 is not supported.
-
ASCII part (0x00-0x7f) is preserved for all encodings, even though it
conflicts with mappings by the Unicode Consortium. See
diff --git a/ext/Encode/JP/Makefile.PL b/ext/Encode/JP/Makefile.PL
index 3aac0b033d..cb98de2b63 100644
--- a/ext/Encode/JP/Makefile.PL
+++ b/ext/Encode/JP/Makefile.PL
@@ -2,7 +2,8 @@ use 5.7.2;
use strict;
use ExtUtils::MakeMaker;
-my %tables = (EUC_JP => ['euc-jp.enc'],
+my %tables = (
+ EUC_JP => ['euc-jp.ucm'],
SHIFTJIS => ['shiftjis.enc'],
MACJAPAN => ['macJapan.enc'],
CP932 => ['cp932.enc'],
diff --git a/ext/Encode/KR/KR.pm b/ext/Encode/KR/KR.pm
index fabe33490c..2a6507af5b 100644
--- a/ext/Encode/KR/KR.pm
+++ b/ext/Encode/KR/KR.pm
@@ -1,10 +1,13 @@
package Encode::KR;
-our $VERSION = '0.02';
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
use Encode;
use XSLoader;
XSLoader::load('Encode::KR',$VERSION);
+Encode::define_alias( qr/euc.*kr$/i => '"euc-kr"' );
+Encode::define_alias( qr/kr.*euc/i => '"euc-kr"' );
+
1;
__END__
=head1 NAME
@@ -13,18 +16,23 @@ Encode::KR - Korean Encodings
=head1 SYNOPSIS
- use Encode 'encode';
+ use Encode qw/encode decode/;
$euc_kr = encode("euc-kr", $utf8); # loads Encode::KR implicitly
- $utf8 = encode("euc-kr", $euc_kr); # ditto
+ $utf8 = decode("euc-kr", $euc_kr); # ditto
=head1 DESCRIPTION
This module implements Korean charset encodings. Encodings supported
are as follows.
- euc-kr EUC (Extended Unix Character)
- ksc5601 Korean standard code set
- cp949 Code Page 949 (EUC-KR + Unified Hangul Code)
+
+ Canonical Alias Description
+ --------------------------------------------------------------------
+ euc-kr /euc.*kr$/i EUC (Extended Unix Character)
+ /kr.*euc/i
+ ksc5601 Korean standard code set
+ cp949 Code Page 949
+ (EUC-KR + Unified Hangul Code)
To find how to use this module in detail, see L<Encode>.
diff --git a/ext/Encode/MANIFEST b/ext/Encode/MANIFEST
index dcf7a80617..4d5c6fa6c4 100644
--- a/ext/Encode/MANIFEST
+++ b/ext/Encode/MANIFEST
@@ -1,172 +1,175 @@
-CN/CN.pm
-CN/Makefile.PL
-compile
-encengine.c
-encode.h
-Encode.pm
-Encode.xs
-Encode/11643-1.enc
-Encode/11643-2.enc
-Encode/2022-cn.enc
-Encode/2022-jp.enc
-Encode/2022-jp1.enc
-Encode/2022-jp2.enc
-Encode/2022-kr.enc
-Encode/2022.enc
-Encode/7bit-greek.enc
-Encode/7bit-jis.enc
-Encode/7bit-kana.enc
-Encode/7bit-latin1.enc
-Encode/8859-1.enc
-Encode/8859-1.ucm
-Encode/8859-10.enc
-Encode/8859-10.ucm
-Encode/8859-11.enc
-Encode/8859-11.ucm
-Encode/8859-13.enc
-Encode/8859-13.ucm
-Encode/8859-14.enc
-Encode/8859-14.ucm
-Encode/8859-15.enc
-Encode/8859-15.ucm
-Encode/8859-16.enc
-Encode/8859-16.ucm
-Encode/8859-2.enc
-Encode/8859-2.ucm
-Encode/8859-3.enc
-Encode/8859-3.ucm
-Encode/8859-4.enc
-Encode/8859-4.ucm
-Encode/8859-5.enc
-Encode/8859-5.ucm
-Encode/8859-6.enc
-Encode/8859-6.ucm
-Encode/8859-7.enc
-Encode/8859-7.ucm
-Encode/8859-8.enc
-Encode/8859-8.ucm
-Encode/8859-9.enc
-Encode/8859-9.ucm
-Encode/ascii.enc
-Encode/ascii.ucm
-Encode/big5-hkscs.enc
-Encode/big5.enc
-Encode/cp1006.enc
-Encode/cp1047.enc
-Encode/cp1047.ucm
-Encode/cp1250.enc
-Encode/cp1250.ucm
-Encode/cp1251.enc
-Encode/cp1252.enc
-Encode/cp1253.enc
-Encode/cp1254.enc
-Encode/cp1255.enc
-Encode/cp1256.enc
-Encode/cp1257.enc
-Encode/cp1258.enc
-Encode/cp37.enc
-Encode/cp37.ucm
-Encode/cp424.enc
-Encode/cp437.enc
-Encode/cp737.enc
-Encode/cp775.enc
-Encode/cp850.enc
-Encode/cp852.enc
-Encode/cp855.enc
-Encode/cp856.enc
-Encode/cp857.enc
-Encode/cp860.enc
-Encode/cp861.enc
-Encode/cp862.enc
-Encode/cp863.enc
-Encode/cp864.enc
-Encode/cp865.enc
-Encode/cp866.enc
-Encode/cp869.enc
-Encode/cp874.enc
-Encode/cp932.enc
-Encode/cp936.enc
-Encode/cp949.enc
-Encode/cp950.enc
-Encode/dingbats.enc
-Encode/dingbats.ucm
-Encode/euc-cn.enc
-Encode/euc-jp-0212.enc
-Encode/euc-jp.enc
-Encode/euc-jp.ucm
-Encode/euc-kr.enc
-Encode/gb12345.enc
-Encode/gb1988.enc
-Encode/gb2312.enc
-Encode/gsm0338.enc
-Encode/ir-197.enc
-Encode/iso-ir-165.enc
-Encode/jis0201.enc
-Encode/jis0201.ucm
-Encode/jis0208.enc
-Encode/jis0212.enc
-Encode/koi8-f.enc
-Encode/koi8-f.ucm
-Encode/koi8-r.enc
-Encode/koi8-r.ucm
-Encode/koi8-u.enc
-Encode/koi8-u.ucm
-Encode/ksc5601.enc
-Encode/macCentEuro.enc
-Encode/macCroatian.enc
-Encode/macCyrillic.enc
-Encode/macDingbats.enc
-Encode/macGreek.enc
-Encode/macIceland.enc
-Encode/macJapan.enc
-Encode/macRoman.enc
-Encode/macRumanian.enc
-Encode/macSami.enc
-Encode/macThai.enc
-Encode/macTurkish.enc
-Encode/macUkraine.enc
-Encode/nextstep.enc
-Encode/nextstep.ucm
-Encode/posix-bc.enc
-Encode/posix-bc.ucm
-Encode/roman8.enc
-Encode/roman8.ucm
-Encode/shiftjis.enc
-Encode/symbol.enc
-Encode/symbol.ucm
-Encode/viscii.enc
-Encode/viscii.ucm
-JP/JP.pm
-JP/Makefile.PL
-KR/KR.pm
-KR/Makefile.PL
-lib/Encode/CN/HZ.pm
-lib/Encode/Encoding.pm
-lib/Encode/Internal.pm
-lib/Encode/iso10646_1.pm
-lib/Encode/JP/Constants.pm
-lib/Encode/JP/H2Z.pm
-lib/Encode/JP/ISO_2022_JP.pm
-lib/Encode/JP/JIS.pm
-lib/Encode/Tcl.pm
-lib/Encode/Tcl/Escape.pm
-lib/Encode/Tcl/Extended.pm
-lib/Encode/Tcl/Table.pm
-lib/Encode/ucs2_le.pm
-lib/Encode/Unicode.pm
-lib/Encode/utf8.pm
-lib/Encode/XS.pm
-lib/EncodeFormat.pod
-Makefile.PL
-MANIFEST
-README
-t/CN.t
-t/Encode.t
-t/japanese.pl
-t/JP.t
-t/table.euc
-t/table.ref
-t/Tcl.t
-t/TW.t
-TW/Makefile.PL
-TW/TW.pm
+AUTHORS List of authors
+CN/CN.pm Encode extension
+CN/Makefile.PL Encode extension
+Changes Change Log
+Encode.pm Encode extension
+Encode.xs Encode extension
+Encode/11643-1.enc Encode table
+Encode/11643-2.enc Encode table
+Encode/2022-cn.enc Encode table
+Encode/2022-jp.enc Encode table
+Encode/2022-jp1.enc Encode table
+Encode/2022-jp2.enc Encode table
+Encode/2022-kr.enc Encode table
+Encode/2022.enc Encode table
+Encode/7bit-greek.enc Encode table
+Encode/7bit-jis.enc Encode table
+Encode/7bit-kana.enc Encode table
+Encode/7bit-latin1.enc Encode table
+Encode/8859-1.enc Encode table
+Encode/8859-1.ucm Encode table
+Encode/8859-10.enc Encode table
+Encode/8859-10.ucm Encode table
+Encode/8859-11.enc Encode table
+Encode/8859-11.ucm Encode table
+Encode/8859-13.enc Encode table
+Encode/8859-13.ucm Encode table
+Encode/8859-14.enc Encode table
+Encode/8859-14.ucm Encode table
+Encode/8859-15.enc Encode table
+Encode/8859-15.ucm Encode table
+Encode/8859-16.enc Encode table
+Encode/8859-16.ucm Encode table
+Encode/8859-2.enc Encode table
+Encode/8859-2.ucm Encode table
+Encode/8859-3.enc Encode table
+Encode/8859-3.ucm Encode table
+Encode/8859-4.enc Encode table
+Encode/8859-4.ucm Encode table
+Encode/8859-5.enc Encode table
+Encode/8859-5.ucm Encode table
+Encode/8859-6.enc Encode table
+Encode/8859-6.ucm Encode table
+Encode/8859-7.enc Encode table
+Encode/8859-7.ucm Encode table
+Encode/8859-8.enc Encode table
+Encode/8859-8.ucm Encode table
+Encode/8859-9.enc Encode table
+Encode/8859-9.ucm Encode table
+Encode/ascii.enc Encode table
+Encode/ascii.ucm Encode table
+Encode/big5-hkscs.enc Encode table
+Encode/big5.enc Encode table
+Encode/cp1006.enc Encode table
+Encode/cp1047.enc Encode table
+Encode/cp1047.ucm Encode table
+Encode/cp1250.enc Encode table
+Encode/cp1250.ucm Encode table
+Encode/cp1251.enc Encode table
+Encode/cp1252.enc Encode table
+Encode/cp1253.enc Encode table
+Encode/cp1254.enc Encode table
+Encode/cp1255.enc Encode table
+Encode/cp1256.enc Encode table
+Encode/cp1257.enc Encode table
+Encode/cp1258.enc Encode table
+Encode/cp37.enc Encode table
+Encode/cp37.ucm Encode table
+Encode/cp424.enc Encode table
+Encode/cp437.enc Encode table
+Encode/cp737.enc Encode table
+Encode/cp775.enc Encode table
+Encode/cp850.enc Encode table
+Encode/cp852.enc Encode table
+Encode/cp855.enc Encode table
+Encode/cp856.enc Encode table
+Encode/cp857.enc Encode table
+Encode/cp860.enc Encode table
+Encode/cp861.enc Encode table
+Encode/cp862.enc Encode table
+Encode/cp863.enc Encode table
+Encode/cp864.enc Encode table
+Encode/cp865.enc Encode table
+Encode/cp866.enc Encode table
+Encode/cp869.enc Encode table
+Encode/cp874.enc Encode table
+Encode/cp932.enc Encode table
+Encode/cp936.enc Encode table
+Encode/cp949.enc Encode table
+Encode/cp950.enc Encode table
+Encode/dingbats.enc Encode table
+Encode/dingbats.ucm Encode table
+Encode/euc-cn.enc Encode table
+Encode/euc-jp.enc Encode table
+Encode/euc-jp.ucm Encode table
+Encode/euc-kr.enc Encode table
+Encode/gb12345.enc Encode table
+Encode/gb1988.enc Encode table
+Encode/gb2312.enc Encode table
+Encode/gsm0338.enc Encode table
+Encode/ir-197.enc Encode table
+Encode/iso-ir-165.enc Encode table
+Encode/jis0201.enc Encode table
+Encode/jis0201.ucm Encode table
+Encode/jis0208.enc Encode table
+Encode/jis0212.enc Encode table
+Encode/koi8-f.enc Encode table
+Encode/koi8-f.ucm Encode table
+Encode/koi8-r.enc Encode table
+Encode/koi8-r.ucm Encode table
+Encode/koi8-u.enc Encode table
+Encode/koi8-u.ucm Encode table
+Encode/ksc5601.enc Encode table
+Encode/macCentEuro.enc Encode table
+Encode/macCroatian.enc Encode table
+Encode/macCyrillic.enc Encode table
+Encode/macDingbats.enc Encode table
+Encode/macGreek.enc Encode table
+Encode/macIceland.enc Encode table
+Encode/macJapan.enc Encode table
+Encode/macRoman.enc Encode table
+Encode/macRumanian.enc Encode table
+Encode/macSami.enc Encode table
+Encode/macThai.enc Encode table
+Encode/macTurkish.enc Encode table
+Encode/macUkraine.enc Encode table
+Encode/nextstep.enc Encode table
+Encode/nextstep.ucm Encode table
+Encode/posix-bc.enc Encode table
+Encode/posix-bc.ucm Encode table
+Encode/roman8.enc Encode table
+Encode/roman8.ucm Encode table
+Encode/shiftjis.enc Encode table
+Encode/symbol.enc Encode table
+Encode/symbol.ucm Encode table
+Encode/viscii.enc Encode table
+Encode/viscii.ucm Encode table
+JP/JP.pm Encode extension
+JP/Makefile.PL Encode extension
+KR/KR.pm Encode extension
+KR/Makefile.PL Encode extension
+MANIFEST Encode extension
+Makefile.PL Encode extension makefile writer
+README Encode extension
+TW/Makefile.PL Encode extension
+TW/TW.pm Encode extension
+compile Encode extension
+encengine.c Encode extension
+encode.h Encode extension
+lib/Encode/CN/HZ.pm Encode extension
+lib/Encode/Description.pod General topics on character encodings
+lib/Encode/Encoding.pm Encode extension
+lib/Encode/Internal.pm Encode extension
+lib/Encode/JP/Constants.pm Encode extension
+lib/Encode/JP/H2Z.pm Encode extension
+lib/Encode/JP/ISO_2022_JP.pm Encode extension
+lib/Encode/JP/JIS.pm Encode extension
+lib/Encode/Tcl.pm Encode extension
+lib/Encode/Tcl/Escape.pm Encode extension
+lib/Encode/Tcl/Table.pm Encode extension
+lib/Encode/Unicode.pm Encode extension
+lib/Encode/XS.pm Encode extension
+lib/Encode/iso10646_1.pm Encode extension
+lib/Encode/ucs2_le.pm Encode extension
+lib/Encode/utf8.pm Encode extension
+lib/EncodeFormat.pod Encode extension
+t/CJKalias.t Encode extension test
+t/CN.t Encode extension test
+t/Encode.t Encode extension test
+t/JP.t Encode extension test
+t/TW.t Encode extension test
+t/Tcl.t Encode extension test
+t/jisx0208.euc Encode extension test
+t/jisx0208.ref Encode extension test
+t/jisx0212.euc Encode extension test
+t/jisx0212.ref Encode extension test
diff --git a/ext/Encode/README b/ext/Encode/README
index 6e8384f3f0..9f923fb67c 100644
--- a/ext/Encode/README
+++ b/ext/Encode/README
@@ -24,3 +24,7 @@ DEPENDENCIES
This module requires perl5.7.2 or later.
+QUESTIONS?
+
+If you have any questions "perldoc Encode" does not answer, please
+feel free to ask at perl-unicode@perl.org.
diff --git a/ext/Encode/TW/TW.pm b/ext/Encode/TW/TW.pm
index 20402c2138..3daa2a16b8 100644
--- a/ext/Encode/TW/TW.pm
+++ b/ext/Encode/TW/TW.pm
@@ -1,10 +1,13 @@
package Encode::TW;
-our $VERSION = '0.02';
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
use Encode;
use XSLoader;
XSLoader::load('Encode::TW',$VERSION);
+Encode::define_alias( qr/big-?5$/i => '"big5"' );
+Encode::define_alias( qr/big5-hk(?:scs)?/i => '"big5-hkscs"' );
+
1;
__END__
=head1 NAME
@@ -13,18 +16,22 @@ Encode::TW - Taiwan-based Chinese Encodings
=head1 SYNOPSIS
- use Encode 'encode';
+ use Encode qw/encode decode/;
$big5 = encode("big5", $utf8); # loads Encode::TW implicitly
- $utf8 = encode("big5", $big5); # ditto
+ $utf8 = decode("big5", $big5); # ditto
=head1 DESCRIPTION
This module implements Taiwan-based Chinese charset encodings.
Encodings supported are as follows.
- big5 The original Big5 encoding
- big5-hkscs Big5 plus Cantonese characters in Hong Kong
- cp950 Code Page 950 (Big5 + Microsoft vendor mappings)
+ Canonical Alias Description
+ --------------------------------------------------------------------
+ big5 /big-?5$/i The original Big5 encoding
+ big5-hkscs /big5-hk(scs)?$/i Big5 plus Cantonese characters in
+ Hong Kong
+ cp950 Code Page 950
+ (Big5 + Microsoft vendor mappings)
To find how to use this module in detail, see L<Encode>.
diff --git a/ext/Encode/lib/Encode/CN/HZ.pm b/ext/Encode/lib/Encode/CN/HZ.pm
index f9ff3261ee..6e382ff09a 100644
--- a/ext/Encode/lib/Encode/CN/HZ.pm
+++ b/ext/Encode/lib/Encode/CN/HZ.pm
@@ -4,7 +4,7 @@ use strict;
no warnings 'redefine'; # to quell the "use Encode" below
use vars qw($VERSION);
-$VERSION = 0.01;
+$VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
use Encode::CN;
use Encode qw|encode decode|;
diff --git a/ext/Encode/lib/Encode/Description.pod b/ext/Encode/lib/Encode/Description.pod
new file mode 100644
index 0000000000..aa3a0af782
--- /dev/null
+++ b/ext/Encode/lib/Encode/Description.pod
@@ -0,0 +1,821 @@
+
+=head1 NAME
+
+Encode - character encodings
+
+=head1 SYNOPSIS
+
+ use Encode;
+
+=head1 DESCRIPTION
+
+The C<Encode> module provides the interfaces between Perl's strings
+and the rest of the system. Perl strings are sequences of B<characters>.
+
+The repertoire of characters that Perl can represent is at least that
+defined by the Unicode Consortium. On most platforms the ordinal
+values of the characters (as returned by C<ord(ch)>) is the "Unicode
+codepoint" for the character (the exceptions are those platforms where
+the legacy encoding is some variant of EBCDIC rather than a super-set
+of ASCII - see L<perlebcdic>).
+
+Traditionaly computer data has been moved around in 8-bit chunks
+often called "bytes". These chunks are also known as "octets" in
+networking standards. Perl is widely used to manipulate data of
+many types - not only strings of characters representing human or
+computer languages but also "binary" data being the machines representation
+of numbers, pixels in an image - or just about anything.
+
+When Perl is processing "binary data" the programmer wants Perl to process
+"sequences of bytes". This is not a problem for Perl - as a byte has 256
+possible values it easily fits in Perl's much larger "logical character".
+
+Due to size concerns, each of B<CJK> (Chinese, Japanese & Korean) modules
+are not loaded in memory until the first time they're used. Although you
+don't have to C<use> the corresponding B<Encode::>(B<TW>|B<CN>|B<JP>|B<KR>)
+modules first, be aware that those encodings will not be in C<%encodings>
+until their module is loaded (either implicitly through using encodings
+contained in the same module, or via an explicit C<use>).
+
+=head2 TERMINOLOGY
+
+=over 4
+
+=item *
+
+I<character>: a character in the range 0..(2**32-1) (or more).
+(What Perl's strings are made of.)
+
+=item *
+
+I<byte>: a character in the range 0..255
+(A special case of a Perl character.)
+
+=item *
+
+I<octet>: 8 bits of data, with ordinal values 0..255
+(Term for bytes passed to or from a non-Perl context, e.g. disk file.)
+
+=back
+
+The marker [INTERNAL] marks Internal Implementation Details, in
+general meant only for those who think they know what they are doing,
+and such details may change in future releases.
+
+=head1 ENCODINGS
+
+=head2 Characteristics of an Encoding
+
+An encoding has a "repertoire" of characters that it can represent,
+and for each representable character there is at least one sequence of
+octets that represents it.
+
+=head2 Types of Encodings
+
+Encodings can be divided into the following types:
+
+=over 4
+
+=item * Fixed length 8-bit (or less) encodings.
+
+Each character is a single octet so may have a repertoire of up to
+256 characters. ASCII and iso-8859-* are typical examples.
+
+=item * Fixed length 16-bit encodings
+
+Each character is two octets so may have a repertoire of up to
+65 536 characters. Unicode's UCS-2 is an example. Also used for
+encodings for East Asian languages.
+
+=item * Fixed length 32-bit encodings.
+
+Not really very "encoded" encodings. The Unicode code points
+are just represented as 4-octet integers. None the less because
+different architectures use different representations of integers
+(so called "endian") there at least two disctinct encodings.
+
+=item * Multi-byte encodings
+
+The number of octets needed to represent a character varies.
+UTF-8 is a particularly complex but regular case of a multi-byte
+encoding. Several East Asian countries use a multi-byte encoding
+where 1-octet is used to cover western roman characters and Asian
+characters get 2-octets.
+(UTF-16 is strictly a multi-byte encoding taking either 2 or 4 octets
+to represent a Unicode code point.)
+
+=item * "Escape" encodings.
+
+These encodings embed "escape sequences" into the octet sequence
+which describe how the following octets are to be interpreted.
+The iso-2022-* family is typical. Following the escape sequence
+octets are encoded by an "embedded" encoding (which will be one
+of the above types) until another escape sequence switches to
+a different "embedded" encoding.
+
+These schemes are very flexible and can handle mixed languages but are
+very complex to process (and have state). No escape encodings are
+implemented for Perl yet.
+
+=back
+
+=head2 Specifying Encodings
+
+Encodings can be specified to the API described below in two ways:
+
+=over 4
+
+=item 1. By name
+
+Encoding names are strings with characters taken from a restricted
+repertoire. See L</"Encoding Names">.
+
+=item 2. As an object
+
+Encoding objects are returned by C<find_encoding($name, [$skip_external])>.
+If the second parameter is true, Encode will refrain from loading external
+modules for CJK encodings.
+
+=back
+
+=head2 Encoding Names
+
+Encoding names are case insensitive. White space in names is ignored.
+In addition an encoding may have aliases. Each encoding has one
+"canonical" name. The "canonical" name is chosen from the names of
+the encoding by picking the first in the following sequence:
+
+=over 4
+
+=item * The MIME name as defined in IETF RFCs.
+
+=item * The name in the IANA registry.
+
+=item * The name used by the organization that defined it.
+
+=back
+
+Because of all the alias issues, and because in the general case
+encodings have state C<Encode> uses the encoding object internally
+once an operation is in progress.
+
+As of Perl 5.8.0, at least the following encodings are recognized
+(the => marks aliases):
+
+ ASCII
+
+ US-ASCII => ASCII
+
+The Unicode:
+
+ UTF-8
+ UTF-16
+ UCS-2
+
+ ISO 10646-1 => UCS-2
+
+The ISO 8859 and KOI:
+
+ ISO 8859-1 ISO 8859-6 ISO 8859-11 KOI8-F
+ ISO 8859-2 ISO 8859-7 (12 doesn't exist) KOI8-R
+ ISO 8859-3 ISO 8859-8 ISO 8859-13 KOI8-U
+ ISO 8859-4 ISO 8859-9 ISO 8859-14
+ ISO 8859-5 ISO 8859-10 ISO 8859-15
+ ISO 8859-16
+
+ Latin1 => 8859-1 Latin6 => 8859-10
+ Latin2 => 8859-2 Latin7 => 8859-13
+ Latin3 => 8859-3 Latin8 => 8859-14
+ Latin4 => 8859-4 Latin9 => 8859-15
+ Latin5 => 8859-9 Latin10 => 8859-16
+
+ Cyrillic => 8859-5
+ Arabic => 8859-6
+ Greek => 8859-7
+ Hebrew => 8859-8
+ Thai => 8859-11
+ TIS620 => 8859-11
+
+The CJKV: Chinese, Japanese, Korean, Vietnamese:
+
+ ISO 2022 ISO 2022 JP-1 JIS 0201 GB 1988 Big5 EUC-CN
+ ISO 2022 CN ISO 2022 JP-2 JIS 0208 GB 2312 HZ EUC-JP
+ ISO 2022 JP ISO 2022 KR JIS 0210 GB 12345 CNS 11643 EUC-JP-0212
+ Shift-JIS GBK Big5-HKSCS EUC-KR
+ VISCII ISO-IR-165
+
+(Due to size concerns, additional Chinese encodings including C<GB 18030>,
+C<EUC-TW> and C<BIG5PLUS> are distributed separately on CPAN, under the name
+L<Encode::HanExtra>.)
+
+The PC codepages:
+
+ CP37 CP852 CP861 CP866 CP949 CP1251 CP1256
+ CP424 CP855 CP862 CP869 CP950 CP1252 CP1257
+ CP737 CP856 CP863 CP874 CP1006 CP1253 CP1258
+ CP775 CP857 CP864 CP932 CP1047 CP1254
+ CP850 CP860 CP865 CP936 CP1250 CP1255
+
+ WinLatin1 => CP1252
+ WinLatin2 => CP1250
+ WinCyrillic => CP1251
+ WinGreek => CP1253
+ WinTurkiskh => CP1254
+ WinHebrew => CP1255
+ WinArabic => CP1256
+ WinBaltic => CP1257
+ WinVietnamese => CP1258
+
+(All the CPI<NNN...> are available also as IBMI<NNN...>.)
+
+The Mac codepages:
+
+ MacCentralEuropean MacJapanese
+ MacCroatian MacRoman
+ MacCyrillic MacRomanian
+ MacDingbats MacSami
+ MacGreek MacThai
+ MacIcelandic MacTurkish
+ MacUkraine
+
+Miscellaneous:
+
+ 7bit-greek IR-197
+ 7bit-kana NeXTstep
+ 7bit-latin1 POSIX-BC
+ DingBats Roman8
+ GSM 0338 Symbol
+
+=head2 Encoding Classification
+
+Encodings
+
+ US-ASCII UTF-8 KOI8-R ISO-8859-*
+ ISO-2022-CN ISO-2022-JP ISO-2022-KR Big5
+ EUC-CN EUC-JP EUC-KR
+
+are L<http://www.iana.org/assignments/character-sets>-registered
+as preferred MIME names and may probably be used over the Internet.
+So is
+
+ Shift_JIS
+
+but despite its wide spread it bears the label of being
+Microsft proprietary.
+
+ UTF-16 KOI8-U ISO-2022-JP-2
+
+are IANA-registered preferred MIME names but probably shoule
+be avoided as encoding for web pages due to lack of browser
+support.
+
+
+ ISO-2022 (http://www.ecma.ch/ecma1/STAND/ECMA-035.HTM)
+ ISO-2022-JP-1 (http://www.faqs.org/rfcs/rfc2237.html)
+ ISO-IR-165 (http://www.faqs.org/rfcs/rfc1345.html)
+ GBK
+ VISCII
+ GB 12345 (only plains 1 and 2 available)
+ GB 18030
+ CNS 11643
+
+are totally valid encodings but not registered at IANA.
+
+ BIG5PLUS
+ EUC-JP-0212 (Encode::lib::Encode::Tcl::Extended)
+
+are a bit proprietary
+
+You may probably get some info on CJK encodings at
+
+ brief description for most of the mentioned CJK encodings
+ http://www.debian.org.ru/doc/manuals/intro-i18n/ch-codes.html
+
+ several years old, but still useful
+ http://www.oreilly.com/people/authors/lunde/cjk_inf.html
+
+ and some in-depth reading for the heroes :-)
+ http://www.ecma.ch/ecma1/STAND/ECMA-035.HTM (eq ISO-2022)
+ http://www.faqs.org/rfcs/rfc1345.txt
+
+
+=head1 PERL ENCODING API
+
+=head2 Generic Encoding Interface
+
+=over 4
+
+=item *
+
+ $bytes = encode(ENCODING, $string[, CHECK])
+
+Encodes string from Perl's internal form into I<ENCODING> and returns
+a sequence of octets. For CHECK see L</"Handling Malformed Data">.
+
+For example to convert (internally UTF-8 encoded) Unicode data
+to octets:
+
+ $octets = encode("utf8", $unicode);
+
+=item *
+
+ $string = decode(ENCODING, $bytes[, CHECK])
+
+Decode sequence of octets assumed to be in I<ENCODING> into Perl's
+internal form and returns the resulting string. For CHECK see
+L</"Handling Malformed Data">.
+
+For example to convert ISO-8859-1 data to UTF-8:
+
+ $utf8 = decode("latin1", $latin1);
+
+=item *
+
+ from_to($string, FROM_ENCODING, TO_ENCODING[, CHECK])
+
+Convert B<in-place> the data between two encodings. How did the data
+in $string originally get to be in FROM_ENCODING? Either using
+encode() or through PerlIO: See L</"Encoding and IO">. For CHECK
+see L</"Handling Malformed Data">.
+
+For example to convert ISO-8859-1 data to UTF-8:
+
+ from_to($data, "iso-8859-1", "utf-8");
+
+and to convert it back:
+
+ from_to($data, "utf-8", "iso-8859-1");
+
+Note that because the conversion happens in place, the data to be
+converted cannot be a string constant, it must be a scalar variable.
+
+=back
+
+=head2 Handling Malformed Data
+
+If CHECK is not set, C<undef> is returned. If the data is supposed to
+be UTF-8, an optional lexical warning (category utf8) is given. If
+CHECK is true but not a code reference, dies.
+
+It would desirable to have a way to indicate that transform should use
+the encodings "replacement character" - no such mechanism is defined yet.
+
+It is also planned to allow I<CHECK> to be a code reference.
+
+This is not yet implemented as there are design issues with what its
+arguments should be and how it returns its results.
+
+=over 4
+
+=item Scheme 1
+
+Passed remaining fragment of string being processed.
+Modifies it in place to remove bytes/characters it can understand
+and returns a string used to represent them.
+e.g.
+
+ sub fixup {
+ my $ch = substr($_[0],0,1,'');
+ return sprintf("\x{%02X}",ord($ch);
+ }
+
+This scheme is close to how underlying C code for Encode works, but gives
+the fixup routine very little context.
+
+=item Scheme 2
+
+Passed original string, and an index into it of the problem area, and
+output string so far. Appends what it will to output string and
+returns new index into original string. For example:
+
+ sub fixup {
+ # my ($s,$i,$d) = @_;
+ my $ch = substr($_[0],$_[1],1);
+ $_[2] .= sprintf("\x{%02X}",ord($ch);
+ return $_[1]+1;
+ }
+
+This scheme gives maximal control to the fixup routine but is more
+complicated to code, and may need internals of Encode to be tweaked to
+keep original string intact.
+
+=item Other Schemes
+
+Hybrids of above.
+
+Multiple return values rather than in-place modifications.
+
+Index into the string could be pos($str) allowing s/\G...//.
+
+=back
+
+=head2 UTF-8 / utf8
+
+The Unicode consortium defines the UTF-8 standard as a way of encoding
+the entire Unicode repertiore as sequences of octets. This encoding is
+expected to become very widespread. Perl can use this form internaly
+to represent strings, so conversions to and from this form are
+particularly efficient (as octets in memory do not have to change,
+just the meta-data that tells Perl how to treat them).
+
+=over 4
+
+=item *
+
+ $bytes = encode_utf8($string);
+
+The characters that comprise string are encoded in Perl's superset of UTF-8
+and the resulting octets returned as a sequence of bytes. All possible
+characters have a UTF-8 representation so this function cannot fail.
+
+=item *
+
+ $string = decode_utf8($bytes [,CHECK]);
+
+The sequence of octets represented by $bytes is decoded from UTF-8
+into a sequence of logical characters. Not all sequences of octets
+form valid UTF-8 encodings, so it is possible for this call to fail.
+For CHECK see L</"Handling Malformed Data">.
+
+=back
+
+=head2 Other Encodings of Unicode
+
+UTF-16 is similar to UCS-2, 16 bit or 2-byte chunks. UCS-2 can only
+represent 0..0xFFFF, while UTF-16 has a I<surrogate pair> scheme which
+allows it to cover the whole Unicode range.
+
+Surrogates are code points set aside to encode the 0x01000..0x10FFFF
+range of Unicode code points in pairs of 16-bit units. The I<high
+surrogates> are the range 0xD800..0xDBFF, and the I<low surrogates>
+are the range 0xDC00..0xDFFFF. The surrogate encoding is
+
+ $hi = ($uni - 0x10000) / 0x400 + 0xD800;
+ $lo = ($uni - 0x10000) % 0x400 + 0xDC00;
+
+and the decoding is
+
+ $uni = 0x10000 + ($hi - 0xD8000) * 0x400 + ($lo - 0xDC00);
+
+Encode implements big-endian UCS-2 aliased to "iso-10646-1" as that
+happens to be the name used by that representation when used with X11
+fonts.
+
+UTF-32 or UCS-4 is 32-bit or 4-byte chunks. Perl's logical characters
+can be considered as being in this form without encoding. An encoding
+to transfer strings in this form (e.g. to write them to a file) would
+need to
+
+ pack('L*', unpack('U*', $string)); # native
+ or
+ pack('V*', unpack('U*', $string)); # little-endian
+ or
+ pack('N*', unpack('U*', $string)); # big-endian
+
+depending on the endianness required.
+
+No UTF-32 encodings are implemented yet.
+
+Both UCS-2 and UCS-4 style encodings can have "byte order marks" by
+representing the code point 0xFFFE as the very first thing in a file.
+
+=head2 Listing available encodings
+
+ use Encode qw(encodings);
+ @list = encodings();
+
+Returns a list of the canonical names of the available encodings.
+
+=head2 Defining Aliases
+
+ use Encode qw(define_alias);
+ define_alias( newName => ENCODING);
+
+Allows newName to be used as am alias for ENCODING. ENCODING may be
+either the name of an encoding or and encoding object (as above).
+
+Currently I<newName> can be specified in the following ways:
+
+=over 4
+
+=item As a simple string.
+
+=item As a qr// compiled regular expression, e.g.:
+
+ define_alias( qr/^iso8859-(\d+)$/i => '"iso-8859-$1"' );
+
+In this case if I<ENCODING> is not a reference it is C<eval>-ed to
+allow C<$1> etc. to be subsituted. The example is one way to names as
+used in X11 font names to alias the MIME names for the iso-8859-*
+family. Note the double quote inside the single quote. If you are
+using regex here, y ou have to do so or it won't work in this case.
+
+=item As a code reference, e.g.:
+
+ define_alias( sub { return /^iso8859-(\d+)$/i ? "iso-8859-$1" : undef } , '');
+
+In this case C<$_> will be set to the name that is being looked up and
+I<ENCODING> is passed to the sub as its first argument. The example
+is another way to names as used in X11 font names to alias the MIME
+names for the iso-8859-* family.
+
+=back
+
+=head2 Defining Encodings
+
+ use Encode qw(define_alias);
+ define_encoding( $object, 'canonicalName' [,alias...]);
+
+Causes I<canonicalName> to be associated with I<$object>. The object
+should provide the interface described in L</"IMPLEMENTATION CLASSES">
+below. If more than two arguments are provided then additional
+arguments are taken as aliases for I<$object> as for C<define_alias>.
+
+=head1 Encoding and IO
+
+It is very common to want to do encoding transformations when
+reading or writing files, network connections, pipes etc.
+If Perl is configured to use the new 'perlio' IO system then
+C<Encode> provides a "layer" (See L<perliol>) which can transform
+data as it is read or written.
+
+Here is how the blind poet would modernise the encoding:
+
+ use Encode;
+ open(my $iliad,'<:encoding(iso-8859-7)','iliad.greek');
+ open(my $utf8,'>:utf8','iliad.utf8');
+ my @epic = <$iliad>;
+ print $utf8 @epic;
+ close($utf8);
+ close($illiad);
+
+In addition the new IO system can also be configured to read/write
+UTF-8 encoded characters (as noted above this is efficient):
+
+ open(my $fh,'>:utf8','anything');
+ print $fh "Any \x{0021} string \N{SMILEY FACE}\n";
+
+Either of the above forms of "layer" specifications can be made the default
+for a lexical scope with the C<use open ...> pragma. See L<open>.
+
+Once a handle is open is layers can be altered using C<binmode>.
+
+Without any such configuration, or if Perl itself is built using
+system's own IO, then write operations assume that file handle accepts
+only I<bytes> and will C<die> if a character larger than 255 is
+written to the handle. When reading, each octet from the handle
+becomes a byte-in-a-character. Note that this default is the same
+behaviour as bytes-only languages (including Perl before v5.6) would
+have, and is sufficient to handle native 8-bit encodings
+e.g. iso-8859-1, EBCDIC etc. and any legacy mechanisms for handling
+other encodings and binary data.
+
+In other cases it is the programs responsibility to transform
+characters into bytes using the API above before doing writes, and to
+transform the bytes read from a handle into characters before doing
+"character operations" (e.g. C<lc>, C</\W+/>, ...).
+
+You can also use PerlIO to convert larger amounts of data you don't
+want to bring into memory. For example to convert between ISO-8859-1
+(Latin 1) and UTF-8 (or UTF-EBCDIC in EBCDIC machines):
+
+ open(F, "<:encoding(iso-8859-1)", "data.txt") or die $!;
+ open(G, ">:utf8", "data.utf") or die $!;
+ while (<F>) { print G }
+
+ # Could also do "print G <F>" but that would pull
+ # the whole file into memory just to write it out again.
+
+More examples:
+
+ open(my $f, "<:encoding(cp1252)")
+ open(my $g, ">:encoding(iso-8859-2)")
+ open(my $h, ">:encoding(latin9)") # iso-8859-15
+
+See L<PerlIO> for more information.
+
+See also L<encoding> for how to change the default encoding of the
+data in your script.
+
+=head1 Encoding How to ...
+
+To do:
+
+=over 4
+
+=item * IO with mixed content (faking iso-2022-*)
+
+Encode::JP implements its own iso-2022 routines, however.
+
+=item * MIME's Content-Length:
+
+=item * UTF-8 strings in binary data.
+
+=item * Perl/Encode wrappers on non-Unicode XS modules.
+
+=back
+
+=head1 Messing with Perl's Internals
+
+The following API uses parts of Perl's internals in the current
+implementation. As such they are efficient, but may change.
+
+=over 4
+
+=item * is_utf8(STRING [, CHECK])
+
+[INTERNAL] Test whether the UTF-8 flag is turned on in the STRING.
+If CHECK is true, also checks the data in STRING for being well-formed
+UTF-8. Returns true if successful, false otherwise.
+
+=item *
+
+ _utf8_on(STRING)
+
+[INTERNAL] Turn on the UTF-8 flag in STRING. The data in STRING is
+B<not> checked for being well-formed UTF-8. Do not use unless you
+B<know> that the STRING is well-formed UTF-8. Returns the previous
+state of the UTF-8 flag (so please don't test the return value as
+I<not> success or failure), or C<undef> if STRING is not a string.
+
+=item *
+
+ _utf8_off(STRING)
+
+[INTERNAL] Turn off the UTF-8 flag in STRING. Do not use frivolously.
+Returns the previous state of the UTF-8 flag (so please don't test the
+return value as I<not> success or failure), or C<undef> if STRING is
+not a string.
+
+=back
+
+=head1 IMPLEMENTATION CLASSES
+
+As mentioned above encodings are (in the current implementation at least)
+defined by objects. The mapping of encoding name to object is via the
+C<%encodings> hash.
+
+The values of the hash can currently be either strings or objects.
+The string form may go away in the future. The string form occurs
+when C<encodings()> has scanned C<@INC> for loadable encodings but has
+not actually loaded the encoding in question. This is because the
+current "loading" process is all Perl and a bit slow.
+
+Once an encoding is loaded then value of the hash is object which
+implements the encoding. The object should provide the following
+interface:
+
+=over 4
+
+=item -E<gt>name
+
+Should return the string representing the canonical name of the encoding.
+
+=item -E<gt>new_sequence
+
+This is a placeholder for encodings with state. It should return an
+object which implements this interface, all current implementations
+return the original object.
+
+=item -E<gt>encode($string,$check)
+
+Should return the octet sequence representing I<$string>. If I<$check>
+is true it should modify I<$string> in place to remove the converted
+part (i.e. the whole string unless there is an error). If an error
+occurs it should return the octet sequence for the fragment of string
+that has been converted, and modify $string in-place to remove the
+converted part leaving it starting with the problem fragment.
+
+If check is is false then C<encode> should make a "best effort" to
+convert the string - for example by using a replacement character.
+
+=item -E<gt>decode($octets,$check)
+
+Should return the string that I<$octets> represents. If I<$check> is
+true it should modify I<$octets> in place to remove the converted part
+(i.e. the whole sequence unless there is an error). If an error
+occurs it should return the fragment of string that has been
+converted, and modify $octets in-place to remove the converted part
+leaving it starting with the problem fragment.
+
+If check is is false then C<decode> should make a "best effort" to
+convert the string - for example by using Unicode's "\x{FFFD}" as a
+replacement character.
+
+=back
+
+It should be noted that the check behaviour is different from the
+outer public API. The logic is that the "unchecked" case is useful
+when encoding is part of a stream which may be reporting errors
+(e.g. STDERR). In such cases it is desirable to get everything
+through somehow without causing additional errors which obscure the
+original one. Also the encoding is best placed to know what the
+correct replacement character is, so if that is the desired behaviour
+then letting low level code do it is the most efficient.
+
+In contrast if check is true, the scheme above allows the encoding to
+do as much as it can and tell layer above how much that was. What is
+lacking at present is a mechanism to report what went wrong. The most
+likely interface will be an additional method call to the object, or
+perhaps (to avoid forcing per-stream objects on otherwise stateless
+encodings) and additional parameter.
+
+It is also highly desirable that encoding classes inherit from
+C<Encode::Encoding> as a base class. This allows that class to define
+additional behaviour for all encoding objects. For example built in
+Unicode, UCS-2 and UTF-8 classes use :
+
+ package Encode::MyEncoding;
+ use base qw(Encode::Encoding);
+
+ __PACKAGE__->Define(qw(myCanonical myAlias));
+
+To create an object with bless {Name => ...},$class, and call
+define_encoding. They inherit their C<name> method from
+C<Encode::Encoding>.
+
+=head2 Compiled Encodings
+
+F<Encode.xs> provides a class C<Encode::XS> which provides the
+interface described above. It calls a generic octet-sequence to
+octet-sequence "engine" that is driven by tables (defined in
+F<encengine.c>). The same engine is used for both encode and
+decode. C<Encode:XS>'s C<encode> forces Perl's characters to their
+UTF-8 form and then treats them as just another multibyte
+encoding. C<Encode:XS>'s C<decode> transforms the sequence and then
+turns the UTF-8-ness flag as that is the form that the tables are
+defined to produce. For details of the engine see the comments in
+F<encengine.c>.
+
+The tables are produced by the Perl script F<compile> (the name needs
+to change so we can eventually install it somewhere). F<compile> can
+currently read two formats:
+
+=over 4
+
+=item *.enc
+
+This is a coined format used by Tcl. It is documented in
+Encode/EncodeFormat.pod.
+
+=item *.ucm
+
+This is the semi-standard format used by IBM's ICU package.
+
+=back
+
+F<compile> can write the following forms:
+
+=over 4
+
+=item *.ucm
+
+See above - the F<Encode/*.ucm> files provided with the distribution have
+been created from the original Tcl .enc files using this approach.
+
+=item *.c
+
+Produces tables as C data structures - this is used to build in encodings
+into F<Encode.so>/F<Encode.dll>.
+
+=item *.xs
+
+In theory this allows encodings to be stand-alone loadable Perl
+extensions. The process has not yet been tested. The plan is to use
+this approach for large East Asian encodings.
+
+=back
+
+The set of encodings built-in to F<Encode.so>/F<Encode.dll> is
+determined by F<Makefile.PL>. The current set is as follows:
+
+=over 4
+
+=item ascii and iso-8859-*
+
+That is all the common 8-bit "western" encodings.
+
+=item IBM-1047 and two other variants of EBCDIC.
+
+These are the same variants that are supported by EBCDIC Perl as
+"native" encodings. They are included to prove "reversibility" of
+some constructs in EBCDIC Perl.
+
+=item symbol and dingbats as used by Tk on X11.
+
+(The reason Encode got started was to support Perl/Tk.)
+
+=back
+
+That set is rather ad hoc and has been driven by the needs of the
+tests rather than the needs of typical applications. It is likely
+to be rationalized.
+
+=head1 SEE ALSO
+
+L<perlunicode>, L<perlebcdic>, L<perlfunc/open>, L<PerlIO>, L<encoding>,
+L<utf8>, the Perl Unicode Mailing List E<lt>perl-unicode@perl.orgE<gt>
+
+
+=cut
+
diff --git a/ext/Encode/lib/Encode/Encoding.pm b/ext/Encode/lib/Encode/Encoding.pm
index a3b6310021..3327fa799a 100644
--- a/ext/Encode/lib/Encode/Encoding.pm
+++ b/ext/Encode/lib/Encode/Encoding.pm
@@ -1,7 +1,7 @@
package Encode::Encoding;
# Base class for classes which implement encodings
use strict;
-our $VERSION = '0.02';
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
sub Define
{
@@ -24,3 +24,178 @@ sub DESTROY {}
1;
__END__
+
+=head1 NAME
+
+Encode::Encoding - Encode Implementation Base Class
+
+=head1 SYNOPSIS
+
+ package Encode::MyEncoding;
+ use base qw(Encode::Encoding);
+
+ __PACKAGE__->Define(qw(myCanonical myAlias));
+
+=head 1 DESCRIPTION
+
+As mentioned in L<Encode>, encodings are (in the current
+implementation at least) defined by objects. The mapping of encoding
+name to object is via the C<%encodings> hash.
+
+The values of the hash can currently be either strings or objects.
+The string form may go away in the future. The string form occurs
+when C<encodings()> has scanned C<@INC> for loadable encodings but has
+not actually loaded the encoding in question. This is because the
+current "loading" process is all Perl and a bit slow.
+
+Once an encoding is loaded then value of the hash is object which
+implements the encoding. The object should provide the following
+interface:
+
+=over 4
+
+=item -E<gt>name
+
+Should return the string representing the canonical name of the encoding.
+
+=item -E<gt>new_sequence
+
+This is a placeholder for encodings with state. It should return an
+object which implements this interface, all current implementations
+return the original object.
+
+=item -E<gt>encode($string,$check)
+
+Should return the octet sequence representing I<$string>. If I<$check>
+is true it should modify I<$string> in place to remove the converted
+part (i.e. the whole string unless there is an error). If an error
+occurs it should return the octet sequence for the fragment of string
+that has been converted, and modify $string in-place to remove the
+converted part leaving it starting with the problem fragment.
+
+If check is is false then C<encode> should make a "best effort" to
+convert the string - for example by using a replacement character.
+
+=item -E<gt>decode($octets,$check)
+
+Should return the string that I<$octets> represents. If I<$check> is
+true it should modify I<$octets> in place to remove the converted part
+(i.e. the whole sequence unless there is an error). If an error
+occurs it should return the fragment of string that has been
+converted, and modify $octets in-place to remove the converted part
+leaving it starting with the problem fragment.
+
+If check is is false then C<decode> should make a "best effort" to
+convert the string - for example by using Unicode's "\x{FFFD}" as a
+replacement character.
+
+=back
+
+It should be noted that the check behaviour is different from the
+outer public API. The logic is that the "unchecked" case is useful
+when encoding is part of a stream which may be reporting errors
+(e.g. STDERR). In such cases it is desirable to get everything
+through somehow without causing additional errors which obscure the
+original one. Also the encoding is best placed to know what the
+correct replacement character is, so if that is the desired behaviour
+then letting low level code do it is the most efficient.
+
+In contrast if check is true, the scheme above allows the encoding to
+do as much as it can and tell layer above how much that was. What is
+lacking at present is a mechanism to report what went wrong. The most
+likely interface will be an additional method call to the object, or
+perhaps (to avoid forcing per-stream objects on otherwise stateless
+encodings) and additional parameter.
+
+It is also highly desirable that encoding classes inherit from
+C<Encode::Encoding> as a base class. This allows that class to define
+additional behaviour for all encoding objects. For example built in
+Unicode, UCS-2 and UTF-8 classes use :
+
+ package Encode::MyEncoding;
+ use base qw(Encode::Encoding);
+
+ __PACKAGE__->Define(qw(myCanonical myAlias));
+
+To create an object with bless {Name => ...},$class, and call
+define_encoding. They inherit their C<name> method from
+C<Encode::Encoding>.
+
+=head2 Compiled Encodings
+
+F<Encode.xs> provides a class C<Encode::XS> which provides the
+interface described above. It calls a generic octet-sequence to
+octet-sequence "engine" that is driven by tables (defined in
+F<encengine.c>). The same engine is used for both encode and
+decode. C<Encode:XS>'s C<encode> forces Perl's characters to their
+UTF-8 form and then treats them as just another multibyte
+encoding. C<Encode:XS>'s C<decode> transforms the sequence and then
+turns the UTF-8-ness flag as that is the form that the tables are
+defined to produce. For details of the engine see the comments in
+F<encengine.c>.
+
+The tables are produced by the Perl script F<compile> (the name needs
+to change so we can eventually install it somewhere). F<compile> can
+currently read two formats:
+
+=over 4
+
+=item *.enc
+
+This is a coined format used by Tcl. It is documented in
+Encode/EncodeFormat.pod.
+
+=item *.ucm
+
+This is the semi-standard format used by IBM's ICU package.
+
+=back
+
+F<compile> can write the following forms:
+
+=over 4
+
+=item *.ucm
+
+See above - the F<Encode/*.ucm> files provided with the distribution have
+been created from the original Tcl .enc files using this approach.
+
+=item *.c
+
+Produces tables as C data structures - this is used to build in encodings
+into F<Encode.so>/F<Encode.dll>.
+
+=item *.xs
+
+In theory this allows encodings to be stand-alone loadable Perl
+extensions. The process has not yet been tested. The plan is to use
+this approach for large East Asian encodings.
+
+=back
+
+The set of encodings built-in to F<Encode.so>/F<Encode.dll> is
+determined by F<Makefile.PL>. The current set is as follows:
+
+=over 4
+
+=item ascii and iso-8859-*
+
+That is all the common 8-bit "western" encodings.
+
+=item IBM-1047 and two other variants of EBCDIC.
+
+These are the same variants that are supported by EBCDIC Perl as
+"native" encodings. They are included to prove "reversibility" of
+some constructs in EBCDIC Perl.
+
+=item symbol and dingbats as used by Tk on X11.
+
+(The reason Encode got started was to support Perl/Tk.)
+
+=back
+
+That set is rather ad hoc and has been driven by the needs of the
+tests rather than the needs of typical applications. It is likely
+to be rationalized.
+
+=cut
diff --git a/ext/Encode/lib/Encode/Internal.pm b/ext/Encode/lib/Encode/Internal.pm
index a807bce962..b510d42262 100644
--- a/ext/Encode/lib/Encode/Internal.pm
+++ b/ext/Encode/lib/Encode/Internal.pm
@@ -1,6 +1,7 @@
package Encode::Internal;
use strict;
-our $VERSION = do {my @r=(q$Revision: 0.30 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
use base 'Encode::Encoding';
# Dummy package that provides the encode interface but leaves data
diff --git a/ext/Encode/lib/Encode/JP/Constants.pm b/ext/Encode/lib/Encode/JP/Constants.pm
index baa0b2b75c..3ffba8a94e 100644
--- a/ext/Encode/lib/Encode/JP/Constants.pm
+++ b/ext/Encode/lib/Encode/JP/Constants.pm
@@ -1,5 +1,5 @@
#
-# $Id: Constants.pm,v 1.2 2001/05/18 05:14:38 dankogai Exp dankogai $
+# $Id: Constants.pm,v 0.92 2002/03/19 17:01:26 dankogai Exp $
#
package Encode::JP::Constants;
@@ -7,8 +7,8 @@ package Encode::JP::Constants;
use strict;
use vars qw($RCSID $VERSION);
-$RCSID = q$Id: Constants.pm,v 1.2 2001/05/18 05:14:38 dankogai Exp dankogai $;
-$VERSION = do { my @r = (q$Revision: 1.2 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+$RCSID = q$Id: Constants.pm,v 0.92 2002/03/19 17:01:26 dankogai Exp $;
+$VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
use Carp;
diff --git a/ext/Encode/lib/Encode/JP/H2Z.pm b/ext/Encode/lib/Encode/JP/H2Z.pm
index d18fc9fa7a..dbfac506cb 100644
--- a/ext/Encode/lib/Encode/JP/H2Z.pm
+++ b/ext/Encode/lib/Encode/JP/H2Z.pm
@@ -1,5 +1,5 @@
#
-# $Id: H2Z.pm,v 0.77 2002/01/14 11:06:55 dankogai Exp $
+# $Id: H2Z.pm,v 0.92 2002/03/19 17:01:26 dankogai Exp $
#
package Encode::JP::H2Z;
@@ -7,8 +7,8 @@ package Encode::JP::H2Z;
use strict;
use vars qw($RCSID $VERSION);
-$RCSID = q$Id: H2Z.pm,v 0.77 2002/01/14 11:06:55 dankogai Exp $;
-$VERSION = do { my @r = (q$Revision: 0.77 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+$RCSID = q$Id: H2Z.pm,v 0.92 2002/03/19 17:01:26 dankogai Exp $;
+$VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
use Carp;
diff --git a/ext/Encode/lib/Encode/JP/ISO_2022_JP.pm b/ext/Encode/lib/Encode/JP/ISO_2022_JP.pm
index b8c77b340f..388be5f247 100644
--- a/ext/Encode/lib/Encode/JP/ISO_2022_JP.pm
+++ b/ext/Encode/lib/Encode/JP/ISO_2022_JP.pm
@@ -5,12 +5,14 @@ use Encode::JP::H2Z;
use base 'Encode::Encoding';
use vars qw($VERSION);
-$VERSION = 0.01;
+$VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
my $canon = 'iso-2022-jp';
my $obj = bless {name => $canon}, __PACKAGE__;
$obj->Define($canon);
+sub name { return $_[0]->{name}; }
+
#
# decode is identical to 7bit-jis
#
diff --git a/ext/Encode/lib/Encode/JP/JIS.pm b/ext/Encode/lib/Encode/JP/JIS.pm
index 810477d10b..6e6dd0fd24 100644
--- a/ext/Encode/lib/Encode/JP/JIS.pm
+++ b/ext/Encode/lib/Encode/JP/JIS.pm
@@ -5,7 +5,7 @@ use base 'Encode::Encoding';
use strict;
use vars qw($VERSION);
-$VERSION = 0.01;
+$VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
# Just for the time being, we implement jis-7bit
# encoding via EUC
@@ -14,6 +14,8 @@ my $canon = '7bit-jis';
my $obj = bless {name => $canon}, __PACKAGE__;
$obj->Define($canon);
+sub name { return $_[0]->{name}; }
+
sub decode
{
my ($obj,$str,$chk) = @_;
diff --git a/ext/Encode/lib/Encode/Tcl.pm b/ext/Encode/lib/Encode/Tcl.pm
index c423d8e968..d47ed117e6 100644
--- a/ext/Encode/lib/Encode/Tcl.pm
+++ b/ext/Encode/lib/Encode/Tcl.pm
@@ -5,7 +5,8 @@ BEGIN {
}
}
use strict;
-our $VERSION = do {my @r=(q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.94 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
use Encode qw(find_encoding);
use base 'Encode::Encoding';
use Carp;
@@ -124,7 +125,6 @@ sub INC_find
require Encode::Tcl::Table;
require Encode::Tcl::Escape;
-require Encode::Tcl::Extended;
1;
__END__
@@ -158,6 +158,4 @@ L<Encode::Tcl::Table>
L<Encode::Tcl::Escape>
-L<Encode::Tcl::Extended>
-
=cut
diff --git a/ext/Encode/lib/Encode/Tcl/Escape.pm b/ext/Encode/lib/Encode/Tcl/Escape.pm
index 5697c99232..89290fb365 100644
--- a/ext/Encode/lib/Encode/Tcl/Escape.pm
+++ b/ext/Encode/lib/Encode/Tcl/Escape.pm
@@ -1,6 +1,7 @@
package Encode::Tcl::Escape;
use strict;
-our $VERSION = do {my @r=(q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
use base 'Encode::Encoding';
use Carp;
@@ -31,7 +32,7 @@ sub read
$val =~ /[\x30-\x3F]$/ ? 2 : # (only 2 is supported)
$val =~ /[\x40-\x5F]$/ ? 2 : # double byte
$val =~ /[\x60-\x6F]$/ ? 3 : # triple byte
- $val =~ /[\x70-\x7F]$/ ? 4 :
+ $val =~ /[\x70-\x7E]$/ ? 4 :
# 4 or more (only 4 is supported)
croak("odd sequence is defined");
@@ -96,8 +97,8 @@ sub decode
}
else
{
- # strictly, ([\x20-\x2F]*[\x30-\x7E]). '?' for chopped.
- $str =~ s/^([\x20-\x2F]*[\x30-\x7E]?)//;
+ # strictly, ([\x21-\x2F]*[\x30-\x7E]). '?' for chopped.
+ $str =~ s/^([\x21-\x2F]*[\x30-\x7E]?)//;
if ($chk && ! length $str)
{
$str = "\e$1"; # split sequence
@@ -215,7 +216,7 @@ and the following:
SINGLE SHIFT TWO (SS2) ESC 04/14
SINGLE SHIFT THREE (SS3) ESC 04/15
-Designation of control character sets are not supported.
+Designation of control character sets is not supported.
=head1 SEE ALSO
diff --git a/ext/Encode/lib/Encode/Tcl/Extended.pm b/ext/Encode/lib/Encode/Tcl/Extended.pm
deleted file mode 100644
index 0fa3035b9e..0000000000
--- a/ext/Encode/lib/Encode/Tcl/Extended.pm
+++ /dev/null
@@ -1,170 +0,0 @@
-package Encode::Tcl::Extended;
-use strict;
-our $VERSION = do {my @r=(q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
-use base 'Encode::Encoding';
-
-use Carp;
-
-sub read
-{
- my ($obj,$fh,$name) = @_;
- my(%tbl, $enc, %ssc, @key);
- while (<$fh>)
- {
- next unless /^(\S+)\s+(.*)$/;
- my ($key,$val) = ($1,$2);
- $val =~ s/\{(.*?)\}/$1/;
- $val =~ s/\\x([0-9a-f]{2})/chr(hex($1))/ge;
-
- if($enc = Encode->getEncoding($key))
- {
- push @key, $val;
- $tbl{$val} = ref($enc) eq 'Encode::Tcl' ? $enc->loadEncoding : $enc;
- $ssc{$val} = substr($val,1) if $val =~ /^>/;
- }
- else
- {
- $obj->{$key} = $val;
- }
- }
- $obj->{'SSC'} = \%ssc; # single shift char
- $obj->{'Tbl'} = \%tbl; # encoding tables
- $obj->{'Key'} = \@key; # keys of table hash
- return $obj;
-}
-
-sub decode
-{
- my ($obj,$str,$chk) = @_;
- my $name = $obj->{'Name'};
- my $tbl = $obj->{'Tbl'};
- my $ssc = $obj->{'SSC'};
- my $cur = ''; # current state
- my $uni;
- while (length($str))
- {
- my $cc = substr($str,0,1,'');
- my $ch = ord($cc);
- if(!$cur && $ch > 0x7F)
- {
- $cur = '>';
- $cur .= $cc, next if $ssc->{$cur.$cc};
- }
- $ch ^= 0x80 if $cur;
-
- if(ref($tbl->{$cur}) ne 'Encode::Tcl::Table')
- {
- $uni .= $tbl->{$cur}->decode($cc);
- $cur = '';
- next;
- }
- my $rep = $tbl->{$cur}->{'Rep'};
- my $touni = $tbl->{$cur}->{'ToUni'};
- my $x;
- if (&$rep($ch) eq 'C')
- {
- $x = $touni->[0][$ch];
- }
- else
- {
- if(! length $str)
- {
- $str = $cc; # split leading byte
- last;
- }
- my $c2 = substr($str,0,1,'');
- $cc .= $c2;
- $x = $touni->[$ch][0x80 ^ ord($c2)];
- }
- unless (defined $x)
- {
- Encode::Tcl::no_map_in_decode($name, $cc.$str);
- }
- $uni .= $x;
- $cur = '';
- }
- if($chk)
- {
- $cur =~ s/>//;
- $_[1] = $cur ne '' ? $cur.$str : $str;
- }
- return $uni;
-}
-
-sub encode
-{
- my ($obj,$uni,$chk) = @_;
- my $name = $obj->{'Name'};
- my $tbl = $obj->{'Tbl'};
- my $ssc = $obj->{'SSC'};
- my $key = $obj->{'Key'};
- my $str;
- my $cur;
-
- while (length($uni))
- {
- my $ch = substr($uni,0,1,'');
- my $x;
- foreach my $k (@$key)
- {
- $x = ref($tbl->{$k}) ne 'Encode::Tcl::Table'
- ? $k =~ /^>/
- ? $tbl->{$k}->encode(chr(0x80 ^ ord $ch),1)
- : $tbl->{$k}->encode($ch,1)
- : $tbl->{$k}->{FmUni}->{$ch};
- $cur = $k, last if defined $x;
- }
- unless (defined $x)
- {
- unless($chk)
- {
- Encode::Tcl::no_map_in_encode(ord($ch), $name)
- }
- return undef;
- }
- if(ref($tbl->{$cur}) eq 'Encode::Tcl::Table')
- {
- my $def = $tbl->{$cur}->{'Def'};
- my $rep = $tbl->{$cur}->{'Rep'};
- my $r = &$rep($x);
- $x = pack($r,
- $cur =~ /^>/
- ? $r eq 'C' ? 0x80 ^ $x : 0x8080 ^ $x
- : $x);
- }
- $str .= $ssc->{$cur} if defined $ssc->{$cur};
- $str .= $x;
- }
- $_[1] = $uni if $chk;
- return $str;
-}
-1;
-__END__
-
-=head1 NAME
-
-Encode::Tcl::Extended - Tcl EUC encodings
-
-=head1 SYNOPSIS
-
-none
-
-=head1 DESCRIPTION
-
-This module is used internally by Encode::Tcl
-and handles type X of Tcl encodings (a Perl extenstion).
-
-Only F<euc-jp-0212.enc> belongs to type X.
-This is a variant of EUC-JP with JIS X 0212 in G3.
-If another Encode:: module would support the above encoding,
-this module should be removed.
-
-=head1 SEE ALSO
-
-L<Encode>
-
-L<Encode::Tcl>
-
-L<Encode::JP>
-
-=cut
diff --git a/ext/Encode/lib/Encode/Tcl/Table.pm b/ext/Encode/lib/Encode/Tcl/Table.pm
index 2e9a83707c..948c3b9c88 100644
--- a/ext/Encode/lib/Encode/Tcl/Table.pm
+++ b/ext/Encode/lib/Encode/Tcl/Table.pm
@@ -1,6 +1,7 @@
package Encode::Tcl::Table;
use strict;
-our $VERSION = do {my @r=(q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
use base 'Encode::Encoding';
use Carp;
@@ -109,7 +110,6 @@ sub decode
return $uni;
}
-
sub encode
{
my ($obj,$uni,$chk) = @_;
@@ -152,7 +152,7 @@ This module is used internally by Encode::Tcl
and handles types S, D, and M of Tcl encodings.
Implementation for type M is restricted to encodings
-in which bytes per a character is up to 2.
+in which the number of bytes per a character is up to 2.
=head1 SEE ALSO
diff --git a/ext/Encode/lib/Encode/Unicode.pm b/ext/Encode/lib/Encode/Unicode.pm
index 13a8e9c574..919c9f28f5 100644
--- a/ext/Encode/lib/Encode/Unicode.pm
+++ b/ext/Encode/lib/Encode/Unicode.pm
@@ -1,6 +1,7 @@
package Encoding::Unicode;
use strict;
-our $VERSION = do {my @r=(q$Revision: 0.30 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
use base 'Encode::Encoding';
__PACKAGE__->Define('Unicode') unless ord('A') == 65;
diff --git a/ext/Encode/lib/Encode/XS.pm b/ext/Encode/lib/Encode/XS.pm
index c356cd6245..95228286be 100644
--- a/ext/Encode/lib/Encode/XS.pm
+++ b/ext/Encode/lib/Encode/XS.pm
@@ -1,8 +1,8 @@
package Encode::XS;
use strict;
-our $VERSION = do {my @r=(q$Revision: 0.40 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
use base 'Encode::Encoding';
1;
__END__
-
diff --git a/ext/Encode/lib/Encode/iso10646_1.pm b/ext/Encode/lib/Encode/iso10646_1.pm
index cabc6c3569..0cc71d3fb5 100644
--- a/ext/Encode/lib/Encode/iso10646_1.pm
+++ b/ext/Encode/lib/Encode/iso10646_1.pm
@@ -1,6 +1,7 @@
package Encode::iso10646_1;
use strict;
-our $VERSION = do {my @r=(q$Revision: 0.30 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
use base 'Encode::Encoding';
# Encoding is 16-bit network order Unicode (no surogates)
# Used for X font encodings
diff --git a/ext/Encode/lib/Encode/ucs2_le.pm b/ext/Encode/lib/Encode/ucs2_le.pm
index 82d67ca6f3..ef25a8feee 100644
--- a/ext/Encode/lib/Encode/ucs2_le.pm
+++ b/ext/Encode/lib/Encode/ucs2_le.pm
@@ -1,6 +1,7 @@
package Encode::ucs_2le;
use strict;
-our $VERSION = do {my @r=(q$Revision: 0.30 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
use base 'Encode::Encoding';
__PACKAGE__->Define(qw(UCS-2le UCS-2LE ucs-2le));
diff --git a/ext/Encode/lib/Encode/utf8.pm b/ext/Encode/lib/Encode/utf8.pm
index b7acdade2c..3743d30119 100644
--- a/ext/Encode/lib/Encode/utf8.pm
+++ b/ext/Encode/lib/Encode/utf8.pm
@@ -1,6 +1,7 @@
package Encode::utf8;
use strict;
-our $VERSION = do {my @r=(q$Revision: 0.30 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r};
+our $VERSION = do { my @r = (q$Revision: 0.92 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
use base 'Encode::Encoding';
# package to allow long-hand
# $octets = encode( utf8 => $string );
diff --git a/ext/Encode/t/CJKalias.t b/ext/Encode/t/CJKalias.t
new file mode 100644
index 0000000000..cc1efe5870
--- /dev/null
+++ b/ext/Encode/t/CJKalias.t
@@ -0,0 +1,35 @@
+use strict;
+use Encode::CN;
+use Encode::JP;
+use Encode::KR;
+use Encode::TW;
+
+print "# alias test\n";
+
+my %a2c;
+
+BEGIN {
+ %a2c = qw(
+ ja_JP.euc euc-jp
+ x-euc-jp euc-jp
+ zh_CN.euc euc-cn
+ x-euc-cn euc-cn
+ ko_KR.euc euc-kr
+ x-euc-kr euc-kr
+ ujis euc-jp
+ Shift_JIS shiftjis
+ x-sjis shiftjis
+ jis 7bit-jis
+ big-5 big5
+ zh_TW.Big5 big5
+ big5-hk big5-hkscs
+ );
+}
+
+use Test::More tests => scalar keys %a2c;
+
+foreach my $a (keys %a2c){
+ my $e = Encode::find_encoding($a);
+ is($e->name, $a2c{$a});
+}
+
diff --git a/ext/Encode/t/CN.t b/ext/Encode/t/CN.t
index 2185a0791e..671ee05dd0 100644
--- a/ext/Encode/t/CN.t
+++ b/ext/Encode/t/CN.t
@@ -1,6 +1,6 @@
BEGIN {
chdir 't' if -d 't';
- @INC = '../lib';
+ unshift @INC, '../lib';
require Config; import Config;
if ($Config{'extensions'} !~ /\bEncode\b/) {
print "1..0 # Skip: Encode was not built\n";
diff --git a/ext/Encode/t/Encode.t b/ext/Encode/t/Encode.t
index 28becb40f2..9c21578290 100644
--- a/ext/Encode/t/Encode.t
+++ b/ext/Encode/t/Encode.t
@@ -1,6 +1,6 @@
BEGIN {
chdir 't' if -d 't';
- push @INC, '../lib';
+ unshift @INC, '../lib';
require Config; import Config;
if ($Config{'extensions'} !~ /\bEncode\b/) {
print "1..0 # Skip: Encode was not built\n";
diff --git a/ext/Encode/t/JP.t b/ext/Encode/t/JP.t
index 31ba2da68e..733aeb9a15 100644
--- a/ext/Encode/t/JP.t
+++ b/ext/Encode/t/JP.t
@@ -1,6 +1,6 @@
BEGIN {
- chdir 't' if -d 't';
- @INC = '../lib';
+ chdir 't' if -d 't' and $ENV{PWD} !~ m,/Encode[^/]*$,o;
+ unshift @INC, '../lib';
require Config; import Config;
if ($Config{'extensions'} !~ /\bEncode\b/) {
print "1..0 # Skip: Encode was not built\n";
@@ -17,38 +17,45 @@ BEGIN {
$| = 1;
}
use strict;
-use Test::More tests => 22;
+use Test::More tests => 27;
+#use Test::More qw(no_plan);
use Encode;
use File::Basename;
use File::Spec;
use File::Compare;
require_ok "Encode::JP";
-my ($src, $uni, $dst, $txt);
+my ($src, $uni, $dst, $txt, $euc, $utf, $ref, $rnd);
ok(defined(my $enc = find_encoding('euc-jp')));
ok($enc->isa('Encode::XS'));
is($enc->name,'euc-jp');
my $dir = dirname(__FILE__);
-my $euc = File::Spec->catfile($dir,"table.euc");
-my $utf = File::Spec->catfile($dir,"$$.utf8");
-my $ref = File::Spec->catfile($dir,"table.ref");
-my $rnd = File::Spec->catfile($dir,"$$.rnd");
-print "# Basic decode test\n";
-open($src,"<",$euc) || die "Cannot open $euc:$!";
-binmode($src);
-ok(defined($src) && fileno($src));
-$txt = join('',<$src>);
-open($dst,">:utf8",$utf) || die "Cannot open $utf:$!";
-binmode($dst);
-ok(defined($dst) && fileno($dst));
-$uni = $enc->decode($txt,1);
-ok(defined($uni));
-is(length($txt),0);
-print $dst $uni;
-close($dst);
-close($src);
-ok(compare($utf,$ref) == 0);
+
+my @subcodings = qw(jisx0212 jisx0208);
+
+for my $subcoding (@subcodings){
+ $euc = File::Spec->catfile($dir,"$subcoding.euc");
+ $utf = File::Spec->catfile($dir,"$$.utf8");
+ $ref = File::Spec->catfile($dir,"$subcoding.ref");
+ $rnd = File::Spec->catfile($dir,"$$.rnd");
+ print "# Basic decode test\n";
+ open($src,"<",$euc) || die "Cannot open $euc:$!";
+ binmode($src);
+ ok(defined($src) && fileno($src));
+ $txt = join('',<$src>);
+ open($dst,">:utf8",$utf) || die "Cannot open $utf:$!";
+ binmode($dst);
+ ok(defined($dst) && fileno($dst));
+ eval{ $uni = $enc->decode($txt,1) };
+ $@ and print $@;
+ ok(defined($uni));
+ is(length($txt),0);
+ print $dst $uni;
+ close($dst);
+ close($src);
+ ok(compare($utf,$ref) == 0);
+}
print "# Basic encode test\n";
open($src,"<:utf8",$ref) || die "Cannot open $ref:$!";
@@ -82,6 +89,7 @@ while (<$src>)
}
close($dst);
close($src);
+
TODO:
{
local $TODO = 'needs debugging on VMS' if $^O eq 'VMS';
@@ -111,6 +119,7 @@ SKIP:
}
is($enc->name,'euc-jp');
+
END {
1 while unlink($utf,$rnd);
}
diff --git a/ext/Encode/t/TW.t b/ext/Encode/t/TW.t
index b125a8f53a..a902d23ace 100644
--- a/ext/Encode/t/TW.t
+++ b/ext/Encode/t/TW.t
@@ -1,6 +1,6 @@
BEGIN {
chdir 't' if -d 't';
- @INC = '../lib';
+ unshift @INC, '../lib';
require Config; import Config;
if ($Config{'extensions'} !~ /\bEncode\b/) {
print "1..0 # Skip: Encode was not built\n";
diff --git a/ext/Encode/t/Tcl.t b/ext/Encode/t/Tcl.t
index 4f4419132a..96dc2141f4 100644
--- a/ext/Encode/t/Tcl.t
+++ b/ext/Encode/t/Tcl.t
@@ -1,6 +1,6 @@
BEGIN {
chdir 't' if -d 't';
- @INC = '../lib';
+ unshift @INC, '../lib';
require Config; import Config;
if ($Config{'extensions'} !~ /\bEncode\b/) {
print "1..0 # Skip: Encode was not built\n";
@@ -15,12 +15,11 @@ use Test;
use Encode qw(encode decode);
use Encode::Tcl;
-my @encodings = qw(euc-cn euc-jp euc-kr big5 shiftjis); # CJK
+my @encodings = qw(euc-cn euc-kr big5 shiftjis); # CJK
my $n = 2;
my %greek = (
'euc-cn' => [0xA6A1..0xA6B8,0xA6C1..0xA6D8],
- 'euc-jp' => [0xA6A1..0xA6B8,0xA6C1..0xA6D8],
'euc-kr' => [0xA5C1..0xA5D8,0xA5E1..0xA5F8],
'big5' => [0xA344..0xA35B,0xA35C..0xA373],
'shiftjis' => [0x839F..0x83B6,0x83BF..0x83D6],
@@ -37,7 +36,6 @@ my @greek = qw(
my %ideodigit = ( # cjk ideograph 'one' to 'ten'
'euc-cn' => [qw(d2bb b6fe c8fd cbc4 cee5 c1f9 c6df b0cb bec5 caae)],
- 'euc-jp' => [qw(b0ec c6f3 bbb0 bbcd b8de cfbb bcb7 c8ac b6e5 bdbd)],
'euc-kr' => [qw(ece9 eca3 dfb2 decc e7e9 d7bf f6d2 f8a2 cefa e4a8)],
'big5' => [qw(a440 a447 a454 a57c a4ad a4bb a443 a44b a445 a451)],
'shiftjis' => [qw(88ea 93f1 8e4f 8e6c 8cdc 985a 8eb5 94aa 8be3 8f5c)],
@@ -45,23 +43,9 @@ my %ideodigit = ( # cjk ideograph 'one' to 'ten'
);
my @ideodigit = qw(one two three four five six seven eight nine ten);
-my $jis = '7bit-jis';
my $kr = '2022-kr';
my %esc_str;
-$esc_str{$jis} = {qw(
- 1b24422422242424262428242a1b2842
- 3042304430463048304a
- 1b284931323334355d1b2842
- ff71ff72ff73ff74ff75ff9d
- 1b2442467c4b5c1b2842
- 65e5672c
- 3132331b244234413b7a1b28425065726c
- 0031003200336f225b57005000650072006c
- 546573740a1b24422546253925481b28420a
- 0054006500730074000a30c630b930c8000a
-)};
-
$esc_str{$kr} = {qw(
1b2429430e2a22213e0f410d0a
304200b10041000d000a
@@ -84,24 +68,15 @@ use constant YES => 1;
my @ary_buff = ( # [ encoding, decoded, encoded ]
# type-M
["euc-cn", hiragana, "\xA4\xA2\xA4\xA4\xA4\xA6\xA4\xA8\xA4\xAA" ],
- ["euc-jp", hiragana, "\xA4\xA2\xA4\xA4\xA4\xA6\xA4\xA8\xA4\xAA" ],
- ["euc-jp", han_kana, "\x8E\xB1\x8E\xB2\x8E\xB3\x8E\xB4\x8E\xB5" ],
["euc-kr", hiragana, "\xAA\xA2\xAA\xA4\xAA\xA6\xAA\xA8\xAA\xAA" ],
["shiftjis", hiragana, "\x82\xA0\x82\xA2\x82\xA4\x82\xA6\x82\xA8" ],
["shiftjis", han_kana, "\xB1\xB2\xB3\xB4\xB5" ],
# type-E
["2022-cn", hiragana, "\e\$)A\cN". '$"$$$&$($*' . "\cO" ],
- ["2022-jp", hiragana, "\e\$B".'$"$$$&$($*'."\e(B" ],
["2022-kr", hiragana, "\e\$)C\cN". '*"*$*&*(**' . "\cO" ],
-# [ $jis, han_kana, "\e\(I".'12345'."\e(B" ],
["2022-jp1", macron, "\e\$(D\x2A\x27\x2A\x37\x2A\x45\x2A\x57\x2A\x69\e(B"],
["2022-jp2", "\x{C0}" . macron . "\x{C1}",
"\e\$(D\e.A\eN\x40\x2A\x27\x2A\x37\x2A\x45\x2A\x57\x2A\x69\e(B\eN\x41"],
-# type-X
- ["euc-jp-0212", hiragana, "\xA4\xA2\xA4\xA4\xA4\xA6\xA4\xA8\xA4\xAA" ],
- ["euc-jp-0212", han_kana, "\x8E\xB1\x8E\xB2\x8E\xB3\x8E\xB4\x8E\xB5" ],
- ["euc-jp-0212", macron,
- "\x8F\xAA\xA7\x8F\xAA\xB7\x8F\xAA\xC5\x8F\xAA\xD7\x8F\xAA\xE9" ],
);
plan test => $n*@encodings + $n*@encodings*@greek
diff --git a/ext/Encode/t/japanese.pl b/ext/Encode/t/japanese.pl
deleted file mode 100644
index c0fe3cab80..0000000000
--- a/ext/Encode/t/japanese.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-use strict;
-#use blib;
-use Encode::Japanese;
-
-# print join("\n", Encode::encodings()),"\n";
diff --git a/ext/Encode/t/table.euc b/ext/Encode/t/jisx0208.euc
index 8178409aa5..8178409aa5 100644
--- a/ext/Encode/t/table.euc
+++ b/ext/Encode/t/jisx0208.euc
diff --git a/ext/Encode/t/table.ref b/ext/Encode/t/jisx0208.ref
index 1401b8928e..1401b8928e 100644
--- a/ext/Encode/t/table.ref
+++ b/ext/Encode/t/jisx0208.ref
diff --git a/ext/Encode/t/jisx0212.euc b/ext/Encode/t/jisx0212.euc
new file mode 100644
index 0000000000..3ca8fd342f
--- /dev/null
+++ b/ext/Encode/t/jisx0212.euc
@@ -0,0 +1,288 @@
+0x8fa0a0:
+0x8fa0c0:
+0x8fa0e0:
+0x8fa1a0:
+0x8fa1c0:
+0x8fa1e0:
+0x8fa2a0: ¢¯¢°¢±¢²¢³¢´¢µ¢¶~¢¸¢¹
+0x8fa2c0: ¢Â¢Ã¢Ä
+0x8fa2e0: ¢ë¢ì¢í¢î¢ï¢ð¢ñ
+0x8fa3a0:
+0x8fa3c0:
+0x8fa3e0:
+0x8fa4a0:
+0x8fa4c0:
+0x8fa4e0:
+0x8fa5a0:
+0x8fa5c0:
+0x8fa5e0:
+0x8fa6a0:
+0x8fa6c0:
+0x8fa6e0: ¦á¦â¦ã¦ä¦å ¦ç ¦é¦ê ¦ì ¦ñ¦ò¦ó¦ô¦õ¦ö¦÷¦ø¦ù¦ú¦û¦ü
+0x8fa7a0:
+0x8fa7c0: §Â§Ã§Ä§Å§Æ§Ç§È§É§Ê§Ë§Ì§Í§Î
+0x8fa7e0: §ò§ó§ô§õ§ö§÷§ø§ù§ú§û§ü§ý§þ
+0x8fa8a0:
+0x8fa8c0:
+0x8fa8e0:
+0x8fa9a0: ©¡©¢ ©¤ ©¦ ©¨©© ©«©¬©­ ©¯©°
+0x8fa9c0: ©Á©Â©Ã©Ä©Å©Æ©Ç©È©É©Ê©Ë©Ì©Í©Î©Ï©Ð
+0x8fa9e0:
+0x8faaa0: ª¡ª¢ª£ª¤ª¥ª¦ª§ª¨ª©ªªª«ª¬ª­ª®ª¯ª°ª±ª²ª³ª´ªµª¶ª·ª¸ ªºª»ª¼ª½ª¾
+0x8faac0: ªÀªÁªÂªÃªÄªÅªÆªÇªÈªÉªÊªËªÌªÍªÎªÏªÐªÑªÒªÓªÔªÕªÖª×ªØªÙªÚªÛªÜªÝªÞ
+0x8faae0: ªàªáªâªãªäªåªæªçªèªéªêªëªìªíªîªïªðªñªòªóªôªõªöª÷
+0x8faba0: «¡«¢«£«¤«¥«¦«§«¨«©«ª«««¬«­«®«¯«°«±«²«³«´«µ«¶«·«¸«¹«º«» «½«¾
+0x8fabc0: «À«Á«Â«Ã «Å«Æ«Ç«È«É«Ê«Ë«Ì«Í«Î«Ï«Ð«Ñ«Ò«Ó«Ô«Õ«Ö«×«Ø«Ù«Ú«Û«Ü«Ý«Þ
+0x8fabe0: «à«á«â«ã«ä«å«æ«ç«è«é«ê«ë«ì«í«î«ï«ð«ñ«ò«ó«ô«õ«ö«÷
+0x8faca0:
+0x8facc0:
+0x8face0:
+0x8fada0:
+0x8fadc0:
+0x8fade0:
+0x8faea0:
+0x8faec0:
+0x8faee0:
+0x8fafa0:
+0x8fafc0:
+0x8fafe0:
+0x8fb0a0: °¡°¢°£°¤°¥°¦°§°¨°©°ª°«°¬°­°®°¯°°°±°²°³°´°µ°¶°·°¸°¹°º°»°¼°½°¾
+0x8fb0c0: °À°Á°Â°Ã°Ä°Å°Æ°Ç°È°É°Ê°Ë°Ì°Í°Î°Ï°Ð°Ñ°Ò°Ó°Ô°Õ°Ö°×°Ø°Ù°Ú°Û°Ü°Ý°Þ
+0x8fb0e0: °à°á°â°ã°ä°å°æ°ç°è°é°ê°ë°ì°í°î°ï°ð°ñ°ò°ó°ô°õ°ö°÷°ø°ù°ú°û°ü°ý°þ
+0x8fb1a0: ±¡±¢±£±¤±¥±¦±§±¨±©±ª±«±¬±­±®±¯±°±±±²±³±´±µ±¶±·±¸±¹±º±»±¼±½±¾
+0x8fb1c0: ±À±Á±Â±Ã±Ä±Å±Æ±Ç±È±É±Ê±Ë±Ì±Í±Î±Ï±Ð±Ñ±Ò±Ó±Ô±Õ±Ö±×±Ø±Ù±Ú±Û±Ü±Ý±Þ
+0x8fb1e0: ±à±á±â±ã±ä±å±æ±ç±è±é±ê±ë±ì±í±î±ï±ð±ñ±ò±ó±ô±õ±ö±÷±ø±ù±ú±û±ü±ý±þ
+0x8fb2a0: ²¡²¢²£²¤²¥²¦²§²¨²©²ª²«²¬²­²®²¯²°²±²²²³²´²µ²¶²·²¸²¹²º²»²¼²½²¾
+0x8fb2c0: ²À²Á²Â²Ã²Ä²Å²Æ²Ç²È²É²Ê²Ë²Ì²Í²Î²Ï²Ð²Ñ²Ò²Ó²Ô²Õ²Ö²×²Ø²Ù²Ú²Û²Ü²Ý²Þ
+0x8fb2e0: ²à²á²â²ã²ä²å²æ²ç²è²é²ê²ë²ì²í²î²ï²ð²ñ²ò²ó²ô²õ²ö²÷²ø²ù²ú²û²ü²ý²þ
+0x8fb3a0: ³¡³¢³£³¤³¥³¦³§³¨³©³ª³«³¬³­³®³¯³°³±³²³³³´³µ³¶³·³¸³¹³º³»³¼³½³¾
+0x8fb3c0: ³À³Á³Â³Ã³Ä³Å³Æ³Ç³È³É³Ê³Ë³Ì³Í³Î³Ï³Ð³Ñ³Ò³Ó³Ô³Õ³Ö³×³Ø³Ù³Ú³Û³Ü³Ý³Þ
+0x8fb3e0: ³à³á³â³ã³ä³å³æ³ç³è³é³ê³ë³ì³í³î³ï³ð³ñ³ò³ó³ô³õ³ö³÷³ø³ù³ú³û³ü³ý³þ
+0x8fb4a0: ´¡´¢´£´¤´¥´¦´§´¨´©´ª´«´¬´­´®´¯´°´±´²´³´´´µ´¶´·´¸´¹´º´»´¼´½´¾
+0x8fb4c0: ´À´Á´Â´Ã´Ä´Å´Æ´Ç´È´É´Ê´Ë´Ì´Í´Î´Ï´Ð´Ñ´Ò´Ó´Ô´Õ´Ö´×´Ø´Ù´Ú´Û´Ü´Ý´Þ
+0x8fb4e0: ´à´á´â´ã´ä´å´æ´ç´è´é´ê´ë´ì´í´î´ï´ð´ñ´ò´ó´ô´õ´ö´÷´ø´ù´ú´û´ü´ý´þ
+0x8fb5a0: µ¡µ¢µ£µ¤µ¥µ¦µ§µ¨µ©µªµ«µ¬µ­µ®µ¯µ°µ±µ²µ³µ´µµµ¶µ·µ¸µ¹µºµ»µ¼µ½µ¾
+0x8fb5c0: µÀµÁµÂµÃµÄµÅµÆµÇµÈµÉµÊµËµÌµÍµÎµÏµÐµÑµÒµÓµÔµÕµÖµ×µØµÙµÚµÛµÜµÝµÞ
+0x8fb5e0: µàµáµâµãµäµåµæµçµèµéµêµëµìµíµîµïµðµñµòµóµôµõµöµ÷µøµùµúµûµüµýµþ
+0x8fb6a0: ¶¡¶¢¶£¶¤¶¥¶¦¶§¶¨¶©¶ª¶«¶¬¶­¶®¶¯¶°¶±¶²¶³¶´¶µ¶¶¶·¶¸¶¹¶º¶»¶¼¶½¶¾
+0x8fb6c0: ¶À¶Á¶Â¶Ã¶Ä¶Å¶Æ¶Ç¶È¶É¶Ê¶Ë¶Ì¶Í¶Î¶Ï¶Ð¶Ñ¶Ò¶Ó¶Ô¶Õ¶Ö¶×¶Ø¶Ù¶Ú¶Û¶Ü¶Ý¶Þ
+0x8fb6e0: ¶à¶á¶â¶ã¶ä¶å¶æ¶ç¶è¶é¶ê¶ë¶ì¶í¶î¶ï¶ð¶ñ¶ò¶ó¶ô¶õ¶ö¶÷¶ø¶ù¶ú¶û¶ü¶ý¶þ
+0x8fb7a0: ·¡·¢·£·¤·¥·¦·§·¨·©·ª·«·¬·­·®·¯·°·±·²·³·´·µ·¶···¸·¹·º·»·¼·½·¾
+0x8fb7c0: ·À·Á·Â·Ã·Ä·Å·Æ·Ç·È·É·Ê·Ë·Ì·Í·Î·Ï·Ð·Ñ·Ò·Ó·Ô·Õ·Ö·×·Ø·Ù·Ú·Û·Ü·Ý·Þ
+0x8fb7e0: ·à·á·â·ã·ä·å·æ·ç·è·é·ê·ë·ì·í·î·ï·ð·ñ·ò·ó·ô·õ·ö·÷·ø·ù·ú·û·ü·ý·þ
+0x8fb8a0: ¸¡¸¢¸£¸¤¸¥¸¦¸§¸¨¸©¸ª¸«¸¬¸­¸®¸¯¸°¸±¸²¸³¸´¸µ¸¶¸·¸¸¸¹¸º¸»¸¼¸½¸¾
+0x8fb8c0: ¸À¸Á¸Â¸Ã¸Ä¸Å¸Æ¸Ç¸È¸É¸Ê¸Ë¸Ì¸Í¸Î¸Ï¸Ð¸Ñ¸Ò¸Ó¸Ô¸Õ¸Ö¸×¸Ø¸Ù¸Ú¸Û¸Ü¸Ý¸Þ
+0x8fb8e0: ¸à¸á¸â¸ã¸ä¸å¸æ¸ç¸è¸é¸ê¸ë¸ì¸í¸î¸ï¸ð¸ñ¸ò¸ó¸ô¸õ¸ö¸÷¸ø¸ù¸ú¸û¸ü¸ý¸þ
+0x8fb9a0: ¹¡¹¢¹£¹¤¹¥¹¦¹§¹¨¹©¹ª¹«¹¬¹­¹®¹¯¹°¹±¹²¹³¹´¹µ¹¶¹·¹¸¹¹¹º¹»¹¼¹½¹¾
+0x8fb9c0: ¹À¹Á¹Â¹Ã¹Ä¹Å¹Æ¹Ç¹È¹É¹Ê¹Ë¹Ì¹Í¹Î¹Ï¹Ð¹Ñ¹Ò¹Ó¹Ô¹Õ¹Ö¹×¹Ø¹Ù¹Ú¹Û¹Ü¹Ý¹Þ
+0x8fb9e0: ¹à¹á¹â¹ã¹ä¹å¹æ¹ç¹è¹é¹ê¹ë¹ì¹í¹î¹ï¹ð¹ñ¹ò¹ó¹ô¹õ¹ö¹÷¹ø¹ù¹ú¹û¹ü¹ý¹þ
+0x8fbaa0: º¡º¢º£º¤º¥º¦º§º¨º©ºªº«º¬º­º®º¯º°º±º²º³º´ºµº¶º·º¸º¹ººº»º¼º½º¾
+0x8fbac0: ºÀºÁºÂºÃºÄºÅºÆºÇºÈºÉºÊºËºÌºÍºÎºÏºÐºÑºÒºÓºÔºÕºÖº×ºØºÙºÚºÛºÜºÝºÞ
+0x8fbae0: ºàºáºâºãºäºåºæºçºèºéºêºëºìºíºîºïºðºñºòºóºôºõºöº÷ºøºùºúºûºüºýºþ
+0x8fbba0: »¡»¢»£»¤»¥»¦»§»¨»©»ª»«»¬»­»®»¯»°»±»²»³»´»µ»¶»·»¸»¹»º»»»¼»½»¾
+0x8fbbc0: »À»Á»Â»Ã»Ä»Å»Æ»Ç»È»É»Ê»Ë»Ì»Í»Î»Ï»Ð»Ñ»Ò»Ó»Ô»Õ»Ö»×»Ø»Ù»Ú»Û»Ü»Ý»Þ
+0x8fbbe0: »à»á»â»ã»ä»å»æ»ç»è»é»ê»ë»ì»í»î»ï»ð»ñ»ò»ó»ô»õ»ö»÷»ø»ù»ú»û»ü»ý»þ
+0x8fbca0: ¼¡¼¢¼£¼¤¼¥¼¦¼§¼¨¼©¼ª¼«¼¬¼­¼®¼¯¼°¼±¼²¼³¼´¼µ¼¶¼·¼¸¼¹¼º¼»¼¼¼½¼¾
+0x8fbcc0: ¼À¼Á¼Â¼Ã¼Ä¼Å¼Æ¼Ç¼È¼É¼Ê¼Ë¼Ì¼Í¼Î¼Ï¼Ð¼Ñ¼Ò¼Ó¼Ô¼Õ¼Ö¼×¼Ø¼Ù¼Ú¼Û¼Ü¼Ý¼Þ
+0x8fbce0: ¼à¼á¼â¼ã¼ä¼å¼æ¼ç¼è¼é¼ê¼ë¼ì¼í¼î¼ï¼ð¼ñ¼ò¼ó¼ô¼õ¼ö¼÷¼ø¼ù¼ú¼û¼ü¼ý¼þ
+0x8fbda0: ½¡½¢½£½¤½¥½¦½§½¨½©½ª½«½¬½­½®½¯½°½±½²½³½´½µ½¶½·½¸½¹½º½»½¼½½½¾
+0x8fbdc0: ½À½Á½Â½Ã½Ä½Å½Æ½Ç½È½É½Ê½Ë½Ì½Í½Î½Ï½Ð½Ñ½Ò½Ó½Ô½Õ½Ö½×½Ø½Ù½Ú½Û½Ü½Ý½Þ
+0x8fbde0: ½à½á½â½ã½ä½å½æ½ç½è½é½ê½ë½ì½í½î½ï½ð½ñ½ò½ó½ô½õ½ö½÷½ø½ù½ú½û½ü½ý½þ
+0x8fbea0: ¾¡¾¢¾£¾¤¾¥¾¦¾§¾¨¾©¾ª¾«¾¬¾­¾®¾¯¾°¾±¾²¾³¾´¾µ¾¶¾·¾¸¾¹¾º¾»¾¼¾½¾¾
+0x8fbec0: ¾À¾Á¾Â¾Ã¾Ä¾Å¾Æ¾Ç¾È¾É¾Ê¾Ë¾Ì¾Í¾Î¾Ï¾Ð¾Ñ¾Ò¾Ó¾Ô¾Õ¾Ö¾×¾Ø¾Ù¾Ú¾Û¾Ü¾Ý¾Þ
+0x8fbee0: ¾à¾á¾â¾ã¾ä¾å¾æ¾ç¾è¾é¾ê¾ë¾ì¾í¾î¾ï¾ð¾ñ¾ò¾ó¾ô¾õ¾ö¾÷¾ø¾ù¾ú¾û¾ü¾ý¾þ
+0x8fbfa0: ¿¡¿¢¿£¿¤¿¥¿¦¿§¿¨¿©¿ª¿«¿¬¿­¿®¿¯¿°¿±¿²¿³¿´¿µ¿¶¿·¿¸¿¹¿º¿»¿¼¿½¿¾
+0x8fbfc0: ¿À¿Á¿Â¿Ã¿Ä¿Å¿Æ¿Ç¿È¿É¿Ê¿Ë¿Ì¿Í¿Î¿Ï¿Ð¿Ñ¿Ò¿Ó¿Ô¿Õ¿Ö¿×¿Ø¿Ù¿Ú¿Û¿Ü¿Ý¿Þ
+0x8fbfe0: ¿à¿á¿â¿ã¿ä¿å¿æ¿ç¿è¿é¿ê¿ë¿ì¿í¿î¿ï¿ð¿ñ¿ò¿ó¿ô¿õ¿ö¿÷¿ø¿ù¿ú¿û¿ü¿ý¿þ
+0x8fc0a0: À¡À¢À£À¤À¥À¦À§À¨À©ÀªÀ«À¬À­À®À¯À°À±À²À³À´ÀµÀ¶À·À¸À¹ÀºÀ»À¼À½À¾
+0x8fc0c0: ÀÀÀÁÀÂÀÃÀÄÀÅÀÆÀÇÀÈÀÉÀÊÀËÀÌÀÍÀÎÀÏÀÐÀÑÀÒÀÓÀÔÀÕÀÖÀ×ÀØÀÙÀÚÀÛÀÜÀÝÀÞ
+0x8fc0e0: ÀàÀáÀâÀãÀäÀåÀæÀçÀèÀéÀêÀëÀìÀíÀîÀïÀðÀñÀòÀóÀôÀõÀöÀ÷ÀøÀùÀúÀûÀüÀýÀþ
+0x8fc1a0: Á¡Á¢Á£Á¤Á¥Á¦Á§Á¨Á©ÁªÁ«Á¬Á­Á®Á¯Á°Á±Á²Á³Á´ÁµÁ¶Á·Á¸Á¹ÁºÁ»Á¼Á½Á¾
+0x8fc1c0: ÁÀÁÁÁÂÁÃÁÄÁÅÁÆÁÇÁÈÁÉÁÊÁËÁÌÁÍÁÎÁÏÁÐÁÑÁÒÁÓÁÔÁÕÁÖÁ×ÁØÁÙÁÚÁÛÁÜÁÝÁÞ
+0x8fc1e0: ÁàÁáÁâÁãÁäÁåÁæÁçÁèÁéÁêÁëÁìÁíÁîÁïÁðÁñÁòÁóÁôÁõÁöÁ÷ÁøÁùÁúÁûÁüÁýÁþ
+0x8fc2a0: ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾
+0x8fc2c0: ÂÀÂÁÂÂÂÃÂÄÂÅÂÆÂÇÂÈÂÉÂÊÂËÂÌÂÍÂÎÂÏÂÐÂÑÂÒÂÓÂÔÂÕÂÖÂ×ÂØÂÙÂÚÂÛÂÜÂÝÂÞ
+0x8fc2e0: ÂàÂáÂâÂãÂäÂåÂæÂçÂèÂéÂêÂëÂìÂíÂîÂïÂðÂñÂòÂóÂôÂõÂöÂ÷ÂøÂùÂúÂûÂüÂýÂþ
+0x8fc3a0: áâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ
+0x8fc3c0: ÃÀÃÁÃÂÃÃÃÄÃÅÃÆÃÇÃÈÃÉÃÊÃËÃÌÃÍÃÎÃÏÃÐÃÑÃÒÃÓÃÔÃÕÃÖÃ×ÃØÃÙÃÚÃÛÃÜÃÝÃÞ
+0x8fc3e0: ÃàÃáÃâÃãÃäÃåÃæÃçÃèÃéÃêÃëÃìÃíÃîÃïÃðÃñÃòÃóÃôÃõÃöÃ÷ÃøÃùÃúÃûÃüÃýÃþ
+0x8fc4a0: ġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľ
+0x8fc4c0: ÄÀÄÁÄÂÄÃÄÄÄÅÄÆÄÇÄÈÄÉÄÊÄËÄÌÄÍÄÎÄÏÄÐÄÑÄÒÄÓÄÔÄÕÄÖÄ×ÄØÄÙÄÚÄÛÄÜÄÝÄÞ
+0x8fc4e0: ÄàÄáÄâÄãÄäÄåÄæÄçÄèÄéÄêÄëÄìÄíÄîÄïÄðÄñÄòÄóÄôÄõÄöÄ÷ÄøÄùÄúÄûÄüÄýÄþ
+0x8fc5a0: šŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽž
+0x8fc5c0: ÅÀÅÁÅÂÅÃÅÄÅÅÅÆÅÇÅÈÅÉÅÊÅËÅÌÅÍÅÎÅÏÅÐÅÑÅÒÅÓÅÔÅÕÅÖÅ×ÅØÅÙÅÚÅÛÅÜÅÝÅÞ
+0x8fc5e0: ÅàÅáÅâÅãÅäÅåÅæÅçÅèÅéÅêÅëÅìÅíÅîÅïÅðÅñÅòÅóÅôÅõÅöÅ÷ÅøÅùÅúÅûÅüÅýÅþ
+0x8fc6a0: ơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾ
+0x8fc6c0: ÆÀÆÁÆÂÆÃÆÄÆÅÆÆÆÇÆÈÆÉÆÊÆËÆÌÆÍÆÎÆÏÆÐÆÑÆÒÆÓÆÔÆÕÆÖÆ×ÆØÆÙÆÚÆÛÆÜÆÝÆÞ
+0x8fc6e0: ÆàÆáÆâÆãÆäÆåÆæÆçÆèÆéÆêÆëÆìÆíÆîÆïÆðÆñÆòÆóÆôÆõÆöÆ÷ÆøÆùÆúÆûÆüÆýÆþ
+0x8fc7a0: ǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾ
+0x8fc7c0: ÇÀÇÁÇÂÇÃÇÄÇÅÇÆÇÇÇÈÇÉÇÊÇËÇÌÇÍÇÎÇÏÇÐÇÑÇÒÇÓÇÔÇÕÇÖÇ×ÇØÇÙÇÚÇÛÇÜÇÝÇÞ
+0x8fc7e0: ÇàÇáÇâÇãÇäÇåÇæÇçÇèÇéÇêÇëÇìÇíÇîÇïÇðÇñÇòÇóÇôÇõÇöÇ÷ÇøÇùÇúÇûÇüÇýÇþ
+0x8fc8a0: ȡȢȣȤȥȦȧȨȩȪȫȬȭȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾ
+0x8fc8c0: ÈÀÈÁÈÂÈÃÈÄÈÅÈÆÈÇÈÈÈÉÈÊÈËÈÌÈÍÈÎÈÏÈÐÈÑÈÒÈÓÈÔÈÕÈÖÈ×ÈØÈÙÈÚÈÛÈÜÈÝÈÞ
+0x8fc8e0: ÈàÈáÈâÈãÈäÈåÈæÈçÈèÈéÈêÈëÈìÈíÈîÈïÈðÈñÈòÈóÈôÈõÈöÈ÷ÈøÈùÈúÈûÈüÈýÈþ
+0x8fc9a0: ɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾ
+0x8fc9c0: ÉÀÉÁÉÂÉÃÉÄÉÅÉÆÉÇÉÈÉÉÉÊÉËÉÌÉÍÉÎÉÏÉÐÉÑÉÒÉÓÉÔÉÕÉÖÉ×ÉØÉÙÉÚÉÛÉÜÉÝÉÞ
+0x8fc9e0: ÉàÉáÉâÉãÉäÉåÉæÉçÉèÉéÉêÉëÉìÉíÉîÉïÉðÉñÉòÉóÉôÉõÉöÉ÷ÉøÉùÉúÉûÉüÉýÉþ
+0x8fcaa0: ʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯʰʱʲʳʴʵʶʷʸʹʺʻʼʽʾ
+0x8fcac0: ÊÀÊÁÊÂÊÃÊÄÊÅÊÆÊÇÊÈÊÉÊÊÊËÊÌÊÍÊÎÊÏÊÐÊÑÊÒÊÓÊÔÊÕÊÖÊ×ÊØÊÙÊÚÊÛÊÜÊÝÊÞ
+0x8fcae0: ÊàÊáÊâÊãÊäÊåÊæÊçÊèÊéÊêÊëÊìÊíÊîÊïÊðÊñÊòÊóÊôÊõÊöÊ÷ÊøÊùÊúÊûÊüÊýÊþ
+0x8fcba0: ˡˢˣˤ˥˦˧˨˩˪˫ˬ˭ˮ˯˰˱˲˳˴˵˶˷˸˹˺˻˼˽˾
+0x8fcbc0: ËÀËÁËÂËÃËÄËÅËÆËÇËÈËÉËÊËËËÌËÍËÎËÏËÐËÑËÒËÓËÔËÕËÖË×ËØËÙËÚËÛËÜËÝËÞ
+0x8fcbe0: ËàËáËâËãËäËåËæËçËèËéËêËëËìËíËîËïËðËñËòËóËôËõËöË÷ËøËùËúËûËüËýËþ
+0x8fcca0: ̴̵̶̷̸̡̢̧̨̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̽̾
+0x8fccc0: ÌÀÌÁÌÂÌÃÌÄÌÅÌÆÌÇÌÈÌÉÌÊÌËÌÌÌÍÌÎÌÏÌÐÌÑÌÒÌÓÌÔÌÕÌÖÌ×ÌØÌÙÌÚÌÛÌÜÌÝÌÞ
+0x8fcce0: ÌàÌáÌâÌãÌäÌåÌæÌçÌèÌéÌêÌëÌìÌíÌîÌïÌðÌñÌòÌóÌôÌõÌöÌ÷ÌøÌùÌúÌûÌüÌýÌþ
+0x8fcda0: ͣͤͥͦͧͨͩͪͫͬͭͮͯ͢͡ͰͱͲͳʹ͵Ͷͷ͸͹ͺͻͼͽ;
+0x8fcdc0: ÍÀÍÁÍÂÍÃÍÄÍÅÍÆÍÇÍÈÍÉÍÊÍËÍÌÍÍÍÎÍÏÍÐÍÑÍÒÍÓÍÔÍÕÍÖÍ×ÍØÍÙÍÚÍÛÍÜÍÝÍÞ
+0x8fcde0: ÍàÍáÍâÍãÍäÍåÍæÍçÍèÍéÍêÍëÍìÍíÍîÍïÍðÍñÍòÍóÍôÍõÍöÍ÷ÍøÍùÍúÍûÍüÍýÍþ
+0x8fcea0: Ρ΢ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξ
+0x8fcec0: ÎÀÎÁÎÂÎÃÎÄÎÅÎÆÎÇÎÈÎÉÎÊÎËÎÌÎÍÎÎÎÏÎÐÎÑÎÒÎÓÎÔÎÕÎÖÎ×ÎØÎÙÎÚÎÛÎÜÎÝÎÞ
+0x8fcee0: ÎàÎáÎâÎãÎäÎåÎæÎçÎèÎéÎêÎëÎìÎíÎîÎïÎðÎñÎòÎóÎôÎõÎöÎ÷ÎøÎùÎúÎûÎüÎýÎþ
+0x8fcfa0: ϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϰϱϲϳϴϵ϶ϷϸϹϺϻϼϽϾ
+0x8fcfc0: ÏÀÏÁÏÂÏÃÏÄÏÅÏÆÏÇÏÈÏÉÏÊÏËÏÌÏÍÏÎÏÏÏÐÏÑÏÒÏÓÏÔÏÕÏÖÏ×ÏØÏÙÏÚÏÛÏÜÏÝÏÞ
+0x8fcfe0: ÏàÏáÏâÏãÏäÏåÏæÏçÏèÏéÏêÏëÏìÏíÏîÏïÏðÏñÏòÏóÏôÏõÏöÏ÷ÏøÏùÏúÏûÏüÏýÏþ
+0x8fd0a0: СТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмно
+0x8fd0c0: ÐÀÐÁÐÂÐÃÐÄÐÅÐÆÐÇÐÈÐÉÐÊÐËÐÌÐÍÐÎÐÏÐÐÐÑÐÒÐÓÐÔÐÕÐÖÐ×ÐØÐÙÐÚÐÛÐÜÐÝÐÞ
+0x8fd0e0: ÐàÐáÐâÐãÐäÐåÐæÐçÐèÐéÐêÐëÐìÐíÐîÐïÐðÐñÐòÐóÐôÐõÐöÐ÷ÐøÐùÐúÐûÐüÐýÐþ
+0x8fd1a0: ѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾ
+0x8fd1c0: ÑÀÑÁÑÂÑÃÑÄÑÅÑÆÑÇÑÈÑÉÑÊÑËÑÌÑÍÑÎÑÏÑÐÑÑÑÒÑÓÑÔÑÕÑÖÑ×ÑØÑÙÑÚÑÛÑÜÑÝÑÞ
+0x8fd1e0: ÑàÑáÑâÑãÑäÑåÑæÑçÑèÑéÑêÑëÑìÑíÑîÑïÑðÑñÑòÑóÑôÑõÑöÑ÷ÑøÑùÑúÑûÑüÑýÑþ
+0x8fd2a0: Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬Ò­Ò®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾
+0x8fd2c0: ÒÀÒÁÒÂÒÃÒÄÒÅÒÆÒÇÒÈÒÉÒÊÒËÒÌÒÍÒÎÒÏÒÐÒÑÒÒÒÓÒÔÒÕÒÖÒ×ÒØÒÙÒÚÒÛÒÜÒÝÒÞ
+0x8fd2e0: ÒàÒáÒâÒãÒäÒåÒæÒçÒèÒéÒêÒëÒìÒíÒîÒïÒðÒñÒòÒóÒôÒõÒöÒ÷ÒøÒùÒúÒûÒüÒýÒþ
+0x8fd3a0: Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬Ó­Ó®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹ÓºÓ»Ó¼Ó½Ó¾
+0x8fd3c0: ÓÀÓÁÓÂÓÃÓÄÓÅÓÆÓÇÓÈÓÉÓÊÓËÓÌÓÍÓÎÓÏÓÐÓÑÓÒÓÓÓÔÓÕÓÖÓ×ÓØÓÙÓÚÓÛÓÜÓÝÓÞ
+0x8fd3e0: ÓàÓáÓâÓãÓäÓåÓæÓçÓèÓéÓêÓëÓìÓíÓîÓïÓðÓñÓòÓóÓôÓõÓöÓ÷ÓøÓùÓúÓûÓüÓýÓþ
+0x8fd4a0: Ô¡Ô¢Ô£Ô¤Ô¥Ô¦Ô§Ô¨Ô©ÔªÔ«Ô¬Ô­Ô®Ô¯Ô°Ô±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾
+0x8fd4c0: ÔÀÔÁÔÂÔÃÔÄÔÅÔÆÔÇÔÈÔÉÔÊÔËÔÌÔÍÔÎÔÏÔÐÔÑÔÒÔÓÔÔÔÕÔÖÔ×ÔØÔÙÔÚÔÛÔÜÔÝÔÞ
+0x8fd4e0: ÔàÔáÔâÔãÔäÔåÔæÔçÔèÔéÔêÔëÔìÔíÔîÔïÔðÔñÔòÔóÔôÔõÔöÔ÷ÔøÔùÔúÔûÔüÔýÔþ
+0x8fd5a0: Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬Õ­Õ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾
+0x8fd5c0: ÕÀÕÁÕÂÕÃÕÄÕÅÕÆÕÇÕÈÕÉÕÊÕËÕÌÕÍÕÎÕÏÕÐÕÑÕÒÕÓÕÔÕÕÕÖÕ×ÕØÕÙÕÚÕÛÕÜÕÝÕÞ
+0x8fd5e0: ÕàÕáÕâÕãÕäÕåÕæÕçÕèÕéÕêÕëÕìÕíÕîÕïÕðÕñÕòÕóÕôÕõÕöÕ÷ÕøÕùÕúÕûÕüÕýÕþ
+0x8fd6a0: Ö¡Ö¢Ö£Ö¤Ö¥Ö¦Ö§Ö¨Ö©ÖªÖ«Ö¬Ö­Ö®Ö¯Ö°Ö±Ö²Ö³Ö´ÖµÖ¶Ö·Ö¸Ö¹ÖºÖ»Ö¼Ö½Ö¾
+0x8fd6c0: ÖÀÖÁÖÂÖÃÖÄÖÅÖÆÖÇÖÈÖÉÖÊÖËÖÌÖÍÖÎÖÏÖÐÖÑÖÒÖÓÖÔÖÕÖÖÖ×ÖØÖÙÖÚÖÛÖÜÖÝÖÞ
+0x8fd6e0: ÖàÖáÖâÖãÖäÖåÖæÖçÖèÖéÖêÖëÖìÖíÖîÖïÖðÖñÖòÖóÖôÖõÖöÖ÷ÖøÖùÖúÖûÖüÖýÖþ
+0x8fd7a0: סעףפץצקרשת׫׬׭׮ׯװױײ׳״׵׶׷׸׹׺׻׼׽׾
+0x8fd7c0: ×À×Á×Â×Ã×Ä×Å×Æ×Ç×È×É×Ê×Ë×Ì×Í×Î×Ï×Ð×Ñ×Ò×Ó×Ô×Õ×Ö×××Ø×Ù×Ú×Û×Ü×Ý×Þ
+0x8fd7e0: ×à×á×â×ã×ä×å×æ×ç×è×é×ê×ë×ì×í×î×ï×ð×ñ×ò×ó×ô×õ×ö×÷×ø×ù×ú×û×ü×ý×þ
+0x8fd8a0: ءآأؤإئابةتثجحخدذرزسشصضطظعغػؼؽؾ
+0x8fd8c0: ØÀØÁØÂØÃØÄØÅØÆØÇØÈØÉØÊØËØÌØÍØÎØÏØÐØÑØÒØÓØÔØÕØÖØ×ØØØÙØÚØÛØÜØÝØÞ
+0x8fd8e0: ØàØáØâØãØäØåØæØçØèØéØêØëØìØíØîØïØðØñØòØóØôØõØöØ÷ØøØùØúØûØüØýØþ
+0x8fd9a0: ١٢٣٤٥٦٧٨٩٪٫٬٭ٮٯٰٱٲٳٴٵٶٷٸٹٺٻټٽپ
+0x8fd9c0: ÙÀÙÁÙÂÙÃÙÄÙÅÙÆÙÇÙÈÙÉÙÊÙËÙÌÙÍÙÎÙÏÙÐÙÑÙÒÙÓÙÔÙÕÙÖÙ×ÙØÙÙÙÚÙÛÙÜÙÝÙÞ
+0x8fd9e0: ÙàÙáÙâÙãÙäÙåÙæÙçÙèÙéÙêÙëÙìÙíÙîÙïÙðÙñÙòÙóÙôÙõÙöÙ÷ÙøÙùÙúÙûÙüÙýÙþ
+0x8fdaa0: Ú¡Ú¢Ú£Ú¤Ú¥Ú¦Ú§Ú¨Ú©ÚªÚ«Ú¬Ú­Ú®Ú¯Ú°Ú±Ú²Ú³Ú´ÚµÚ¶Ú·Ú¸Ú¹ÚºÚ»Ú¼Ú½Ú¾
+0x8fdac0: ÚÀÚÁÚÂÚÃÚÄÚÅÚÆÚÇÚÈÚÉÚÊÚËÚÌÚÍÚÎÚÏÚÐÚÑÚÒÚÓÚÔÚÕÚÖÚ×ÚØÚÙÚÚÚÛÚÜÚÝÚÞ
+0x8fdae0: ÚàÚáÚâÚãÚäÚåÚæÚçÚèÚéÚêÚëÚìÚíÚîÚïÚðÚñÚòÚóÚôÚõÚöÚ÷ÚøÚùÚúÚûÚüÚýÚþ
+0x8fdba0: Û¡Û¢Û£Û¤Û¥Û¦Û§Û¨Û©ÛªÛ«Û¬Û­Û®Û¯Û°Û±Û²Û³Û´ÛµÛ¶Û·Û¸Û¹ÛºÛ»Û¼Û½Û¾
+0x8fdbc0: ÛÀÛÁÛÂÛÃÛÄÛÅÛÆÛÇÛÈÛÉÛÊÛËÛÌÛÍÛÎÛÏÛÐÛÑÛÒÛÓÛÔÛÕÛÖÛ×ÛØÛÙÛÚÛÛÛÜÛÝÛÞ
+0x8fdbe0: ÛàÛáÛâÛãÛäÛåÛæÛçÛèÛéÛêÛëÛìÛíÛîÛïÛðÛñÛòÛóÛôÛõÛöÛ÷ÛøÛùÛúÛûÛüÛýÛþ
+0x8fdca0: ܡܢܣܤܥܦܧܨܩܪܫܬܭܮܯܱܴܷܸܹܻܼܾܰܲܳܵܶܺܽ
+0x8fdcc0: ÜÀÜÁÜÂÜÃÜÄÜÅÜÆÜÇÜÈÜÉÜÊÜËÜÌÜÍÜÎÜÏÜÐÜÑÜÒÜÓÜÔÜÕÜÖÜ×ÜØÜÙÜÚÜÛÜÜÜÝÜÞ
+0x8fdce0: ÜàÜáÜâÜãÜäÜåÜæÜçÜèÜéÜêÜëÜìÜíÜîÜïÜðÜñÜòÜóÜôÜõÜöÜ÷ÜøÜùÜúÜûÜüÜýÜþ
+0x8fdda0: ݡݢݣݤݥݦݧݨݩݪݫݬݭݮݯݰݱݲݳݴݵݶݷݸݹݺݻݼݽݾ
+0x8fddc0: ÝÀÝÁÝÂÝÃÝÄÝÅÝÆÝÇÝÈÝÉÝÊÝËÝÌÝÍÝÎÝÏÝÐÝÑÝÒÝÓÝÔÝÕÝÖÝ×ÝØÝÙÝÚÝÛÝÜÝÝÝÞ
+0x8fdde0: ÝàÝáÝâÝãÝäÝåÝæÝçÝèÝéÝêÝëÝìÝíÝîÝïÝðÝñÝòÝóÝôÝõÝöÝ÷ÝøÝùÝúÝûÝüÝýÝþ
+0x8fdea0: Þ¡Þ¢Þ£Þ¤Þ¥Þ¦Þ§Þ¨Þ©ÞªÞ«Þ¬Þ­Þ®Þ¯Þ°Þ±Þ²Þ³Þ´ÞµÞ¶Þ·Þ¸Þ¹ÞºÞ»Þ¼Þ½Þ¾
+0x8fdec0: ÞÀÞÁÞÂÞÃÞÄÞÅÞÆÞÇÞÈÞÉÞÊÞËÞÌÞÍÞÎÞÏÞÐÞÑÞÒÞÓÞÔÞÕÞÖÞ×ÞØÞÙÞÚÞÛÞÜÞÝÞÞ
+0x8fdee0: ÞàÞáÞâÞãÞäÞåÞæÞçÞèÞéÞêÞëÞìÞíÞîÞïÞðÞñÞòÞóÞôÞõÞöÞ÷ÞøÞùÞúÞûÞüÞýÞþ
+0x8fdfa0: ߡߢߣߤߥߦߧߨߩߪ߲߫߬߭߮߯߰߱߳ߴߵ߶߷߸߹ߺ߻߼߽߾
+0x8fdfc0: ßÀßÁßÂßÃßÄßÅßÆßÇßÈßÉßÊßËßÌßÍßÎßÏßÐßÑßÒßÓßÔßÕßÖß×ßØßÙßÚßÛßÜßÝßÞ
+0x8fdfe0: ßàßáßâßãßäßåßæßçßèßéßêßëßìßíßîßïßðßñßòßóßôßõßöß÷ßøßùßúßûßüßýßþ
+0x8fe0a0: à¡à¢à£à¤à¥à¦à§à¨à©àªà«à¬à­à®à¯à°à±à²à³à´àµà¶à·à¸à¹àºà»à¼à½à¾
+0x8fe0c0: àÀàÁàÂàÃàÄàÅàÆàÇàÈàÉàÊàËàÌàÍàÎàÏàÐàÑàÒàÓàÔàÕàÖà×àØàÙàÚàÛàÜàÝàÞ
+0x8fe0e0: àààáàâàãàäàåàæàçàèàéàêàëàìàíàîàïàðàñàòàóàôàõàöà÷àøàùàúàûàüàýàþ
+0x8fe1a0: á¡á¢á£á¤á¥á¦á§á¨á©áªá«á¬á­á®á¯á°á±á²á³á´áµá¶á·á¸á¹áºá»á¼á½á¾
+0x8fe1c0: áÀáÁáÂáÃáÄáÅáÆáÇáÈáÉáÊáËáÌáÍáÎáÏáÐáÑáÒáÓáÔáÕáÖá×áØáÙáÚáÛáÜáÝáÞ
+0x8fe1e0: áàáááâáãáäáåáæáçáèáéáêáëáìáíáîáïáðáñáòáóáôáõáöá÷áøáùáúáûáüáýáþ
+0x8fe2a0: â¡â¢â£â¤â¥â¦â§â¨â©âªâ«â¬â­â®â¯â°â±â²â³â´âµâ¶â·â¸â¹âºâ»â¼â½â¾
+0x8fe2c0: âÀâÁâÂâÃâÄâÅâÆâÇâÈâÉâÊâËâÌâÍâÎâÏâÐâÑâÒâÓâÔâÕâÖâ×âØâÙâÚâÛâÜâÝâÞ
+0x8fe2e0: âàâáâââãâäâåâæâçâèâéâêâëâìâíâîâïâðâñâòâóâôâõâöâ÷âøâùâúâûâüâýâþ
+0x8fe3a0: ã¡ã¢ã£ã¤ã¥ã¦ã§ã¨ã©ãªã«ã¬ã­ã®ã¯ã°ã±ã²ã³ã´ãµã¶ã·ã¸ã¹ãºã»ã¼ã½ã¾
+0x8fe3c0: ãÀãÁãÂãÃãÄãÅãÆãÇãÈãÉãÊãËãÌãÍãÎãÏãÐãÑãÒãÓãÔãÕãÖã×ãØãÙãÚãÛãÜãÝãÞ
+0x8fe3e0: ãàãáãâãããäãåãæãçãèãéãêãëãìãíãîãïãðãñãòãóãôãõãöã÷ãøãùãúãûãüãýãþ
+0x8fe4a0: ä¡ä¢ä£ä¤ä¥ä¦ä§ä¨ä©äªä«ä¬ä­ä®ä¯ä°ä±ä²ä³ä´äµä¶ä·ä¸ä¹äºä»ä¼ä½ä¾
+0x8fe4c0: äÀäÁäÂäÃäÄäÅäÆäÇäÈäÉäÊäËäÌäÍäÎäÏäÐäÑäÒäÓäÔäÕäÖä×äØäÙäÚäÛäÜäÝäÞ
+0x8fe4e0: äàäáäâäãäääåäæäçäèäéäêäëäìäíäîäïäðäñäòäóäôäõäöä÷äøäùäúäûäüäýäþ
+0x8fe5a0: å¡å¢å£å¤å¥å¦å§å¨å©åªå«å¬å­å®å¯å°å±å²å³å´åµå¶å·å¸å¹åºå»å¼å½å¾
+0x8fe5c0: åÀåÁåÂåÃåÄåÅåÆåÇåÈåÉåÊåËåÌåÍåÎåÏåÐåÑåÒåÓåÔåÕåÖå×åØåÙåÚåÛåÜåÝåÞ
+0x8fe5e0: åàåáåâåãåäåååæåçåèåéåêåëåìåíåîåïåðåñåòåóåôåõåöå÷åøåùåúåûåüåýåþ
+0x8fe6a0: æ¡æ¢æ£æ¤æ¥æ¦æ§æ¨æ©æªæ«æ¬æ­æ®æ¯æ°æ±æ²æ³æ´æµæ¶æ·æ¸æ¹æºæ»æ¼æ½æ¾
+0x8fe6c0: æÀæÁæÂæÃæÄæÅæÆæÇæÈæÉæÊæËæÌæÍæÎæÏæÐæÑæÒæÓæÔæÕæÖæ×æØæÙæÚæÛæÜæÝæÞ
+0x8fe6e0: æàæáæâæãæäæåæææçæèæéæêæëæìæíæîæïæðæñæòæóæôæõæöæ÷æøæùæúæûæüæýæþ
+0x8fe7a0: ç¡ç¢ç£ç¤ç¥ç¦ç§ç¨ç©çªç«ç¬ç­ç®ç¯ç°ç±ç²ç³ç´çµç¶ç·ç¸ç¹çºç»ç¼ç½ç¾
+0x8fe7c0: çÀçÁçÂçÃçÄçÅçÆçÇçÈçÉçÊçËçÌçÍçÎçÏçÐçÑçÒçÓçÔçÕçÖç×çØçÙçÚçÛçÜçÝçÞ
+0x8fe7e0: çàçáçâçãçäçåçæçççèçéçêçëçìçíçîçïçðçñçòçóçôçõçöç÷çøçùçúçûçüçýçþ
+0x8fe8a0: è¡è¢è£è¤è¥è¦è§è¨è©èªè«è¬è­è®è¯è°è±è²è³è´èµè¶è·è¸è¹èºè»è¼è½è¾
+0x8fe8c0: èÀèÁèÂèÃèÄèÅèÆèÇèÈèÉèÊèËèÌèÍèÎèÏèÐèÑèÒèÓèÔèÕèÖè×èØèÙèÚèÛèÜèÝèÞ
+0x8fe8e0: èàèáèâèãèäèåèæèçèèèéèêèëèìèíèîèïèðèñèòèóèôèõèöè÷èøèùèúèûèüèýèþ
+0x8fe9a0: é¡é¢é£é¤é¥é¦é§é¨é©éªé«é¬é­é®é¯é°é±é²é³é´éµé¶é·é¸é¹éºé»é¼é½é¾
+0x8fe9c0: éÀéÁéÂéÃéÄéÅéÆéÇéÈéÉéÊéËéÌéÍéÎéÏéÐéÑéÒéÓéÔéÕéÖé×éØéÙéÚéÛéÜéÝéÞ
+0x8fe9e0: éàéáéâéãéäéåéæéçéèéééêéëéìéíéîéïéðéñéòéóéôéõéöé÷éøéùéúéûéüéýéþ
+0x8feaa0: ê¡ê¢ê£ê¤ê¥ê¦ê§ê¨ê©êªê«ê¬ê­ê®ê¯ê°ê±ê²ê³ê´êµê¶ê·ê¸ê¹êºê»ê¼ê½ê¾
+0x8feac0: êÀêÁêÂêÃêÄêÅêÆêÇêÈêÉêÊêËêÌêÍêÎêÏêÐêÑêÒêÓêÔêÕêÖê×êØêÙêÚêÛêÜêÝêÞ
+0x8feae0: êàêáêâêãêäêåêæêçêèêéêêêëêìêíêîêïêðêñêòêóêôêõêöê÷êøêùêúêûêüêýêþ
+0x8feba0: ë¡ë¢ë£ë¤ë¥ë¦ë§ë¨ë©ëªë«ë¬ë­ë®ë¯ë°ë±ë²ë³ë´ëµë¶ë·ë¸ë¹ëºë»ë¼ë½ë¾
+0x8febc0: ëÀëÁëÂëÃëÄëÅëÆëÇëÈëÉëÊëËëÌëÍëÎëÏëÐëÑëÒëÓëÔëÕëÖë×ëØëÙëÚëÛëÜëÝëÞ
+0x8febe0: ëàëáëâëãëäëåëæëçëèëéëêëëëìëíëîëïëðëñëòëóëôëõëöë÷ëøëùëúëûëüëýëþ
+0x8feca0: ì¡ì¢ì£ì¤ì¥ì¦ì§ì¨ì©ìªì«ì¬ì­ì®ì¯ì°ì±ì²ì³ì´ìµì¶ì·ì¸ì¹ìºì»ì¼ì½ì¾
+0x8fecc0: ìÀìÁìÂìÃìÄìÅìÆìÇìÈìÉìÊìËìÌìÍìÎìÏìÐìÑìÒìÓìÔìÕìÖì×ìØìÙìÚìÛìÜìÝìÞ
+0x8fece0: ìàìáìâìãìäìåìæìçìèìéìêìëìììíìîìïìðìñìòìóìôìõìöì÷ìøìùìúìûìüìýìþ
+0x8feda0: í¡í¢í£í¤í¥í¦í§í¨í©íªí«í¬í­í®í¯í°í±í²í³í´íµí¶í·í¸í¹íºí»í¼í½í¾
+0x8fedc0: íÀíÁíÂíÃíÄíÅíÆíÇíÈíÉíÊíËíÌíÍíÎíÏíÐíÑíÒíÓíÔíÕíÖí×íØíÙíÚíÛíÜíÝíÞ
+0x8fede0: íàíáíâíã
+0x8feea0:
+0x8feec0:
+0x8feee0:
+0x8fefa0:
+0x8fefc0:
+0x8fefe0:
+0x8ff0a0:
+0x8ff0c0:
+0x8ff0e0:
+0x8ff1a0:
+0x8ff1c0:
+0x8ff1e0:
+0x8ff2a0:
+0x8ff2c0:
+0x8ff2e0:
+0x8ff3a0:
+0x8ff3c0:
+0x8ff3e0:
+0x8ff4a0:
+0x8ff4c0:
+0x8ff4e0:
+0x8ff5a0:
+0x8ff5c0:
+0x8ff5e0:
+0x8ff6a0:
+0x8ff6c0:
+0x8ff6e0:
+0x8ff7a0:
+0x8ff7c0:
+0x8ff7e0:
+0x8ff8a0:
+0x8ff8c0:
+0x8ff8e0:
+0x8ff9a0:
+0x8ff9c0:
+0x8ff9e0:
+0x8ffaa0:
+0x8ffac0:
+0x8ffae0:
+0x8ffba0:
+0x8ffbc0:
+0x8ffbe0:
+0x8ffca0:
+0x8ffcc0:
+0x8ffce0:
+0x8ffda0:
+0x8ffdc0:
+0x8ffde0:
+0x8ffea0:
+0x8ffec0:
+0x8ffee0:
+0x8fffa0:
+0x8fffc0:
+0x8fffe0:
diff --git a/ext/Encode/t/jisx0212.ref b/ext/Encode/t/jisx0212.ref
new file mode 100644
index 0000000000..b4848082c7
--- /dev/null
+++ b/ext/Encode/t/jisx0212.ref
@@ -0,0 +1,288 @@
+0x8fa0a0:
+0x8fa0c0:
+0x8fa0e0:
+0x8fa1a0:
+0x8fa1c0:
+0x8fa1e0:
+0x8fa2a0: ˘ˇ¸˙˯˛˚~΄΅
+0x8fa2c0: ¡¦¿
+0x8fa2e0: ºª©®™¤№
+0x8fa3a0:
+0x8fa3c0:
+0x8fa3e0:
+0x8fa4a0:
+0x8fa4c0:
+0x8fa4e0:
+0x8fa5a0:
+0x8fa5c0:
+0x8fa5e0:
+0x8fa6a0:
+0x8fa6c0:
+0x8fa6e0: ΆΈΉΊΪ ÎŒ ΎΫ ΠάέήίϊÎόςÏϋΰώ
+0x8fa7a0:
+0x8fa7c0: ЂЃЄЅІЇЈЉЊЋЌЎÐ
+0x8fa7e0: ђѓєѕіїјљњћќўџ
+0x8fa8a0:
+0x8fa8c0:
+0x8fa8e0:
+0x8fa9a0: Ã†Ä Ä¦ IJ ÅÄ¿ ŊØŒ ŦÞ
+0x8fa9c0: æđðħıijĸłŀʼnŋøœßŧþ
+0x8fa9e0:
+0x8faaa0: ÃÀÄÂĂÇĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ ĜĞĢĠĤ
+0x8faac0: ÃŒÃÃŽÇİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑÅŌÕŔŘŖŚŜŠ
+0x8faae0: ŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴßŶŹŽŻ
+0x8faba0: áàäâăǎÄąåãćĉÄçċÄéèëêěėēęǵÄÄŸ Ä¡Ä¥
+0x8fabc0: Ã¬Ã¯Ã®Ç Ä«Ä¯Ä©ÄµÄ·ÄºÄ¾Ä¼Å„ÅˆÅ†Ã±Ã³Ã²Ã¶Ã´Ç’Å‘ÅõŕřŗśÅÅ¡
+0x8fabe0: ťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż
+0x8faca0:
+0x8facc0:
+0x8face0:
+0x8fada0:
+0x8fadc0:
+0x8fade0:
+0x8faea0:
+0x8faec0:
+0x8faee0:
+0x8fafa0:
+0x8fafc0:
+0x8fafe0:
+0x8fb0a0: 丂丄丅丌丒丟丣两丨丫丮丯丰丵乀ä¹ä¹„乇乑乚乜乣乨乩乴乵乹乿äºäº–
+0x8fb0c0: äºäº¯äº¹ä»ƒä»ä»šä»›ä» ä»¡ä»¢ä»¨ä»¯ä»±ä»³ä»µä»½ä»¾ä»¿ä¼€ä¼‚伃伈伋伌伒伕伖众伙伮伱
+0x8fb0e0: 伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾ä¾ä¾‚侄
+0x8fb1a0: 侅侉侊侌侎ä¾ä¾’侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀ä¿ä¿…俆俈俉俋俌ä¿
+0x8fb1c0: 俒俜俠俢俰俲俼俽俿倀å€å€„倇倊倌倎å€å€“倗倘倛倜å€å€žå€¢å€§å€®å€°å€²å€³å€µ
+0x8fb1e0: åå‚å…å†åŠåŒåŽå‘å’å“å—å™åŸå å¢å£å¦å§åªå­å°å±å€»å‚傃傄傆傊傎å‚å‚
+0x8fb2a0: 傒傓傔傖傛傜傞傟傠傡傢傪傯傰傹傺傽僀僃僄僇僌僎åƒåƒ“僔僘僜åƒåƒŸ
+0x8fb2c0: 僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌å„儎僲å„儗儙儛儜å„儞儣儧儨儬儭儯
+0x8fb2e0: 儳儴儵儸儹兂兊å…兓兕兗兘兟兤兦兾冃冄冋冎冘å†å†¡å†£å†­å†¸å†ºå†¼å†¾å†¿å‡‚
+0x8fb3a0: 凈å‡å‡‘凒凓凕凘凞凢凥凮凲凳凴凷åˆåˆ‚刅划刓刕刖刘刢刨刱刲刵刼剅
+0x8fb3c0: 剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰
+0x8fb3e0: 劷劸劺劻劽勀勄勆勈勌å‹å‹‘勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋
+0x8fb4a0: 匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾å‚åŒå‹å™å›å¡å£å¥å¬
+0x8fb4c0: å²å¹å¾åŽƒåŽ‡åŽˆåŽŽåŽ“厔厙åŽåŽ¡åŽ¤åŽªåŽ«åŽ¯åŽ²åŽ´åŽµåŽ·åŽ¸åŽºåŽ½å€å…åå’å“å•åšå
+0x8fb4e0: å å¦å§åµå‚å“åšå¡å§å¨åªå¯å±å´åµå‘ƒå‘„呇å‘å‘呞呢呤呦呧呩呫呭呮呴呿
+0x8fb5a0: å’咃咅咈咉å’咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊å“哎哠哪
+0x8fb5c0: 哯哶哼哾哿唀å”唅唈唉唌å”唎唕唪唫唲唵唶唻唼唽å•å•‡å•‰å•Šå•å•å•‘啘啚
+0x8fb5e0: 啞啠啡啤啦啿å–喂喆喈喎å–喑喒喓喔喗喣喤喭喲喿å—嗃嗆嗉嗋嗌嗎嗑嗒
+0x8fb6a0: 嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊å˜å˜Žå˜å˜å˜‘嘒嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀
+0x8fb6c0: 噃噄噆噉噋å™å™å™”噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚åšåšžåšŸ
+0x8fb6e0: 嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋å›å›å›Œå›å›™å›œå›å›Ÿå›¡å›¤å›¥å›¦å›§å›¨å›±å›«å›­
+0x8fb7a0: 囶囷åœåœ‚圇圊圌圑圕圚圛åœåœ åœ¢åœ£åœ¤åœ¥åœ©åœªåœ¬åœ®åœ¯åœ³åœ´åœ½åœ¾åœ¿å…å†åŒ
+0x8fb7c0: å’å¢å¥å§å¨å«å­å®å¯å°å±å³å´åµå·å¹åºå»å¼å¾åžåžƒåžŒåž”垗垙垚垜åžåžžåžŸ
+0x8fb7e0: 垕垧垨垩垬垸垽埇埈埌åŸåŸ•åŸåŸžåŸ¤åŸ¦åŸ§åŸ©åŸ­åŸ°åŸµåŸ¶åŸ¸åŸ½åŸ¾åŸ¿å ƒå „堈堉埡
+0x8fb8a0: å Œå å ›å žå Ÿå  å ¦å §å ­å ²å ¹å ¿å¡‰å¡Œå¡å¡å¡å¡•å¡Ÿå¡¡å¡¤å¡§å¡¨å¡¸å¡¼å¡¿å¢€å¢å¢‡å¢ˆ
+0x8fb8c0: 墊墌å¢å¢å¢å¢”墖å¢å¢ å¢¡å¢¢å¢¦å¢©å¢±å¢²å£„墼壂壈å£å£Žå£å£’壔壖壚å£å£¡å£¢å£©å£³
+0x8fb8e0: 夆夋夌夒夓夔è™å¤å¤¡å¤£å¤¤å¤¨å¤¯å¤°å¤³å¤µå¤¶å¤¿å¥ƒå¥†å¥’奓奙奛å¥å¥žå¥Ÿå¥¡å¥£å¥«å¥­
+0x8fb9a0: 奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼å§å§ƒå§„姈姊å§
+0x8fb9c0: å§å§žå§Ÿå§£å§¤å§§å§®å§¯å§±å§²å§´å§·å¨€å¨„娌å¨å¨Žå¨’娓娞娣娤娧娨娪娭娰婄婅婇婈
+0x8fb9e0: å©å©•å©žå©£å©¥å©§å©­å©·å©ºå©»å©¾åª‹åªåª“媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿
+0x8fbaa0: 嫄嫆嫈å«å«šå«œå« å«¥å«ªå«®å«µå«¶å«½å¬€å¬å¬ˆå¬—嬴嬙嬛å¬å¬¡å¬¥å¬­å¬¸å­å­‹å­Œå­’å­–
+0x8fbac0: 孨孮孯孼孽孾孿å®å®„宆宊宎å®å®‘宓宔宖宨宩宬宭宯宱宲宷宺宼寀å¯å¯å¯
+0x8fbae0: 寗寘寙寚寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩
+0x8fbba0: 屭屰屴屵屺屻屼屽岇岈岊å²å²’å²å²Ÿå² å²¢å²£å²¦å²ªå²²å²´å²µå²ºå³‰å³‹å³’å³å³—å³®
+0x8fbbc0: 峲峴å´å´†å´å´’崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭
+0x8fbbe0: 嵹嵺嵾嵿å¶å¶ƒå¶ˆå¶Šå¶’嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋å·å·Žå·˜å·™å· å·¤
+0x8fbca0: 巩巸巹帀帇å¸å¸’帔帕帘帟帠帮帨帲帵帾幋å¹å¹‰å¹‘幖幘幛幜幞幨幪幫幬
+0x8fbcc0: 幮幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇
+0x8fbce0: 弎弙弜å¼å¼¡å¼¢å¼£å¼¤å¼¨å¼«å¼¬å¼®å¼°å¼´å¼¶å¼»å¼½å¼¿å½€å½„彅彇å½å½å½”彘彛彠彣彤彧
+0x8fbda0: 彯彲彴彵彸彺彽彾徉å¾å¾å¾–徜å¾å¾¢å¾§å¾«å¾¤å¾¬å¾¯å¾°å¾±å¾¸å¿„忇忈忉忋å¿å¿‘
+0x8fbdc0: 忓忔忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊æ€æ€“怔怗怘怚怟怤怭怳怵æ€
+0x8fbde0: æˆæ‰æŒæ‘æ”æ–æ—ææ¡æ§æ±æ¾æ¿æ‚‚悆悈悊悎悑悓悕悘æ‚悞悢悤悥您悰悱悷
+0x8fbea0: 悻悾惂惄惈惉惊惋惎æƒæƒ”惕惙惛æƒæƒžæƒ¢æƒ¥æƒ²æƒµæƒ¸æƒ¼æƒ½æ„‚愇愊愌æ„æ„‘æ„’
+0x8fbec0: 愔愖愗愙愜愞愢愪愫愰愱愵愶愷愹æ…慅慆慉慞慠慬慲慸慻慼慿憀æ†æ†ƒæ†„
+0x8fbee0: æ†æ†’憓憗憘憜æ†æ†Ÿæ† æ†¥æ†¨æ†ªæ†­æ†¸æ†¹æ†¼æ‡€æ‡æ‡‚懎æ‡æ‡•æ‡œæ‡æ‡žæ‡Ÿæ‡¡æ‡¢æ‡§æ‡©æ‡¥
+0x8fbfa0: 懬懭懯æˆæˆƒæˆ„戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌æ‰æ‰‘扒扔扖扚扜
+0x8fbfc0: 扭扯扳扺扽æŠæŠŽæŠæŠæŠ¦æŠ¨æŠ³æŠ¶æŠ·æŠºæŠ¾æŠ¿æ‹„拎拕拖拚拪拲拴拼拽挃挄挊挋
+0x8fbfe0: æŒæŒ“挖挘挩挪挭挵挶挹挼ææ‚æƒæ„æ†æŠæ‹æŽæ’æ“æ”æ˜æ›æ¥æ¦æ¬æ­æ±æ´æµ
+0x8fc0a0: æ¸æ¼æ½æ¿æŽ‚掄掇掊æŽæŽ”掕掙掚掞掤掦掭掮掯掽ææ…æˆæŽæ‘æ“æ”æ•æœæ 
+0x8fc0c0: æªæ¬æ²æ³æµæ¸æ¹æ‰æŠææ’æ”æ˜æžæ æ¢æ¤æ¥æ©æªæ¯æ°æµæ½æ¿æ‘‹æ‘æ‘‘æ‘’æ‘“æ‘”
+0x8fc0e0: 摛摜æ‘摟摠摡摣摭摳摴摻摽撅撇æ’æ’撑撘撙撛æ’撟撡撣撦撨撬撳撽撾撿
+0x8fc1a0: 擄擉擊擋擌擎æ“擑擕擗擤擥擩擪擭擰擵擷擻擿æ”攄攈攉攊æ”攓攔攖攙
+0x8fc1c0: 攞攟攢攦攩攮攱攺攼攽敃敇敉æ•æ•’敔敟敠敧敫敺敽æ–æ–…æ–Šæ–’æ–•æ–˜æ–æ– æ–£
+0x8fc1e0: 斮斲斳斴斿旂旈旉旎æ—旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉æ˜æ˜‘昒昕昖æ˜
+0x8fc2a0: 昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡
+0x8fc2c0: 晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌æšæšæš’暙暚暛暜暟暠暤暭暱暲暵暻暿
+0x8fc2e0: 曂曃曈曌曎æ›æ›”曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾æ…æ‡æˆæŒæ”æ•æ
+0x8fc3a0: æ¦æ¬æ®æ´æ¶æ»æžæž„枎æžæž‘枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉
+0x8fc3c0: 柗柙柜柡柦柰柲柶柷桒栔栙æ æ Ÿæ ¨æ §æ ¬æ ­æ ¯æ °æ ±æ ³æ »æ ¿æ¡„桅桊桌桕桗桘
+0x8fc3e0: 桫桮桯桰桱桲桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌æ£
+0x8fc4a0: æ£æ£‘棓棖棙棜æ£æ£¥æ£¨æ£ªæ£«æ£¬æ£­æ£°æ£±æ£µæ£¶æ£»æ£¼æ£½æ¤†æ¤‰æ¤Šæ¤æ¤‘椓椖椗椱椳
+0x8fc4c0: 椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀æ¦æ¦’榖榘榡榥榦榨榫
+0x8fc4e0: 榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀æ¨æ¨ƒæ¨æ¨‘樕樚æ¨æ¨ æ¨¤æ¨¨æ¨°æ¨²
+0x8fc5a0: 樴樷樻樾樿橅橆橉橊橎æ©æ©‘橒橕橖橛橤橧橪橱橳橾æªæªƒæª†æª‡æª‰æª‹æª‘檛
+0x8fc5c0: 檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌æ«æ«”æ«•æ«–æ«œæ«æ«¤æ«§æ«¬æ«°æ«±æ«²æ«¼æ«½æ¬‚欃
+0x8fc5e0: 欇欉æ¬æ¬æ¬‘欗欛欞欤欨欫欬欯欵欶欻欿歆歊æ­æ­’æ­–æ­˜æ­æ­ æ­§æ­«æ­®æ­°æ­µæ­½
+0x8fc6a0: 歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮
+0x8fc6c0: 毷毹毿氂氄氅氉æ°æ°Žæ°æ°’氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋æ±æ±æ±’汔汙
+0x8fc6e0: 汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆æ³æ³æ³æ³‘泒泔泖
+0x8fc7a0: 泚泜泠泧泩泫泬泮泲泴洄洇洊洎æ´æ´‘洓洚洦洧洨汧洮洯洱洹洼洿浗浞
+0x8fc7c0: 浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎æ·æ·–æ·›æ·æ·Ÿæ· 
+0x8fc7e0: 淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋æ¹æ¹‘湒湓湔湗湜æ¹æ¹ž
+0x8fc8a0: 湢湣湨湳湻湽æºæº“溙溠溧溭溮溱溳溻溿滀æ»æ»ƒæ»‡æ»ˆæ»Šæ»æ»Žæ»æ»«æ»­æ»®æ»¹
+0x8fc8c0: 滽漄漈漊漌æ¼æ¼–漘漚漛漦漩漪漯漰漳漶漻漼漭æ½æ½‘潒潓潗潙潚æ½æ½žæ½¡æ½¢
+0x8fc8e0: 潬潽潾澃澇澈澋澌æ¾æ¾æ¾’澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊
+0x8fc9a0: 濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇ç€ç€—瀠瀣瀯瀴瀷瀹瀼çƒç„çˆç‰çŠç‹ç”ç•
+0x8fc9c0: çžçŽç¤ç¥ç¬ç®çµç¶ç¾ç‚炅炆炔炕炖炗炘炛炤炫炰炱炴炷烊烑烓烔烕烖烘
+0x8fc9e0: 烤烺焃焄焅焆焇焋焌ç„焞焠焫焭焯焰焱焸ç…煅煆煇煊煋ç…煒煗煚煜煞煠
+0x8fcaa0: 煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀ç‡ç‡„燋燌燓燖燙燚燜燸燾爀
+0x8fcac0: 爈爉爓爗爚çˆçˆŸçˆ¤çˆ«çˆ¯çˆ´çˆ¸çˆ¹ç‰ç‰‚牃牅牎ç‰ç‰ç‰“牕牖牚牜牞牠牣牨牫牮
+0x8fcae0: 牱牷牸牻牼牿犄犉çŠçŠŽçŠ“犛犨犭犮犱犴犾ç‹ç‹‡ç‹‰ç‹Œç‹•ç‹–狘狟狥狳狴狺狻
+0x8fcba0: 狾猂猄猅猇猋çŒçŒ’猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽çƒççç’ç–ç˜ç
+0x8fcbc0: çŸç ç¦ç§ç©ç«ç¬ç®ç¯ç±ç·ç¹ç¼çŽ€çŽçŽƒçŽ…玆玎çŽçŽ“玕玗玘玜玞玟玠玢玥玦
+0x8fcbe0: 玫玭玵玷玹玼玽玿ç…ç†ç‰ç‹çŒçç’ç“ç–ç™çç¡ç£ç¦ç§ç©ç´çµç·ç¹çºç»ç½
+0x8fcca0: ç¿ç€çç„ç‡çŠç‘çšç›ç¤ç¦ç¨ç©çªç«ç¬ç­ç®ç¯ç°ç±ç¹ç‘€ç‘ƒç‘„瑆瑇瑋ç‘ç‘‘
+0x8fccc0: ç‘—ç‘瑢瑦瑧瑨瑫瑭瑮瑱瑲璀ç’璅璆璇璉ç’ç’璑璒璘璙璚璜璟璠璡璣璦璨
+0x8fcce0: 璪璫璮璯璱璲璵璹璻璿瓈瓉瓌ç“瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆
+0x8fcda0: 甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎ç•ç•’畗畞畟畡畯畱畹畺
+0x8fcdc0: 畼畽畾ç–ç–…ç–疒疓疕疙疜疢疤疴疺疿痀ç—痄痆痌痎ç—痗痜痟痠痡痤痧痬
+0x8fcde0: 痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌ç˜ç˜’瘓瘕瘖瘙瘛瘜ç˜ç˜žç˜£ç˜¥ç˜¦ç˜©ç˜­ç˜²ç˜³ç˜µç˜¸ç˜¹
+0x8fcea0: 瘺瘼癊癀ç™ç™ƒç™„癅癉癋癕癙癟癤癥癭癮癯癱癴çšçš…皌çšçš•çš›çšœçšçšŸçš 
+0x8fcec0: 皣皤皥皦皧皨皪皭皽ç›ç›…盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒
+0x8fcee0: 眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾ç‚ç…ç†çŠççŽçç’ç–ç—çœçžçŸç ç¢
+0x8fcfa0: ç¤ç§çªç¬ç°ç²ç³ç´çºç½çž€çž„瞌çžçž”瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑
+0x8fcfc0: 矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉ç ç Žç ‘ç ç ¡ç ¢ç £ç ­ç ®ç °ç µç ·ç¡ƒç¡„
+0x8fcfe0: 硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊ç¢ç¢”碘碡ç¢ç¢žç¢Ÿç¢¤ç¢¨ç¢¬ç¢­ç¢°ç¢±ç¢²ç¢³
+0x8fd0a0: 碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌ç¤
+0x8fd0c0: 礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋ç¥ç¥‘祔祘祛祜祧祩祫祲祹祻
+0x8fd0e0: 祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊ç§ç§”秖秚ç§ç§ž
+0x8fd1a0: 秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺
+0x8fd1c0: 穅穇穈穌穕穖穙穜ç©ç©Ÿç© ç©¥ç©§ç©ªç©­ç©µç©¸ç©¾çª€çª‚窅窆窊窋çªçª‘窔窞窠窣窬
+0x8fd1e0: 窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰
+0x8fd2a0: 笱笴笽笿筀ç­ç­‡ç­Žç­•ç­ ç­¤ç­¦ç­©ç­ªç­­ç­¯ç­²ç­³ç­·ç®„箉箎ç®ç®‘箖箛箞箠箥箬
+0x8fd2c0: 箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾ç°ç°‚ç°ƒ
+0x8fd2e0: 簆簉簋簌簎ç°ç°™ç°›ç° ç°¥ç°¦ç°¨ç°¬ç°±ç°³ç°´ç°¶ç°¹ç°ºç±†ç±Šç±•ç±‘籒籓籙籚籛籜ç±ç±ž
+0x8fd3a0: 籡籣籧籩籭籮籰籲籹籼籽粆粇ç²ç²”粞粠粦粰粶粷粺粻粼粿糄糇糈糉ç³
+0x8fd3c0: 糓糔糕糗糙糚ç³ç³¦ç³©ç³«ç³µç´ƒç´‡ç´ˆç´‰ç´ç´‘ç´’ç´“ç´–ç´ç´žç´£ç´¦ç´ªç´­ç´±ç´¼ç´½ç´¾çµ€
+0x8fd3e0: 絇絈çµçµ‘絓絗絙絚絜çµçµ¥çµ§çµªçµ°çµ¸çµºçµ»çµ¿ç¶ç¶‚綃綅綆綈綋綌ç¶ç¶‘綖綗ç¶
+0x8fd4a0: 綞綦綧綪綳綶綷綹緂緃緄緅緆緌ç·ç·Žç·—緙縀緢緥緦緪緫緭緱緵緶緹緺
+0x8fd4c0: ç¸ç¸‘縕縗縜ç¸ç¸ ç¸§ç¸¨ç¸¬ç¸­ç¸¯ç¸³ç¸¶ç¸¿ç¹„繅繇繎ç¹ç¹’繘繟繡繢繥繫繮繯繳繸
+0x8fd4e0: çºçº†çº‡çºŠçºçº‘纕纘纚çºçºžç¼¼ç¼»ç¼½ç¼¾ç¼¿ç½ƒç½„罇ç½ç½’罓罛罜ç½ç½¡ç½£ç½¤ç½¥ç½¦ç½­
+0x8fd5a0: 罱罽罾罿羀羋ç¾ç¾ç¾ç¾‘羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎ç¿ç¿›ç¿Ÿç¿£ç¿¥
+0x8fd5c0: 翬翮翯翲翺翽翾翿耇耈耊è€è€Žè€è€‘耓耔耖è€è€žè€Ÿè€ è€¤è€¦è€¬è€®è€°è€´è€µè€·è€¹
+0x8fd5e0: 耼耾è€è„è è¤è¦è­è±èµè‚肈肎肜肞肦肧肫肸肹胈èƒèƒèƒ’胔胕胗胘胠胭胮
+0x8fd6a0: 胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡
+0x8fd6c0: 腨腩腭腯腷è†è†è†„膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎è‡è‡•è‡—臛è‡
+0x8fd6e0: 臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃èˆèˆ“舔舙舚èˆèˆ¡èˆ¢èˆ¨èˆ²èˆ´èˆºè‰ƒè‰„艅艆
+0x8fd7a0: 艋艎è‰è‰‘艖艜艠艣艧艭艴艻艽艿芀èŠèŠƒèŠ„芇芉芊芎芑芔芖芘芚芛芠芡
+0x8fd7c0: 芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆è‹è‹•è‹šè‹ è‹¢è‹¤è‹¨è‹ªè‹­è‹¯è‹¶è‹·è‹½è‹¾èŒ€èŒ
+0x8fd7e0: 茈茊茋è”茛èŒèŒžèŒŸèŒ¡èŒ¢èŒ¬èŒ­èŒ®èŒ°èŒ³èŒ·èŒºèŒ¼èŒ½è‚èƒè„è‡èèŽè‘è•è–è—è°è¸
+0x8fd8a0: è½è¿èŽ€èŽ‚莄莆èŽèŽ’莔莕莘莙莛莜èŽèŽ¦èŽ§èŽ©èŽ¬èŽ¾èŽ¿è€è‡è‰èèè‘è”èè“
+0x8fd8c0: èªè¶è¸è¹è¼èè†èŠèè‘è•è™èŽ­è¯è¹è‘…葇葈葊è‘è‘葑葒葖葘葙葚葜葠葤葥
+0x8fd8e0: 葪葰葳葴葶葸葼葽è’蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌è“è““
+0x8fd9a0: 蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎è”蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴
+0x8fd9c0: 蔿蕆è•è•è•‘蕒蕓蕖蕙蕜è•è•žè•Ÿè• è•¡è•¢è•¤è•«è•¯è•¹è•ºè•»è•½è•¿è–薅薆薉薋薌è–
+0x8fd9e0: è–˜è–薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼
+0x8fdaa0: 藿蘀蘄蘅è˜è˜Žè˜è˜‘蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙
+0x8fdac0: 虠虡虢虣虤虩虬虯虵虶虷虺èšèš‘蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿
+0x8fdae0: è›è›ƒè›…蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎èœèœèœ“蜔蜙蜞蜟蜡蜣
+0x8fdba0: 蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾è€èƒè…èè˜èè¡è¤è¥è¯è±è²è»èžƒèž„螅螆螇螈螉
+0x8fdbc0: 螌èžèž“螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿èŸèŸˆèŸ‰èŸŠèŸŽèŸ•èŸ–蟙蟚蟜蟟蟢蟣
+0x8fdbe0: 蟪蟫蟭蟱蟳蟸蟺蟿è è ƒè †è ‰è Šè ‹è è ™è ’蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵
+0x8fdca0: 蠺蠼è¡è¡ƒè¡…衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠
+0x8fdcc0: 袪袺袽袾裀裊裋裌è£è£Žè£‘裒裓裛裞裧裯裰裱裵裷è¤è¤†è¤è¤Žè¤è¤•è¤–褘褙褚
+0x8fdce0: 褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉è¥è¥’襗襚襛襜襡襢襣襫襮襰襳襵襺
+0x8fdda0: 襻襼襽覉è¦è¦è¦”覕覛覜覟覠覥覰覴覵覶覷覼觔觕觖觗觘觥觩觫觭觱觳
+0x8fddc0: 觹觽觿訄訅訇è¨è¨‘訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉è©è©Žè©“
+0x8fdde0: 詗詘詜è©è©¡è©¥è©§è©µè©¶è©·è©¹è©ºè©»è©¾è©¿èª€èªƒèª†èª‹èªèªèª’誖誗誙誟誧誩誮誯誳
+0x8fdea0: 誶誷誻誾諃諆諈諉諊諑諓諔諕諗è«è«Ÿè«¬è«°è«´è«µè«¶è«¼è«¿è¬…謆謋謑謜謞謟
+0x8fdec0: 謭謰謷謼譂譃譄譅譆譈譒譓譔譙è­è­žè­£è­­è­¶è­¸è­¹è­¼è­¾è®è®„讅讋è®è®è®”讕
+0x8fdee0: 讞讟谸谹谽谾豅豇豉豋è±è±‘豓豔豗豘豛è±è±™è±£è±¤è±¦è±¨è±©è±­è±³è±µè±¶è±»è±¾è²†
+0x8fdfa0: 貇貋è²è²’貓貙貛貜貤貹貺賅賆賉賋è³è³–賕賙è³è³¡è³¨è³¬è³¯è³°è³²è³µè³·è³¸è³¾
+0x8fdfc0: è´è´ƒè´‰è´’贗贛赥赩赬赮赿趂趄趈è¶è¶è¶‘趕趞趟趠趦趫趬趯趲趵趷趹趻跀
+0x8fdfe0: 跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽è¸è¸„踅踆踋踑踔踖踠踡踢
+0x8fe0a0: 踣踦踧踱踳踶踷踸踹踽蹀è¹è¹‹è¹è¹Žè¹è¹”蹛蹜è¹è¹žè¹¡è¹¢è¹©è¹¬è¹­è¹¯è¹°è¹±è¹¹
+0x8fe0c0: 蹻躂躃躉èºèº’躕躚躛èºèºžèº¢èº§èº©èº­èº®èº³èºµèººèº»è»€è»è»ƒè»„軇è»è»‘軔軜軨軮
+0x8fe0e0: 軱軷軹軺軭輀輂輇輈è¼è¼è¼–輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀è½
+0x8fe1a0: 轃轇è½è½‘轒轓轔轕轘è½è½žè½¥è¾è¾ è¾¡è¾¤è¾¥è¾¦è¾µè¾¶è¾¸è¾¾è¿€è¿è¿†è¿Šè¿‹è¿è¿è¿’
+0x8fe1c0: 迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿éƒé„éŒé›
+0x8fe1e0: é¢é¦é§é¬é°é´é¹é‚…邈邋邌邎é‚邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃
+0x8fe2a0: 郄郅郇郈郕郗郘郙郜éƒéƒŸéƒ¥éƒ’郶郫郯郰郴郾郿鄀鄄鄅鄆鄈é„é„鄔鄖鄗
+0x8fe2c0: 鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈é…酓酗酙酚酛酡酤酧
+0x8fe2e0: 酴酹酺酻é†é†ƒé†…醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿
+0x8fe3a0: 釂釃釅釓釔釗釙釚釞釤釥釩釪釬釭釮釯釰釱釷釹釻釽鈀éˆéˆ„鈅鈆鈇鈉
+0x8fe3c0: 鈌éˆéˆ’鈓鈖鈘鈜éˆéˆ£éˆ¤éˆ¥éˆ¦éˆ¨éˆ®éˆ¯éˆ°éˆ³éˆµéˆ¶éˆ¸éˆ¹éˆºéˆ¼éˆ¾é‰€é‰‚鉃鉆鉇鉊é‰
+0x8fe3e0: é‰é‰‘鉘鉙鉜é‰é‰ é‰¡é‰¥é‰§é‰¨é‰©é‰®é‰¯é‰°é‰µé‰¶é‰·é‰¸é‰¹é‰»é‰¼é‰½é‰¿éŠˆéŠ‰éŠŠéŠéŠŽéŠ’銗
+0x8fe4a0: 銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿鋀é‹é‹‚鋃鋅鋆鋇鋈鋋鋌é‹é‹Žé‹
+0x8fe4c0: 鋕鋗鋘鋙鋜é‹é‹Ÿé‹ é‹¡é‹£é‹¥é‹§é‹¨é‹¬é‹®é‹°é‹¹é‹»é‹¿éŒ€éŒ‚錈éŒéŒ‘錔錕錜éŒéŒžéŒŸéŒ¡
+0x8fe4e0: 錥錧錩錪錳錴錶錷é‡éˆé‰éé‘é’é•é—é˜éšéžé¤é¥é§é©éªé­é¯é°é±é³é´é¶
+0x8fe5a0: éºé½é¿éŽ€éŽéŽ‚鎈鎊鎋éŽéŽéŽ’鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩éé„é…
+0x8fe5c0: é‡é‰éŠé‹éŒéé“é™éœéžéŸé¢é¦é§é¹é·é¸éºé»é½éé‚é„éˆé‰ééŽéé•é–é—
+0x8fe5e0: é®é¯é±é²é³é´é»é¿é½é‘ƒé‘…鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹
+0x8fe6a0: 镾閄閈閌é–é–Žé–閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋é—闑闒闓闙闚é—
+0x8fe6c0: 闟闠闤闦é˜é˜žé˜¢é˜¤é˜¥é˜¦é˜¬é˜±é˜³é˜·é˜¸é˜¹é˜ºé˜¼é˜½é™é™’陔陖陗陘陡陮陴陻陼陾
+0x8fe6e0: éšéš‚隃隄隉隑隖隚éšéšŸéš¤éš¥éš¦éš©éš®éš¯éš³éšºé›Šé›’嶲雘雚é›é›žé›Ÿé›©é›¯é›±é›ºéœ‚
+0x8fe7a0: 霃霅霉霚霛éœéœ¡éœ¢éœ£éœ¨éœ±éœ³ééƒéŠéŽéé•é—é˜éšé›é£é§éªé®é³é¶é·é¸
+0x8fe7c0: é½é¿éž€éž‰éž•éž–鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿éŸéŸ„韅韇韉韊韌
+0x8fe7e0: 韎éŸéŸ‘韔韗韘韙éŸéŸžéŸ éŸ›éŸ¡éŸ¤éŸ¯éŸ±éŸ´éŸ·éŸ¸éŸºé ‡é Šé ™é é Žé ”頖頜頞頠頣頦
+0x8fe8a0: 頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴
+0x8fe8c0: 颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫
+0x8fe8e0: 餲餳餴餵餹餺餻餼饀é¥é¥†é¥‡é¥ˆé¥é¥Žé¥”饘饙饛饜饞饟饠馛é¦é¦Ÿé¦¦é¦°é¦±é¦²é¦µ
+0x8fe9a0: 馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌é¨é¨‘騖
+0x8fe9c0: 騠騢騣騤騧騭騮騳騵騶騸驇é©é©„驊驋驌驎驑驔驖é©éªªéª¬éª®éª¯éª²éª´éªµéª¶éª¹
+0x8fe9e0: 骾骿é«é«ƒé«†é«ˆé«Žé«é«’髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿鬀é¬é¬‚鬃
+0x8feaa0: 鬄鬅鬈鬉鬋鬌é¬é¬Žé¬é¬’鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖
+0x8feac0: 魛魞魡魣魥魦魨魪魫魬魭魮魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋é®é®é®é®”鮚
+0x8feae0: 鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿é¯é¯‡é¯ˆé¯Žé¯é¯—鯘é¯é¯Ÿé¯¥é¯§é¯ªé¯«é¯¯é¯³é¯·é¯¸
+0x8feba0: 鯹鯺鯽鯿鰀鰂鰋é°é°‘鰖鰘鰙鰚鰜鰞鰢鰣鰦鰧鰨鰩鰪鰱鰵鰶鰷鰽é±é±ƒé±„
+0x8febc0: 鱉鱊鱎é±é±é±“鱔鱖鱘鱛é±é±žé±Ÿé±£é±©é±ªé±œé±«é±¨é±®é±°é±²é±µé±·é±»é³¦é³²é³·é³¹é´‹é´‚
+0x8febe0: 鴗鴘鴜é´é´žé´¯é´°é´²é´³é´´é´ºé´¼éµ…鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻
+0x8feca0: 鵼鵾鶃鶄鶆鶊é¶é¶Žé¶’鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖
+0x8fecc0: 鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎é¸é¸‘鸒鸕鸖鸙鸜é¸é¹ºé¹»é¹¼éº€éº‚麃
+0x8fece0: 麅麇麎éºéº–麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵
+0x8feda0: 黸黿鼂鼃鼉é¼é¼é¼‘鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿
+0x8fedc0: 齃齄齅齆齇齓齕齖齗齘齚é½é½žé½¨é½©é½­é½®é½¯é½°é½±é½³é½µé½ºé½½é¾é¾é¾‘龒龔龖龗
+0x8fede0: 龡龢龣龥
+0x8feea0:
+0x8feec0:
+0x8feee0:
+0x8fefa0:
+0x8fefc0:
+0x8fefe0:
+0x8ff0a0:
+0x8ff0c0:
+0x8ff0e0:
+0x8ff1a0:
+0x8ff1c0:
+0x8ff1e0:
+0x8ff2a0:
+0x8ff2c0:
+0x8ff2e0:
+0x8ff3a0:
+0x8ff3c0:
+0x8ff3e0:
+0x8ff4a0:
+0x8ff4c0:
+0x8ff4e0:
+0x8ff5a0:
+0x8ff5c0:
+0x8ff5e0:
+0x8ff6a0:
+0x8ff6c0:
+0x8ff6e0:
+0x8ff7a0:
+0x8ff7c0:
+0x8ff7e0:
+0x8ff8a0:
+0x8ff8c0:
+0x8ff8e0:
+0x8ff9a0:
+0x8ff9c0:
+0x8ff9e0:
+0x8ffaa0:
+0x8ffac0:
+0x8ffae0:
+0x8ffba0:
+0x8ffbc0:
+0x8ffbe0:
+0x8ffca0:
+0x8ffcc0:
+0x8ffce0:
+0x8ffda0:
+0x8ffdc0:
+0x8ffde0:
+0x8ffea0:
+0x8ffec0:
+0x8ffee0:
+0x8fffa0:
+0x8fffc0:
+0x8fffe0:
diff --git a/ext/Fcntl/Makefile.PL b/ext/Fcntl/Makefile.PL
index d9551a913e..23465b9792 100644
--- a/ext/Fcntl/Makefile.PL
+++ b/ext/Fcntl/Makefile.PL
@@ -5,6 +5,7 @@ WriteMakefile(
MAN3PODS => {}, # Pods will be built by installman.
XSPROTOARG => '-noprototypes', # XXX remove later?
VERSION_FROM => 'Fcntl.pm',
+ realclean => {FILES=> 'const-c.inc const-xs.inc'},
);
my @names = (qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FD_CLOEXEC FEXCL FLARGEFILE
diff --git a/ext/File/Glob/Makefile.PL b/ext/File/Glob/Makefile.PL
index 3cf83f1b12..0d4267a25b 100644
--- a/ext/File/Glob/Makefile.PL
+++ b/ext/File/Glob/Makefile.PL
@@ -5,6 +5,7 @@ WriteMakefile(
VERSION_FROM => 'Glob.pm',
MAN3PODS => {}, # Pods will be built by installman.
OBJECT => 'bsd_glob$(OBJ_EXT) Glob$(OBJ_EXT)',
+ realclean => {FILES=> 'const-c.inc const-xs.inc'},
## uncomment for glob debugging (will cause make test to fail)
# DEFINE => '-DGLOB_DEBUG',
diff --git a/ext/GDBM_File/Makefile.PL b/ext/GDBM_File/Makefile.PL
index abdceecd5d..c0824c760a 100644
--- a/ext/GDBM_File/Makefile.PL
+++ b/ext/GDBM_File/Makefile.PL
@@ -6,6 +6,7 @@ WriteMakefile(
MAN3PODS => {}, # Pods will be built by installman.
XSPROTOARG => '-noprototypes', # XXX remove later?
VERSION_FROM => 'GDBM_File.pm',
+ realclean => {FILES=> 'const-c.inc const-xs.inc'},
);
WriteConstants(
NAME => 'GDBM_File',
diff --git a/ext/I18N/Langinfo/Makefile.PL b/ext/I18N/Langinfo/Makefile.PL
index 730a45fecc..b307aca2e0 100644
--- a/ext/I18N/Langinfo/Makefile.PL
+++ b/ext/I18N/Langinfo/Makefile.PL
@@ -13,6 +13,7 @@ WriteMakefile(
# Insert -I. if you add *.h files later:
'INC' => '', # e.g., '-I/usr/include/other'
'MAN3PODS' => {}, # Pods will be built by installman
+ realclean => {FILES=> 'const-c.inc const-xs.inc'},
# Un-comment this if you add C files to link with later:
# 'OBJECT' => '$(O_FILES)', # link all the C files too
);
diff --git a/ext/I18N/Langinfo/fallback/const-c.inc b/ext/I18N/Langinfo/fallback/const-c.inc
new file mode 100644
index 0000000000..ca073b7701
--- /dev/null
+++ b/ext/I18N/Langinfo/fallback/const-c.inc
@@ -0,0 +1,780 @@
+#define PERL_constant_NOTFOUND 1
+#define PERL_constant_NOTDEF 2
+#define PERL_constant_ISIV 3
+#define PERL_constant_ISNO 4
+#define PERL_constant_ISNV 5
+#define PERL_constant_ISPV 6
+#define PERL_constant_ISPVN 7
+#define PERL_constant_ISSV 8
+#define PERL_constant_ISUNDEF 9
+#define PERL_constant_ISUV 10
+#define PERL_constant_ISYES 11
+
+#ifndef NVTYPE
+typedef double NV; /* 5.6 and later define NVTYPE, and typedef NV to it. */
+#endif
+#ifndef aTHX_
+#define aTHX_ /* 5.6 or later define this for threading support. */
+#endif
+#ifndef pTHX_
+#define pTHX_ /* 5.6 or later define this for threading support. */
+#endif
+
+static int
+constant_5 (pTHX_ const char *name, IV *iv_return) {
+ /* When generated this function returned values for the list of names given
+ here. However, subsequent manual editing may have added or removed some.
+ DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7 D_FMT MON_1 MON_2 MON_3 MON_4
+ MON_5 MON_6 MON_7 MON_8 MON_9 NOSTR T_FMT */
+ /* Offset 4 gives the best switch position. */
+ switch (name[4]) {
+ case '1':
+ if (memEQ(name, "DAY_1", 5)) {
+ /* ^ */
+#if defined(DAY_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = DAY_1;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "MON_1", 5)) {
+ /* ^ */
+#if defined(MON_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = MON_1;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '2':
+ if (memEQ(name, "DAY_2", 5)) {
+ /* ^ */
+#if defined(DAY_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = DAY_2;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "MON_2", 5)) {
+ /* ^ */
+#if defined(MON_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = MON_2;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '3':
+ if (memEQ(name, "DAY_3", 5)) {
+ /* ^ */
+#if defined(DAY_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = DAY_3;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "MON_3", 5)) {
+ /* ^ */
+#if defined(MON_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = MON_3;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '4':
+ if (memEQ(name, "DAY_4", 5)) {
+ /* ^ */
+#if defined(DAY_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = DAY_4;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "MON_4", 5)) {
+ /* ^ */
+#if defined(MON_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = MON_4;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '5':
+ if (memEQ(name, "DAY_5", 5)) {
+ /* ^ */
+#if defined(DAY_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = DAY_5;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "MON_5", 5)) {
+ /* ^ */
+#if defined(MON_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = MON_5;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '6':
+ if (memEQ(name, "DAY_6", 5)) {
+ /* ^ */
+#if defined(DAY_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = DAY_6;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "MON_6", 5)) {
+ /* ^ */
+#if defined(MON_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = MON_6;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '7':
+ if (memEQ(name, "DAY_7", 5)) {
+ /* ^ */
+#if defined(DAY_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = DAY_7;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "MON_7", 5)) {
+ /* ^ */
+#if defined(MON_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = MON_7;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '8':
+ if (memEQ(name, "MON_8", 5)) {
+ /* ^ */
+#if defined(MON_8) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = MON_8;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '9':
+ if (memEQ(name, "MON_9", 5)) {
+ /* ^ */
+#if defined(MON_9) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = MON_9;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'R':
+ if (memEQ(name, "NOSTR", 5)) {
+ /* ^ */
+#if defined(NOSTR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = NOSTR;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'T':
+ if (memEQ(name, "D_FMT", 5)) {
+ /* ^ */
+#if defined(D_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = D_FMT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "T_FMT", 5)) {
+ /* ^ */
+#if defined(T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = T_FMT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ }
+ return PERL_constant_NOTFOUND;
+}
+
+static int
+constant_6 (pTHX_ const char *name, IV *iv_return) {
+ /* When generated this function returned values for the list of names given
+ here. However, subsequent manual editing may have added or removed some.
+ AM_STR MON_10 MON_11 MON_12 NOEXPR PM_STR YESSTR */
+ /* Offset 0 gives the best switch position. */
+ switch (name[0]) {
+ case 'A':
+ if (memEQ(name, "AM_STR", 6)) {
+ /* ^ */
+#if defined(AM_STR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = AM_STR;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'M':
+ if (memEQ(name, "MON_10", 6)) {
+ /* ^ */
+#if defined(MON_10) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = MON_10;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "MON_11", 6)) {
+ /* ^ */
+#if defined(MON_11) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = MON_11;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "MON_12", 6)) {
+ /* ^ */
+#if defined(MON_12) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = MON_12;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'N':
+ if (memEQ(name, "NOEXPR", 6)) {
+ /* ^ */
+#if defined(NOEXPR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = NOEXPR;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'P':
+ if (memEQ(name, "PM_STR", 6)) {
+ /* ^ */
+#if defined(PM_STR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = PM_STR;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'Y':
+ if (memEQ(name, "YESSTR", 6)) {
+ /* ^ */
+#if defined(YESSTR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = YESSTR;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ }
+ return PERL_constant_NOTFOUND;
+}
+
+static int
+constant_7 (pTHX_ const char *name, IV *iv_return) {
+ /* When generated this function returned values for the list of names given
+ here. However, subsequent manual editing may have added or removed some.
+ ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 ABDAY_6 ABDAY_7 ABMON_1 ABMON_2
+ ABMON_3 ABMON_4 ABMON_5 ABMON_6 ABMON_7 ABMON_8 ABMON_9 CODESET D_T_FMT
+ THOUSEP YESEXPR */
+ /* Offset 6 gives the best switch position. */
+ switch (name[6]) {
+ case '1':
+ if (memEQ(name, "ABDAY_1", 7)) {
+ /* ^ */
+#if defined(ABDAY_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABDAY_1;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "ABMON_1", 7)) {
+ /* ^ */
+#if defined(ABMON_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABMON_1;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '2':
+ if (memEQ(name, "ABDAY_2", 7)) {
+ /* ^ */
+#if defined(ABDAY_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABDAY_2;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "ABMON_2", 7)) {
+ /* ^ */
+#if defined(ABMON_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABMON_2;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '3':
+ if (memEQ(name, "ABDAY_3", 7)) {
+ /* ^ */
+#if defined(ABDAY_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABDAY_3;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "ABMON_3", 7)) {
+ /* ^ */
+#if defined(ABMON_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABMON_3;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '4':
+ if (memEQ(name, "ABDAY_4", 7)) {
+ /* ^ */
+#if defined(ABDAY_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABDAY_4;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "ABMON_4", 7)) {
+ /* ^ */
+#if defined(ABMON_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABMON_4;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '5':
+ if (memEQ(name, "ABDAY_5", 7)) {
+ /* ^ */
+#if defined(ABDAY_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABDAY_5;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "ABMON_5", 7)) {
+ /* ^ */
+#if defined(ABMON_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABMON_5;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '6':
+ if (memEQ(name, "ABDAY_6", 7)) {
+ /* ^ */
+#if defined(ABDAY_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABDAY_6;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "ABMON_6", 7)) {
+ /* ^ */
+#if defined(ABMON_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABMON_6;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '7':
+ if (memEQ(name, "ABDAY_7", 7)) {
+ /* ^ */
+#if defined(ABDAY_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABDAY_7;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "ABMON_7", 7)) {
+ /* ^ */
+#if defined(ABMON_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABMON_7;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '8':
+ if (memEQ(name, "ABMON_8", 7)) {
+ /* ^ */
+#if defined(ABMON_8) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABMON_8;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '9':
+ if (memEQ(name, "ABMON_9", 7)) {
+ /* ^ */
+#if defined(ABMON_9) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABMON_9;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'P':
+ if (memEQ(name, "THOUSEP", 7)) {
+ /* ^ */
+#if defined(THOUSEP) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM) && defined(__SVR4_I386_ABI_L1__))
+ *iv_return = THOUSEP;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'R':
+ if (memEQ(name, "YESEXPR", 7)) {
+ /* ^ */
+#if defined(YESEXPR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = YESEXPR;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'T':
+ if (memEQ(name, "CODESET", 7)) {
+ /* ^ */
+#ifdef CODESET
+ *iv_return = CODESET;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "D_T_FMT", 7)) {
+ /* ^ */
+#if defined(D_T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = D_T_FMT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ }
+ return PERL_constant_NOTFOUND;
+}
+
+static int
+constant_8 (pTHX_ const char *name, IV *iv_return) {
+ /* When generated this function returned values for the list of names given
+ here. However, subsequent manual editing may have added or removed some.
+ ABMON_10 ABMON_11 ABMON_12 CRNCYSTR */
+ /* Offset 7 gives the best switch position. */
+ switch (name[7]) {
+ case '0':
+ if (memEQ(name, "ABMON_10", 8)) {
+ /* ^ */
+#if defined(ABMON_10) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABMON_10;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '1':
+ if (memEQ(name, "ABMON_11", 8)) {
+ /* ^ */
+#if defined(ABMON_11) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABMON_11;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case '2':
+ if (memEQ(name, "ABMON_12", 8)) {
+ /* ^ */
+#if defined(ABMON_12) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ABMON_12;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'R':
+ if (memEQ(name, "CRNCYSTR", 8)) {
+ /* ^ */
+#if defined(CRNCYSTR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM) && defined(__SVR4_I386_ABI_L1__))
+ *iv_return = CRNCYSTR;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ }
+ return PERL_constant_NOTFOUND;
+}
+
+static int
+constant_9 (pTHX_ const char *name, IV *iv_return) {
+ /* When generated this function returned values for the list of names given
+ here. However, subsequent manual editing may have added or removed some.
+ ERA_D_FMT ERA_T_FMT RADIXCHAR */
+ /* Offset 4 gives the best switch position. */
+ switch (name[4]) {
+ case 'D':
+ if (memEQ(name, "ERA_D_FMT", 9)) {
+ /* ^ */
+#if defined(ERA_D_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ERA_D_FMT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'T':
+ if (memEQ(name, "ERA_T_FMT", 9)) {
+ /* ^ */
+#if defined(ERA_T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ERA_T_FMT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'X':
+ if (memEQ(name, "RADIXCHAR", 9)) {
+ /* ^ */
+#if defined(RADIXCHAR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM) && defined(__SVR4_I386_ABI_L1__))
+ *iv_return = RADIXCHAR;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ }
+ return PERL_constant_NOTFOUND;
+}
+
+static int
+constant (pTHX_ const char *name, STRLEN len, IV *iv_return) {
+ /* Initially switch on the length of the name. */
+ /* When generated this function returned values for the list of names given
+ in this section of perl code. Rather than manually editing these functions
+ to add or remove constants, which would result in this comment and section
+ of code becoming inaccurate, we recommend that you edit this section of
+ code, and use it to regenerate a new set of constant functions which you
+ then use to replace the originals.
+
+ Regenerate these constant functions by feeding this entire source file to
+ perl -x
+
+#!/mnt/six/blead/15141/miniperl -w
+use ExtUtils::Constant qw (constant_types C_constant XS_constant);
+
+my $types = {map {($_, 1)} qw(IV)};
+my @names = (qw(CODESET),
+ {name=>"ABDAY_1", type=>"IV", macro=>["#if defined(ABDAY_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABDAY_2", type=>"IV", macro=>["#if defined(ABDAY_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABDAY_3", type=>"IV", macro=>["#if defined(ABDAY_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABDAY_4", type=>"IV", macro=>["#if defined(ABDAY_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABDAY_5", type=>"IV", macro=>["#if defined(ABDAY_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABDAY_6", type=>"IV", macro=>["#if defined(ABDAY_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABDAY_7", type=>"IV", macro=>["#if defined(ABDAY_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABMON_1", type=>"IV", macro=>["#if defined(ABMON_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABMON_10", type=>"IV", macro=>["#if defined(ABMON_10) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABMON_11", type=>"IV", macro=>["#if defined(ABMON_11) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABMON_12", type=>"IV", macro=>["#if defined(ABMON_12) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABMON_2", type=>"IV", macro=>["#if defined(ABMON_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABMON_3", type=>"IV", macro=>["#if defined(ABMON_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABMON_4", type=>"IV", macro=>["#if defined(ABMON_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABMON_5", type=>"IV", macro=>["#if defined(ABMON_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABMON_6", type=>"IV", macro=>["#if defined(ABMON_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABMON_7", type=>"IV", macro=>["#if defined(ABMON_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABMON_8", type=>"IV", macro=>["#if defined(ABMON_8) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ABMON_9", type=>"IV", macro=>["#if defined(ABMON_9) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ALT_DIGITS", type=>"IV", macro=>["#if defined(ALT_DIGITS) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"AM_STR", type=>"IV", macro=>["#if defined(AM_STR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"CRNCYSTR", type=>"IV", macro=>["#if defined(CRNCYSTR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM) && defined(__SVR4_I386_ABI_L1__))\n", "#endif\n"]},
+ {name=>"DAY_1", type=>"IV", macro=>["#if defined(DAY_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"DAY_2", type=>"IV", macro=>["#if defined(DAY_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"DAY_3", type=>"IV", macro=>["#if defined(DAY_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"DAY_4", type=>"IV", macro=>["#if defined(DAY_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"DAY_5", type=>"IV", macro=>["#if defined(DAY_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"DAY_6", type=>"IV", macro=>["#if defined(DAY_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"DAY_7", type=>"IV", macro=>["#if defined(DAY_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"D_FMT", type=>"IV", macro=>["#if defined(D_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"D_T_FMT", type=>"IV", macro=>["#if defined(D_T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ERA", type=>"IV", macro=>["#if defined(ERA) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ERA_D_FMT", type=>"IV", macro=>["#if defined(ERA_D_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ERA_D_T_FMT", type=>"IV", macro=>["#if defined(ERA_D_T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"ERA_T_FMT", type=>"IV", macro=>["#if defined(ERA_T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"MON_1", type=>"IV", macro=>["#if defined(MON_1) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"MON_10", type=>"IV", macro=>["#if defined(MON_10) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"MON_11", type=>"IV", macro=>["#if defined(MON_11) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"MON_12", type=>"IV", macro=>["#if defined(MON_12) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"MON_2", type=>"IV", macro=>["#if defined(MON_2) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"MON_3", type=>"IV", macro=>["#if defined(MON_3) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"MON_4", type=>"IV", macro=>["#if defined(MON_4) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"MON_5", type=>"IV", macro=>["#if defined(MON_5) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"MON_6", type=>"IV", macro=>["#if defined(MON_6) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"MON_7", type=>"IV", macro=>["#if defined(MON_7) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"MON_8", type=>"IV", macro=>["#if defined(MON_8) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"MON_9", type=>"IV", macro=>["#if defined(MON_9) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"NOEXPR", type=>"IV", macro=>["#if defined(NOEXPR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"NOSTR", type=>"IV", macro=>["#if defined(NOSTR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"PM_STR", type=>"IV", macro=>["#if defined(PM_STR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"RADIXCHAR", type=>"IV", macro=>["#if defined(RADIXCHAR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM) && defined(__SVR4_I386_ABI_L1__))\n", "#endif\n"]},
+ {name=>"THOUSEP", type=>"IV", macro=>["#if defined(THOUSEP) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM) && defined(__SVR4_I386_ABI_L1__))\n", "#endif\n"]},
+ {name=>"T_FMT", type=>"IV", macro=>["#if defined(T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"T_FMT_AMPM", type=>"IV", macro=>["#if defined(T_FMT_AMPM) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"YESEXPR", type=>"IV", macro=>["#if defined(YESEXPR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]},
+ {name=>"YESSTR", type=>"IV", macro=>["#if defined(YESSTR) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))\n", "#endif\n"]});
+
+print constant_types(); # macro defs
+foreach (C_constant ("I18N::Langinfo", 'constant', 'IV', $types, undef, 3, @names) ) {
+ print $_, "\n"; # C constant subs
+}
+print "#### XS Section:\n";
+print XS_constant ("I18N::Langinfo", $types);
+__END__
+ */
+
+ switch (len) {
+ case 3:
+ if (memEQ(name, "ERA", 3)) {
+#if defined(ERA) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ERA;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 5:
+ return constant_5 (aTHX_ name, iv_return);
+ break;
+ case 6:
+ return constant_6 (aTHX_ name, iv_return);
+ break;
+ case 7:
+ return constant_7 (aTHX_ name, iv_return);
+ break;
+ case 8:
+ return constant_8 (aTHX_ name, iv_return);
+ break;
+ case 9:
+ return constant_9 (aTHX_ name, iv_return);
+ break;
+ case 10:
+ /* Names all of length 10. */
+ /* ALT_DIGITS T_FMT_AMPM */
+ /* Offset 7 gives the best switch position. */
+ switch (name[7]) {
+ case 'I':
+ if (memEQ(name, "ALT_DIGITS", 10)) {
+ /* ^ */
+#if defined(ALT_DIGITS) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ALT_DIGITS;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'M':
+ if (memEQ(name, "T_FMT_AMPM", 10)) {
+ /* ^ */
+#if defined(T_FMT_AMPM) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = T_FMT_AMPM;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ }
+ break;
+ case 11:
+ if (memEQ(name, "ERA_D_T_FMT", 11)) {
+#if defined(ERA_D_T_FMT) || (defined(__GNU_LIBRARY__) && defined(_NL_ITEM))
+ *iv_return = ERA_D_T_FMT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ }
+ return PERL_constant_NOTFOUND;
+}
+
diff --git a/ext/I18N/Langinfo/fallback.xs b/ext/I18N/Langinfo/fallback/const-xs.inc
index 16ae6e803d..16ae6e803d 100644
--- a/ext/I18N/Langinfo/fallback.xs
+++ b/ext/I18N/Langinfo/fallback/const-xs.inc
diff --git a/ext/POSIX/Makefile.PL b/ext/POSIX/Makefile.PL
index 04ba7459ba..ae00b04735 100644
--- a/ext/POSIX/Makefile.PL
+++ b/ext/POSIX/Makefile.PL
@@ -10,7 +10,8 @@ WriteMakefile(
@libs,
MAN3PODS => {}, # Pods will be built by installman.
XSPROTOARG => '-noprototypes', # XXX remove later?
- VERSION_FROM => 'POSIX.pm',
+ VERSION_FROM => 'POSIX.pm',
+ realclean => {FILES=> 'const-c.inc const-xs.inc'},
);
my @names =
diff --git a/ext/Socket/Makefile.PL b/ext/Socket/Makefile.PL
index 19f0acd49a..e5436890c6 100644
--- a/ext/Socket/Makefile.PL
+++ b/ext/Socket/Makefile.PL
@@ -7,6 +7,7 @@ WriteMakefile(
($Config{libs} =~ /(-lsocks\S*)/ ? (LIBS => [ "$1" ] ) : ()),
MAN3PODS => {}, # Pods will be built by installman.
XSPROTOARG => '-noprototypes', # XXX remove later?
+ realclean => {FILES=> 'const-c.inc const-xs.inc'},
);
my @names = (qw(AF_802 AF_AAL AF_APPLETALK AF_CCITT AF_CHAOS AF_CTF
AF_DATAKIT AF_DECnet AF_DLI AF_ECMA AF_GOSIP AF_HYLINK
diff --git a/ext/Sys/Syslog/Makefile.PL b/ext/Sys/Syslog/Makefile.PL
index 1a5f1fc124..5a5da6f9da 100644
--- a/ext/Sys/Syslog/Makefile.PL
+++ b/ext/Sys/Syslog/Makefile.PL
@@ -6,6 +6,7 @@ WriteMakefile(
VERSION_FROM => 'Syslog.pm',
MAN3PODS => {}, # Pods will be built by installman.
XSPROTOARG => '-noprototypes',
+ realclean => {FILES=> 'const-c.inc const-xs.inc'},
);
# We hope syslogd understands /dev/log.
diff --git a/ext/Sys/Syslog/Syslog.pm b/ext/Sys/Syslog/Syslog.pm
index eabf7b4dac..18f1d4d36d 100644
--- a/ext/Sys/Syslog/Syslog.pm
+++ b/ext/Sys/Syslog/Syslog.pm
@@ -9,6 +9,17 @@ use Carp;
@EXPORT_OK = qw(setlogsock);
$VERSION = '0.02';
+# it would be nice to try stream/unix first, since that will be
+# most efficient. However streams are dodgy - see _syslog_send_stream
+#my @connectMethods = ( 'stream', 'unix', 'tcp', 'udp' );
+my @connectMethods = ( 'tcp', 'udp', 'unix', 'stream', 'console' );
+my @defaultMethods = @connectMethods;
+my $syslog_path = undef;
+my $transmit_ok = 0;
+my $current_proto = undef;
+my $failed = undef;
+my $fail_time = undef;
+
use Socket;
use Sys::Hostname;
@@ -21,8 +32,6 @@ use Sys::Hostname;
# with support from Tim Bunce <Tim.Bunce@ig.co.uk> and the perl5-porters mailing list
# Modified to use an XS backend instead of syslog.ph by Tom Hughes <tom@compton.nu>
-# Todo: enable connect to try all three types before failing (auto setlogsock)?
-
=head1 NAME
Sys::Syslog, openlog, closelog, setlogmask, syslog - Perl interface to the UNIX syslog(3) calls
@@ -50,9 +59,11 @@ Syslog provides the functions:
=item openlog $ident, $logopt, $facility
-I<$ident> is prepended to every message.
-I<$logopt> contains zero or more of the words I<pid>, I<ndelay>, I<cons>, I<nowait>.
-I<$facility> specifies the part of the system
+I<$ident> is prepended to every message. I<$logopt> contains zero or
+more of the words I<pid>, I<ndelay>, I<nowait>. The cons option is
+ignored, since the failover mechanism will drop down to the console
+automatically if all other media fail. I<$facility> specifies the
+part of the system
=item syslog $priority, $format, @args
@@ -64,19 +75,28 @@ is replaced with C<"$!"> (the latest error message).
Sets log mask I<$mask_priority> and returns the old mask.
-=item setlogsock $sock_type (added in 5.004_02)
+=item setlogsock $sock_type [$stream_location] (added in 5.004_02)
Sets the socket type to be used for the next call to
C<openlog()> or C<syslog()> and returns TRUE on success,
undef on failure.
-A value of 'unix' will connect to the UNIX domain socket returned by the
-C<_PATH_LOG> macro (if you system defines it) in F<syslog.h>. A value of
-'inet' will connect to an INET socket returned by getservbyname(). If
-C<_PATH_LOG> is unavailable or if getservbyname() fails, returns undef. Any
-other value croaks.
+A value of 'unix' will connect to the UNIX domain socket returned by
+the C<_PATH_LOG> macro (if your system defines it) in F<syslog.ph>. A
+value of 'stream' will connect to the stream indicated by the pathname
+provided as the optional second parameter. A value of 'inet' will
+connect to an INET socket (either tcp or udp, tried in that order)
+returned by getservbyname(). 'tcp' and 'udp' can also be given as
+values. The value 'console' will send messages directly to the
+console, as for the 'cons' option in the logopts in openlog().
+
+A reference to an array can also be passed as the first parameter.
+When this calling method is used, the array should contain a list of
+sock_types which are attempted in order.
-The default is for the INET socket to be used.
+The default is to try tcp, udp, unix, stream, console.
+
+Giving an invalid value for sock_type will croak.
=item closelog
@@ -113,20 +133,23 @@ Tom Christiansen E<lt>F<tchrist@perl.com>E<gt> and Larry Wall
E<lt>F<larry@wall.org>E<gt>.
UNIX domain sockets added by Sean Robinson
-E<lt>F<robinson_s@sc.maricopa.edu>E<gt> with support from Tim Bunce
-E<lt>F<Tim.Bunce@ig.co.uk>E<gt> and the perl5-porters mailing list.
+E<lt>F<robinson_s@sc.maricopa.edu>E<gt> with support from Tim Bunce
+E<lit>F<Tim.Bunce@ig.co.uk>E<gt> and the perl5-porters mailing list.
Dependency on F<syslog.ph> replaced with XS code by Tom Hughes
E<lt>F<tom@compton.nu>E<gt>.
-Code for constant()s regenerated by Nicholas Clark E<lt>nick@ccl4.orgE<gt>.
+Code for constant()s regenerated by Nicholas Clark E<lt>F<nick@ccl4.org>E<gt>.
+
+Failover to different communication modes by Nick Williams
+E<lt>F<Nick.Williams@morganstanley.com>E<gt>.
=cut
sub AUTOLOAD {
# This AUTOLOAD is used to 'autoload' constants from the constant()
# XS function.
-
+
my $constname;
our $AUTOLOAD;
($constname = $AUTOLOAD) =~ s/.*:://;
@@ -147,7 +170,6 @@ sub openlog {
($ident, $logopt, $facility) = @_; # package vars
$lo_pid = $logopt =~ /\bpid\b/;
$lo_ndelay = $logopt =~ /\bndelay\b/;
- $lo_cons = $logopt =~ /\bcons\b/;
$lo_nowait = $logopt =~ /\bnowait\b/;
return 1 unless $lo_ndelay;
&connect;
@@ -166,21 +188,49 @@ sub setlogmask {
sub setlogsock {
local($setsock) = shift;
+ $syslog_path = shift;
&disconnect if $connected;
- if (lc($setsock) eq 'unix') {
- if (length _PATH_LOG()) {
- $sock_type = 1;
+ $transmit_ok = 0;
+ @fallbackMethods = ();
+ @connectMethods = @defaultMethods;
+ if (ref $setsock eq 'ARRAY') {
+ @connectMethods = @$setsock;
+ } elsif (lc($setsock) eq 'stream') {
+ $syslog_path = '/dev/log' unless($syslog_path);
+ if (!-w $syslog_path) {
+ carp "stream passed to setlogsock, but $syslog_path is not writable";
+ return undef;
+ } else {
+ @connectMethods = ( 'stream' );
+ }
+ } elsif (lc($setsock) eq 'unix') {
+ if (length _PATH_LOG() && !defined $syslog_path) {
+ $syslog_path = _PATH_LOG();
+ @connectMethods = ( 'unix' );
} else {
- return undef;
+ carp 'unix passed to setlogsock, but path not available';
+ return undef;
}
+ } elsif (lc($setsock) eq 'tcp') {
+ if (getservbyname('syslog', 'tcp') || getservbyname('syslogng', 'tcp')) {
+ @connectMethods = ( 'tcp' );
+ } else {
+ carp "tcp passed to setlogsock, but tcp service unavailable";
+ return undef;
+ }
+ } elsif (lc($setsock) eq 'udp') {
+ if (getservbyname('syslog', 'udp')) {
+ @connectMethods = ( 'udp' );
+ } else {
+ carp "udp passed to setlogsock, but udp service unavailable";
+ return undef;
+ }
} elsif (lc($setsock) eq 'inet') {
- if (getservbyname('syslog','udp')) {
- undef($sock_type);
- } else {
- return undef;
- }
+ @connectMethods = ( 'tcp', 'udp' );
+ } elsif (lc($setsock) eq 'console') {
+ @connectMethods = ( 'console' );
} else {
- croak "Invalid argument passed to setlogsock; must be 'unix' or 'inet'";
+ carp "Invalid argument passed to setlogsock; must be 'stream', 'unix', 'tcp', 'udp' or 'inet'";
}
return 1;
}
@@ -243,24 +293,86 @@ sub syslog {
$message = sprintf ($mask, @_);
$sum = $numpri + $numfac;
- unless (send(SYSLOG,"<$sum>$whoami: $message\0",0)) {
- if ($lo_cons) {
- if ($pid = fork) {
- unless ($lo_nowait) {
- $died = waitpid($pid, 0);
- }
+ my $buf = "<$sum>$whoami: $message\0";
+
+ # it's possible that we'll get an error from sending
+ # (e.g. if method is UDP and there is no UDP listener,
+ # then we'll get ECONNREFUSED on the send). So what we
+ # want to do at this point is to fallback onto a different
+ # connection method.
+ while (scalar @fallbackMethods || $syslog_send) {
+ if ($failed && (time - $fail_time) > 60) {
+ # it's been a while... maybe things have been fixed
+ @fallbackMethods = ();
+ disconnect();
+ $transmit_ok = 0; # make it look like a fresh attempt
+ &connect;
+ }
+ if ($connected && !connection_ok()) {
+ # Something was OK, but has now broken. Remember coz we'll
+ # want to go back to what used to be OK.
+ $failed = $current_proto unless $failed;
+ $fail_time = time;
+ disconnect();
+ }
+ &connect unless $connected;
+ $failed = undef if ($current_proto eq $failed);
+ if ($syslog_send) {
+ if (&{$syslog_send}($buf)) {
+ $transmit_ok++;
+ return 1;
}
- else {
- if (open(CONS,">/dev/console")) {
- print CONS "<$facility.$priority>$whoami: $message\r";
- close CONS;
- }
- exit if defined $pid; # if fork failed, we're parent
+ # typically doesn't happen, since errors are rare from write().
+ disconnect();
+ }
+ }
+ # could not send, could not fallback onto a working
+ # connection method. Lose.
+ return 0;
+}
+
+sub _syslog_send_console {
+ my ($buf) = @_;
+ chop($buf); # delete the NUL from the end
+ # The console print is a method which could block
+ # so we do it in a child process and always return success
+ # to the caller.
+ if (my $pid = fork) {
+ if ($lo_nowait) {
+ return 1;
+ } else {
+ if (waitpid($pid, 0) >= 0) {
+ return ($? >> 8);
+ } else {
+ # it's possible that the caller has other
+ # plans for SIGCHLD, so let's not interfere
+ return 1;
}
}
+ } else {
+ if (open(CONS, ">/dev/console")) {
+ my $ret = print CONS $buf . "\r";
+ exit ($ret) if defined $pid;
+ close CONS;
+ }
+ exit if defined $pid;
}
}
+sub _syslog_send_stream {
+ my ($buf) = @_;
+ # XXX: this only works if the OS stream implementation makes a write
+ # look like a putmsg() with simple header. For instance it works on
+ # Solaris 8 but not Solaris 7.
+ # To be correct, it should use a STREAMS API, but perl doesn't have one.
+ return syswrite(SYSLOG, $buf, length($buf));
+}
+sub _syslog_send_socket {
+ my ($buf) = @_;
+ return syswrite(SYSLOG, $buf, length($buf));
+ #return send(SYSLOG, $buf, 0);
+}
+
sub xlate {
local($name) = @_;
$name = uc $name;
@@ -272,35 +384,190 @@ sub xlate {
}
sub connect {
+ @fallbackMethods = @connectMethods unless (scalar @fallbackMethods);
+ if ($transmit_ok && $current_proto) {
+ # Retry what we were on, because it's worked in the past.
+ unshift(@fallbackMethods, $current_proto);
+ }
+ $connected = 0;
+ my @errs = ();
+ my $proto = undef;
+ while ($proto = shift(@fallbackMethods)) {
+ my $fn = "connect_$proto";
+ $connected = &$fn(\@errs) unless (!defined &$fn);
+ last if ($connected);
+ }
+
+ $transmit_ok = 0;
+ if ($connected) {
+ $current_proto = $proto;
+ local($old) = select(SYSLOG); $| = 1; select($old);
+ } else {
+ @fallbackMethods = ();
+ foreach my $err (@errs) {
+ carp $err;
+ }
+ croak "no connection to syslog available";
+ }
+}
+
+sub connect_tcp {
+ my ($errs) = @_;
+ unless ($host) {
+ require Sys::Hostname;
+ my($host_uniq) = Sys::Hostname::hostname();
+ ($host) = $host_uniq =~ /([A-Za-z0-9_.-]+)/; # allow FQDN (inc _)
+ }
+ my $tcp = getprotobyname('tcp');
+ if (!defined $tcp) {
+ push(@{$errs}, "getprotobyname failed for tcp");
+ return 0;
+ }
+ my $syslog = getservbyname('syslog','tcp');
+ $syslog = getservbyname('syslogng','tcp') unless (defined $syslog);
+ if (!defined $syslog) {
+ push(@{$errs}, "getservbyname failed for tcp");
+ return 0;
+ }
+
+ my $this = sockaddr_in($syslog, INADDR_ANY);
+ my $that = sockaddr_in($syslog, inet_aton($host));
+ if (!$that) {
+ push(@{$errs}, "can't lookup $host");
+ return 0;
+ }
+ if (!socket(SYSLOG,AF_INET,SOCK_STREAM,$tcp)) {
+ push(@{$errs}, "tcp socket: $!");
+ return 0;
+ }
+ setsockopt(SYSLOG, SOL_SOCKET, SO_KEEPALIVE, 1);
+ setsockopt(SYSLOG, IPPROTO_TCP, TCP_NODELAY, 1);
+ if (!connect(SYSLOG,$that)) {
+ push(@{$errs}, "tcp connect: $!");
+ return 0;
+ }
+ $syslog_send = \&_syslog_send_socket;
+ return 1;
+}
+
+sub connect_udp {
+ my ($errs) = @_;
unless ($host) {
require Sys::Hostname;
my($host_uniq) = Sys::Hostname::hostname();
($host) = $host_uniq =~ /([A-Za-z0-9_.-]+)/; # allow FQDN (inc _)
}
- unless ( $sock_type ) {
- my $udp = getprotobyname('udp') || croak "getprotobyname failed for udp";
- my $syslog = getservbyname('syslog','udp') || croak "getservbyname failed";
- my $this = sockaddr_in($syslog, INADDR_ANY);
- my $that = sockaddr_in($syslog, inet_aton($host) || croak "Can't lookup $host");
- socket(SYSLOG,AF_INET,SOCK_DGRAM,$udp) || croak "socket: $!";
- connect(SYSLOG,$that) || croak "connect: $!";
+ my $udp = getprotobyname('udp');
+ if (!defined $udp) {
+ push(@{$errs}, "getprotobyname failed for udp");
+ return 0;
+ }
+ my $syslog = getservbyname('syslog','udp');
+ if (!defined $syslog) {
+ push(@{$errs}, "getservbyname failed for udp");
+ return 0;
+ }
+ my $this = sockaddr_in($syslog, INADDR_ANY);
+ my $that = sockaddr_in($syslog, inet_aton($host));
+ if (!$that) {
+ push(@{$errs}, "can't lookup $host");
+ return 0;
+ }
+ if (!socket(SYSLOG,AF_INET,SOCK_DGRAM,$udp)) {
+ push(@{$errs}, "udp socket: $!");
+ return 0;
+ }
+ if (!connect(SYSLOG,$that)) {
+ push(@{$errs}, "udp connect: $!");
+ return 0;
+ }
+ # We want to check that the UDP connect worked. However the only
+ # way to do that is to send a message and see if an ICMP is returned
+ _syslog_send_socket("");
+ if (!connection_ok()) {
+ push(@{$errs}, "udp connect: nobody listening");
+ return 0;
+ }
+ $syslog_send = \&_syslog_send_socket;
+ return 1;
+}
+
+sub connect_stream {
+ my ($errs) = @_;
+ # might want syslog_path to be variable based on syslog.h (if only
+ # it were in there!)
+ $syslog_path = '/dev/conslog';
+ if (!-w $syslog_path) {
+ push(@{$errs}, "stream $syslog_path is not writable");
+ return 0;
+ }
+ if (!open(SYSLOG, ">" . $syslog_path)) {
+ push(@{$errs}, "stream can't open $syslog_path: $!");
+ return 0;
+ }
+ $syslog_send = \&_syslog_send_stream;
+ return 1;
+}
+
+sub connect_unix {
+ my ($errs) = @_;
+ if (length _PATH_LOG()) {
+ $syslog_path = _PATH_LOG();
} else {
- my $syslog = _PATH_LOG();
- length($syslog) || croak "_PATH_LOG unavailable in syslog.h";
- my $that = sockaddr_un($syslog) || croak "Can't locate $syslog";
- socket(SYSLOG,AF_UNIX,SOCK_STREAM,0) || croak "socket: $!";
+ push(@{$errs}, "_PATH_LOG not available in syslog.h");
+ return 0;
+ }
+ my $that = sockaddr_un($syslog_path);
+ if (!$that) {
+ push(@{$errs}, "can't locate $syslog_path");
+ return 0;
+ }
+ if (!socket(SYSLOG,AF_UNIX,SOCK_STREAM,0)) {
+ push(@{$errs}, "unix stream socket: $!");
+ return 0;
+ }
+ if (!connect(SYSLOG,$that)) {
+ if (!socket(SYSLOG,AF_UNIX,SOCK_DGRAM,0)) {
+ push(@{$errs}, "unix dgram socket: $!");
+ return 0;
+ }
if (!connect(SYSLOG,$that)) {
- socket(SYSLOG,AF_UNIX,SOCK_DGRAM,0) || croak "socket: $!";
- connect(SYSLOG,$that) || croak "connect: $! (SOCK_DGRAM after trying SOCK_STREAM)";
- }
+ push(@{$errs}, "unix dgram connect: $!");
+ return 0;
+ }
}
- local($old) = select(SYSLOG); $| = 1; select($old);
- $connected = 1;
+ $syslog_send = \&_syslog_send_socket;
+ return 1;
+}
+
+sub connect_console {
+ my ($errs) = @_;
+ if (!-w '/dev/console') {
+ push(@{$errs}, "console is not writable");
+ return 0;
+ }
+ $syslog_send = \&_syslog_send_console;
+ return 1;
+}
+
+# to test if the connection is still good, we need to check if any
+# errors are present on the connection. The errors will not be raised
+# by a write. Instead, sockets are made readable and the next read
+# would cause the error to be returned. Unfortunately the syslog
+# 'protocol' never provides anything for us to read. But with
+# judicious use of select(), we can see if it would be readable...
+sub connection_ok {
+ return 1 if ($current_proto eq 'console');
+ my $rin = '';
+ vec($rin, fileno(SYSLOG), 1) = 1;
+ my $ret = select $rin, undef, $rin, 0;
+ return ($ret ? 0 : 1);
}
sub disconnect {
close SYSLOG;
$connected = 0;
+ $syslog_send = undef;
}
1;
diff --git a/ext/Unicode/Normalize/Changes b/ext/Unicode/Normalize/Changes
index 35c1b9459b..37f7dee818 100644
--- a/ext/Unicode/Normalize/Changes
+++ b/ext/Unicode/Normalize/Changes
@@ -1,5 +1,15 @@
Revision history for Perl extension Unicode::Normalize.
+0.16 Thu Mar 21 13:36:14 2002
+ - synchronization with bleadperl.
+ - Change 15318: by jhi
+ - Change 15319: by jhi
+
+0.15 Tue Mar 19 22:04:07 2002
+ - Quick check is implemented.
+ - decompose(), reorder(), and compose() are documented.
+ - The Non-XS version is also independent of Lingua::KO::Hangul::Util.
+
0.14 Sat Feb 02 20:40:14 2002
- synchronization with bleadperl.
- Change 14128: by Arthur
diff --git a/ext/Unicode/Normalize/Normalize.pm b/ext/Unicode/Normalize/Normalize.pm
index cec5fa70b3..52d1232d15 100644
--- a/ext/Unicode/Normalize/Normalize.pm
+++ b/ext/Unicode/Normalize/Normalize.pm
@@ -11,7 +11,7 @@ use strict;
use warnings;
use Carp;
-our $VERSION = '0.14';
+our $VERSION = '0.16';
our $PACKAGE = __PACKAGE__;
require Exporter;
@@ -22,9 +22,16 @@ our @ISA = qw(Exporter DynaLoader);
our @EXPORT = qw( NFC NFD NFKC NFKD );
our @EXPORT_OK = qw(
normalize decompose reorder compose
- getCanon getCompat getComposite getCombinClass isExclusion
+ checkNFD checkNFKD checkNFC checkNFKC check
+ getCanon getCompat getComposite getCombinClass
+ isExclusion isSingleton isNonStDecomp isComp2nd isComp_Ex
+ isNFD_NO isNFC_NO isNFC_MAYBE isNFKD_NO isNFKC_NO isNFKC_MAYBE
+);
+our %EXPORT_TAGS = (
+ all => [ @EXPORT, @EXPORT_OK ],
+ normalize => [ @EXPORT, qw/normalize decompose reorder compose/ ],
+ check => [ qw/checkNFD checkNFKD checkNFC checkNFKC check/ ],
);
-our %EXPORT_TAGS = ( all => [ @EXPORT, @EXPORT_OK ] );
bootstrap Unicode::Normalize $VERSION;
@@ -32,7 +39,6 @@ use constant COMPAT => 1;
sub NFD ($) { reorder(decompose($_[0])) }
sub NFKD ($) { reorder(decompose($_[0], COMPAT)) }
-
sub NFC ($) { compose(reorder(decompose($_[0]))) }
sub NFKC ($) { compose(reorder(decompose($_[0], COMPAT))) }
@@ -48,6 +54,18 @@ sub normalize($$)
croak $PACKAGE."::normalize: invalid form name: $form";
}
+sub check($$)
+{
+ my $form = shift;
+ $form =~ s/^NF//;
+ return
+ $form eq 'D' ? checkNFD ($_[0]) :
+ $form eq 'C' ? checkNFC ($_[0]) :
+ $form eq 'KD' ? checkNFKD($_[0]) :
+ $form eq 'KC' ? checkNFKC($_[0]) :
+ croak $PACKAGE."::check: invalid form name: $form";
+}
+
1;
__END__
@@ -59,19 +77,19 @@ Unicode::Normalize - normalized forms of Unicode text
use Unicode::Normalize;
- $string_NFD = NFD($raw_string); # Normalization Form D
- $string_NFC = NFC($raw_string); # Normalization Form C
- $string_NFKD = NFKD($raw_string); # Normalization Form KD
- $string_NFKC = NFKC($raw_string); # Normalization Form KC
+ $NFD_string = NFD($string); # Normalization Form D
+ $NFC_string = NFC($string); # Normalization Form C
+ $NFKD_string = NFKD($string); # Normalization Form KD
+ $NFKC_string = NFKC($string); # Normalization Form KC
or
use Unicode::Normalize 'normalize';
- $string_NFD = normalize('D', $raw_string); # Normalization Form D
- $string_NFC = normalize('C', $raw_string); # Normalization Form C
- $string_NFKD = normalize('KD', $raw_string); # Normalization Form KD
- $string_NFKC = normalize('KC', $raw_string); # Normalization Form KC
+ $NFD_string = normalize('D', $string); # Normalization Form D
+ $NFC_string = normalize('C', $string); # Normalization Form C
+ $NFKD_string = normalize('KD', $string); # Normalization Form KD
+ $NFKC_string = normalize('KC', $string); # Normalization Form KC
=head1 DESCRIPTION
@@ -79,26 +97,25 @@ Unicode::Normalize - normalized forms of Unicode text
=over 4
-=item C<$string_NFD = NFD($raw_string)>
+=item C<$NFD_string = NFD($string)>
returns the Normalization Form D (formed by canonical decomposition).
-
-=item C<$string_NFC = NFC($raw_string)>
+=item C<$NFC_string = NFC($string)>
returns the Normalization Form C (formed by canonical decomposition
followed by canonical composition).
-=item C<$string_NFKD = NFKD($raw_string)>
+=item C<$NFKD_string = NFKD($string)>
returns the Normalization Form KD (formed by compatibility decomposition).
-=item C<$string_NFKC = NFKC($raw_string)>
+=item C<$NFKC_string = NFKC($string)>
returns the Normalization Form KC (formed by compatibility decomposition
followed by B<canonical> composition).
-=item C<$normalized_string = normalize($form_name, $raw_string)>
+=item C<$normalized_string = normalize($form_name, $string)>
As C<$form_name>, one of the following names must be given.
@@ -109,6 +126,107 @@ As C<$form_name>, one of the following names must be given.
=back
+=head2 Decomposition and Composition
+
+=over 4
+
+=item C<$decomposed_string = decompose($string)>
+
+=item C<$decomposed_string = decompose($string, $useCompatMapping)>
+
+Decompose the specified string and returns the result.
+
+If the second parameter (a boolean) is omitted or false, decomposes it
+using the Canonical Decomposition Mapping.
+If true, decomposes it using the Compatibility Decomposition Mapping.
+
+The string returned is not always in NFD/NFKD.
+Reordering may be required.
+
+ $NFD_string = reorder(decompose($string)); # eq. to NFD()
+ $NFKD_string = reorder(decompose($string, TRUE)); # eq. to NFKD()
+
+=item C<$reordered_string = reorder($string)>
+
+Reorder the combining characters and the like in the canonical ordering
+and returns the result.
+
+E.g., when you have a list of NFD/NFKD strings,
+you can get the concatenated NFD/NFKD string from them, saying
+
+ $concat_NFD = reorder(join '', @NFD_strings);
+ $concat_NFKD = reorder(join '', @NFKD_strings);
+
+=item C<$composed_string = compose($string)>
+
+Returns the string where composable pairs are composed.
+
+E.g., when you have a NFD/NFKD string,
+you can get its NFC/NFKC string, saying
+
+ $NFC_string = compose($NFD_string);
+ $NFKC_string = compose($NFKD_string);
+
+=back
+
+=head2 Quick Check
+
+(see Annex 8, UAX #15; F<DerivedNormalizationProperties.txt>)
+
+The following functions check whether the string is in that normalization form.
+
+The result returned will be:
+
+ YES The string is in that normalization form.
+ NO The string is not in that normalization form.
+ MAYBE Dubious. Maybe yes, maybe no.
+
+=over 4
+
+=item C<$result = checkNFD($string)>
+
+returns YES (1) or NO (empty string).
+
+=item C<$result = checkNFC($string)>
+
+returns YES (1), NO (empty string), or MAYBE (undef).
+
+=item C<$result = checkNFKD($string)>
+
+returns YES (1) or NO (empty string).
+
+=item C<$result = checkNFKC($string)>
+
+returns YES (1), NO (empty string), or MAYBE (undef).
+
+=item C<$result = check($form_name, $string)>
+
+returns YES (1), NO (empty string), or MAYBE (undef).
+
+C<$form_name> is alike to that for C<normalize()>.
+
+=back
+
+B<Note>
+
+In the cases of NFD and NFKD, the answer must be either C<YES> or C<NO>.
+The answer C<MAYBE> may be returned in the cases of NFC and NFKC.
+
+A MAYBE-NFC/NFKC string should contain at least
+one combining character or the like.
+For example, C<COMBINING ACUTE ACCENT> has
+the MAYBE_NFC/MAYBE_NFKC property.
+Both C<checkNFC("A\N{COMBINING ACUTE ACCENT}")>
+and C<checkNFC("B\N{COMBINING ACUTE ACCENT}")> will return C<MAYBE>.
+Though, C<"A\N{COMBINING ACUTE ACCENT}"> is not in NFC
+(its NFC is C<"\N{LATIN CAPITAL LETTER A WITH ACUTE}">),
+while C<"B\N{COMBINING ACUTE ACCENT}"> is in NFC.
+
+If you want to check exactly, compare the string with its NFC/NFKC; i.e.,
+
+ $string eq NFC($string) # more thorough than checkNFC($string)
+ $string eq NFKC($string) # more thorough than checkNFKC($string)
+
=head2 Character Data
These functions are interface of character data used internally.
@@ -119,30 +237,54 @@ call them yourself.
=item C<$canonical_decomposed = getCanon($codepoint)>
+If the character of the specified codepoint is canonically
+decomposable (including Hangul Syllables),
+returns the B<completely decomposed> string canonically equivalent to it.
+
+If it is not decomposable, returns undef.
+
=item C<$compatibility_decomposed = getCompat($codepoint)>
-If the character of the specified codepoint is canonically or
-compatibility decomposable (including Hangul Syllables),
-returns the B<completely decomposed> string equivalent to it.
+If the character of the specified codepoint is compatibility
+decomposable (including Hangul Syllables),
+returns the B<completely decomposed> string compatibility equivalent to it.
If it is not decomposable, returns undef.
-=item C<$uv_composite = getComposite($uv_here, $uv_next)>
+=item C<$codepoint_composite = getComposite($codepoint_here, $codepoint_next)>
If two characters here and next (as codepoints) are composable
-(including Hangul Jamo/Syllables and Exclusions),
+(including Hangul Jamo/Syllables and Composition Exclusions),
returns the codepoint of the composite.
If they are not composable, returns undef.
=item C<$combining_class = getCombinClass($codepoint)>
-Returns the combining class as integer of the character.
+Returns the combining class of the character as an integer.
=item C<$is_exclusion = isExclusion($codepoint)>
+Returns a boolean whether the character of the specified codepoint
+is a composition exclusion.
+
+=item C<$is_singleton = isSingleton($codepoint)>
+
Returns a boolean whether the character of the specified codepoint is
-a composition exclusion.
+a singleton.
+
+=item C<$is_non_startar_decomposition = isNonStDecomp($codepoint)>
+
+Returns a boolean whether the canonical decomposition
+of the character of the specified codepoint
+is a Non-Starter Decomposition.
+
+=item C<$may_be_composed_with_prev_char = isComp2nd($codepoint)>
+
+Returns a boolean whether the character of the specified codepoint
+may be composed with the previous one in a certain composition
+(including Hangul Compositions, but excluding
+Composition Exclusions and Non-Starter Decompositions).
=back
@@ -152,16 +294,6 @@ C<NFC>, C<NFD>, C<NFKC>, C<NFKD>: by default.
C<normalize> and other some functions: on request.
-=head2 TODO
-
-Unicode::Normalize has not been ported to EBCDIC. The code mostly
-would work just fine but a decision needs to be made: how the module
-should work in EBCDIC? Should the low 256 characters be understood as
-Unicode or as EBCDIC code points? Should one be chosen or should
-there be a way to do either? Or should such translation be left
-outside the module for the user to do, for example by using
-Encode::from_to()?
-
=head1 AUTHOR
SADAHIRO Tomoyuki, E<lt>SADAHIRO@cpan.orgE<gt>
@@ -181,6 +313,10 @@ SADAHIRO Tomoyuki, E<lt>SADAHIRO@cpan.orgE<gt>
Unicode Normalization Forms - UAX #15
+=item http://www.unicode.org/Public/UNIDATA/DerivedNormalizationProperties.txt
+
+Derived Normalization Properties
+
=back
=cut
diff --git a/ext/Unicode/Normalize/Normalize.xs b/ext/Unicode/Normalize/Normalize.xs
index 7a11095c24..3cb221fd75 100644
--- a/ext/Unicode/Normalize/Normalize.xs
+++ b/ext/Unicode/Normalize/Normalize.xs
@@ -62,16 +62,19 @@ int compare_cc(const void *a, const void *b)
{
int ret_cc;
ret_cc = (*(UNF_cc*)a).cc - (*(UNF_cc*)b).cc;
- if(ret_cc) return ret_cc;
+ if (ret_cc)
+ return ret_cc;
return (*(UNF_cc*)a).pos - (*(UNF_cc*)b).pos;
}
U8* dec_canonical (UV uv)
{
U8 ***plane, **row;
- if(OVER_UTF_MAX(uv)) return NULL;
+ if (OVER_UTF_MAX(uv))
+ return NULL;
plane = (U8***)UNF_canon[uv >> 16];
- if(! plane) return NULL;
+ if (! plane)
+ return NULL;
row = plane[(uv >> 8) & 0xff];
return row ? row[uv & 0xff] : NULL;
}
@@ -79,9 +82,11 @@ U8* dec_canonical (UV uv)
U8* dec_compat (UV uv)
{
U8 ***plane, **row;
- if(OVER_UTF_MAX(uv)) return NULL;
+ if (OVER_UTF_MAX(uv))
+ return NULL;
plane = (U8***)UNF_compat[uv >> 16];
- if(! plane) return NULL;
+ if (! plane)
+ return NULL;
row = plane[(uv >> 8) & 0xff];
return row ? row[uv & 0xff] : NULL;
}
@@ -90,25 +95,30 @@ UV composite_uv (UV uv, UV uv2)
{
UNF_complist ***plane, **row, *cell, *i;
- if(! uv2 || OVER_UTF_MAX(uv) || OVER_UTF_MAX(uv2)) return 0;
+ if (! uv2 || OVER_UTF_MAX(uv) || OVER_UTF_MAX(uv2))
+ return 0;
- if(Hangul_IsL(uv) && Hangul_IsV(uv2)) {
+ if (Hangul_IsL(uv) && Hangul_IsV(uv2)) {
uv -= Hangul_LBase; /* lindex */
uv2 -= Hangul_VBase; /* vindex */
return(Hangul_SBase + (uv * Hangul_VCount + uv2) * Hangul_TCount);
}
- if(Hangul_IsLV(uv) && Hangul_IsT(uv2)) {
+ if (Hangul_IsLV(uv) && Hangul_IsT(uv2)) {
uv2 -= Hangul_TBase; /* tindex */
return(uv + uv2);
}
plane = UNF_compos[uv >> 16];
- if(! plane) return 0;
+ if (! plane)
+ return 0;
row = plane[(uv >> 8) & 0xff];
- if(! row) return 0;
+ if (! row)
+ return 0;
cell = row[uv & 0xff];
- if(! cell) return 0;
- for(i = cell; i->nextchar; i++) {
- if(uv2 == i->nextchar) return i->composite;
+ if (! cell)
+ return 0;
+ for (i = cell; i->nextchar; i++) {
+ if (uv2 == i->nextchar)
+ return i->composite;
}
return 0;
}
@@ -116,9 +126,11 @@ UV composite_uv (UV uv, UV uv2)
U8 getCombinClass (UV uv)
{
U8 **plane, *row;
- if(OVER_UTF_MAX(uv)) return 0;
+ if (OVER_UTF_MAX(uv))
+ return 0;
plane = (U8**)UNF_combin[uv >> 16];
- if(! plane) return 0;
+ if (! plane)
+ return 0;
row = plane[(uv >> 8) & 0xff];
return row ? row[uv & 0xff] : 0;
}
@@ -128,7 +140,8 @@ void sv_cat_decompHangul (SV* sv, UV uv)
UV sindex, lindex, vindex, tindex;
U8 *t, tmp[3 * UTF8_MAXLEN + 1];
- if(! Hangul_IsS(uv)) return;
+ if (! Hangul_IsS(uv))
+ return;
sindex = uv - Hangul_SBase;
lindex = sindex / Hangul_NCount;
@@ -138,7 +151,8 @@ void sv_cat_decompHangul (SV* sv, UV uv)
t = tmp;
t = uvuni_to_utf8(t, (lindex + Hangul_LBase));
t = uvuni_to_utf8(t, (vindex + Hangul_VBase));
- if (tindex) t = uvuni_to_utf8(t, (tindex + Hangul_TBase));
+ if (tindex)
+ t = uvuni_to_utf8(t, (tindex + Hangul_TBase));
*t = '\0';
sv_catpvn(sv, (char *)tmp, strlen((char *)tmp));
}
@@ -157,7 +171,7 @@ decompose(arg, compat = &PL_sv_no)
U8 *s, *e, *p, *r;
bool iscompat;
CODE:
- if(SvUTF8(arg)) {
+ if (SvUTF8(arg)) {
src = arg;
} else {
src = sv_mortalcopy(arg);
@@ -171,14 +185,17 @@ decompose(arg, compat = &PL_sv_no)
s = (U8*)SvPV(src,srclen);
e = s + srclen;
- for(p = s; p < e;){
+ for (p = s; p < e;) {
uv = utf8n_to_uvuni(p, e - p, &retlen, 0);
p += retlen;
- if(Hangul_IsS(uv)) sv_cat_decompHangul(dst, uv);
+ if (Hangul_IsS(uv))
+ sv_cat_decompHangul(dst, uv);
else {
r = iscompat ? dec_compat(uv) : dec_canonical(uv);
- if(r) sv_catpv(dst, (char *)r);
- else sv_catpvn(dst, (char *)p - retlen, retlen);
+ if (r)
+ sv_catpv(dst, (char *)r);
+ else
+ sv_catpvn(dst, (char *)p - retlen, retlen);
}
}
RETVAL = dst;
@@ -192,22 +209,33 @@ reorder(arg)
SV * arg
PROTOTYPE: $
PREINIT:
- SV *src;
- STRLEN srclen, retlen, stk_cc_max;
- U8 *s, *e, *p, curCC;
+ SV *src, *dst;
+ STRLEN srclen, dstlen, retlen, stk_cc_max;
+ U8 *s, *e, *p, *d, curCC;
UV uv;
UNF_cc * stk_cc;
CODE:
- src = newSVsv(arg);
- if(! SvUTF8(arg)) sv_utf8_upgrade(src);
+ if (SvUTF8(arg)) {
+ src = arg;
+ } else {
+ src = sv_mortalcopy(arg);
+ sv_utf8_upgrade(src);
+ }
+
+ s = (U8*)SvPV(src, srclen);
+
+ dstlen = srclen + 1;
+ dst = newSV(dstlen);
+ sv_setpvn(dst,(const char*)s,srclen);
+ SvUTF8_on(dst);
stk_cc_max = 10; /* enough as an initial value? */
New(0, stk_cc, stk_cc_max, UNF_cc);
- s = (U8*)SvPV(src,srclen);
- e = s + srclen;
+ d = (U8*)SvPV(dst,dstlen);
+ e = d + dstlen;
- for(p = s; p < e;){
+ for (p = d; p < e;) {
U8 *cc_in;
STRLEN cc_len, cc_iter, cc_pos;
@@ -215,20 +243,24 @@ reorder(arg)
curCC = getCombinClass(uv);
p += retlen;
- if(! (curCC && p < e)) continue; else cc_in = p - retlen;
+ if (! (curCC && p < e))
+ continue;
+ else
+ cc_in = p - retlen;
cc_pos = 0;
stk_cc[cc_pos].cc = curCC;
stk_cc[cc_pos].uv = uv;
stk_cc[cc_pos].pos = cc_pos;
- while(p < e) {
+ while (p < e) {
uv = utf8n_to_uvuni(p, e - p, &retlen, 0);
curCC = getCombinClass(uv);
- if(!curCC) break;
+ if (!curCC)
+ break;
p += retlen;
cc_pos++;
- if(stk_cc_max <= cc_pos) { /* extend if need */
+ if (stk_cc_max <= cc_pos) { /* extend if need */
stk_cc_max = cc_pos + 1;
Renew(stk_cc, stk_cc_max, UNF_cc);
}
@@ -238,18 +270,19 @@ reorder(arg)
}
/* only one c.c. in cc_len from cc_in, no need of reordering */
- if(!cc_pos) continue;
+ if (!cc_pos)
+ continue;
qsort((void*)stk_cc, cc_pos + 1, sizeof(UNF_cc), compare_cc);
cc_len = p - cc_in;
p = cc_in;
- for(cc_iter = 0; cc_iter <= cc_pos; cc_iter++) {
+ for (cc_iter = 0; cc_iter <= cc_pos; cc_iter++) {
p = uvuni_to_utf8(p, stk_cc[cc_iter].uv);
}
}
Safefree(stk_cc);
- RETVAL = src;
+ RETVAL = dst;
OUTPUT:
RETVAL
@@ -266,7 +299,7 @@ compose(arg)
STRLEN srclen, dstlen, tmplen, retlen;
bool beginning = TRUE;
CODE:
- if(SvUTF8(arg)) {
+ if (SvUTF8(arg)) {
src = arg;
} else {
src = sv_mortalcopy(arg);
@@ -286,12 +319,12 @@ compose(arg)
(void)SvPOK_only(tmp);
SvUTF8_on(tmp);
- for(p = s; p < e;){
- if(beginning) {
+ for (p = s; p < e;) {
+ if (beginning) {
uvS = utf8n_to_uvuni(p, e - p, &retlen, 0);
p += retlen;
- if (getCombinClass(uvS)){ /* no Starter found yet */
+ if (getCombinClass(uvS)) { /* no Starter found yet */
d = uvuni_to_utf8(d, uvS);
continue;
}
@@ -303,20 +336,18 @@ compose(arg)
preCC = 0;
/* to the next Starter */
- while(p < e) {
+ while (p < e) {
uv = utf8n_to_uvuni(p, e - p, &retlen, 0);
p += retlen;
curCC = getCombinClass(uv);
- if(preCC && preCC == curCC) {
+ if (preCC && preCC == curCC) {
preCC = curCC;
t = uvuni_to_utf8(t, uv);
} else {
uvComp = composite_uv(uvS, uv);
- /* S + C + S => S-S + C would be also blocked. */
- if( uvComp && ! isExclusion(uvComp) && preCC <= curCC)
- {
+ if (uvComp && ! isExclusion(uvComp) && preCC <= curCC) {
STRLEN leftcur, rightcur, dstcur;
leftcur = UNISKIP(uvComp);
rightcur = UNISKIP(uvS) + UNISKIP(uv);
@@ -326,7 +357,6 @@ compose(arg)
dstlen += leftcur - rightcur;
d = (U8*)SvGROW(dst,dstlen) + dstcur;
}
-
/* preCC not changed to curCC */
uvS = uvComp;
} else if (! curCC && p < e) { /* blocked */
@@ -341,7 +371,8 @@ compose(arg)
tmplen = t - tmp_start;
if (tmplen) { /* uncomposed combining char */
t = (U8*)SvPVX(tmp);
- while(tmplen--) *d++ = *t++;
+ while (tmplen--)
+ *d++ = *t++;
}
uvS = uv;
} /* for */
@@ -352,13 +383,169 @@ compose(arg)
+void
+checkNFD(arg)
+ SV * arg
+ PROTOTYPE: $
+ ALIAS:
+ checkNFKD = 1
+ PREINIT:
+ UV uv;
+ SV *src;
+ STRLEN srclen, retlen;
+ U8 *s, *e, *p, curCC, preCC;
+ PPCODE:
+ if (SvUTF8(arg)) {
+ src = arg;
+ } else {
+ src = sv_mortalcopy(arg);
+ sv_utf8_upgrade(src);
+ }
+
+ s = (U8*)SvPV(src,srclen);
+ e = s + srclen;
+
+ preCC = 0;
+ for (p = s; p < e; p += retlen) {
+ uv = utf8n_to_uvuni(p, e - p, &retlen, 0);
+ curCC = getCombinClass(uv);
+ if (preCC > curCC && curCC != 0) /* canonical ordering violated */
+ XSRETURN_NO;
+ if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv)))
+ XSRETURN_NO;
+ preCC = curCC;
+ }
+ XSRETURN_YES;
+
+
+
+void
+checkNFC(arg)
+ SV * arg
+ PROTOTYPE: $
+ ALIAS:
+ checkNFKC = 1
+ PREINIT:
+ UV uv;
+ SV *src;
+ STRLEN srclen, retlen;
+ U8 *s, *e, *p, curCC, preCC;
+ bool isMAYBE;
+ PPCODE:
+ if (SvUTF8(arg)) {
+ src = arg;
+ } else {
+ src = sv_mortalcopy(arg);
+ sv_utf8_upgrade(src);
+ }
+
+ s = (U8*)SvPV(src,srclen);
+ e = s + srclen;
+
+ preCC = 0;
+ isMAYBE = FALSE;
+ for (p = s; p < e; p += retlen) {
+ uv = utf8n_to_uvuni(p, e - p, &retlen, 0);
+ curCC = getCombinClass(uv);
+
+ if (preCC > curCC && curCC != 0) /* canonical ordering violated */
+ XSRETURN_NO;
+
+ /* get NFC/NFKC property */
+ if (Hangul_IsS(uv)) /* Hangul syllables are canonical composites */
+ ; /* YES */
+ else if (isExclusion(uv) || isSingleton(uv) || isNonStDecomp(uv))
+ XSRETURN_NO;
+ else if (isComp2nd(uv))
+ isMAYBE = TRUE;
+ else if (ix) {
+ char *canon, *compat;
+ /*
+ * NFKC_NO when having compatibility mapping;
+ * i.e. dec_compat(uv) defined & different with dec_canonical(uv).
+ */
+ canon = (char *) dec_canonical(uv);
+ compat = (char *) dec_compat(uv);
+ if (compat && (!canon || strNE(canon, compat)))
+ XSRETURN_NO;
+ } /* end of get NFC/NFKC property */
+
+ preCC = curCC;
+ }
+ if (isMAYBE)
+ XSRETURN_UNDEF;
+ else
+ XSRETURN_YES;
+
+
+
U8
getCombinClass(uv)
UV uv
+ PROTOTYPE: $
bool
isExclusion(uv)
UV uv
+ PROTOTYPE: $
+
+bool
+isSingleton(uv)
+ UV uv
+ PROTOTYPE: $
+
+bool
+isNonStDecomp(uv)
+ UV uv
+ PROTOTYPE: $
+
+bool
+isComp2nd(uv)
+ UV uv
+ PROTOTYPE: $
+ ALIAS:
+ isNFC_MAYBE = 1
+ isNFKC_MAYBE = 2
+
+
+
+void
+isNFD_NO(uv)
+ UV uv
+ PROTOTYPE: $
+ ALIAS:
+ isNFKD_NO = 1
+ PPCODE:
+ if (Hangul_IsS(uv) || (ix ? dec_compat(uv) : dec_canonical(uv)))
+ XSRETURN_YES; /* NFD_NO or NFKD_NO */
+ else
+ XSRETURN_NO;
+
+
+
+void
+isComp_Ex(uv)
+ UV uv
+ PROTOTYPE: $
+ ALIAS:
+ isNFC_NO = 0
+ isNFKC_NO = 1
+ PPCODE:
+ if (isExclusion(uv) || isSingleton(uv) || isNonStDecomp(uv))
+ XSRETURN_YES; /* NFC_NO or NFKC_NO */
+ else if (ix) {
+ char *canon, *compat;
+ canon = (char *) dec_canonical(uv);
+ compat = (char *) dec_compat(uv);
+ if (compat && (!canon || strNE(canon, compat)))
+ XSRETURN_YES; /* NFC_NO or NFKC_NO */
+ else
+ XSRETURN_NO;
+ }
+ else
+ XSRETURN_NO;
+
+
SV*
getComposite(uv, uv2)
@@ -373,6 +560,8 @@ getComposite(uv, uv2)
OUTPUT:
RETVAL
+
+
SV*
getCanon(uv)
UV uv
@@ -382,7 +571,7 @@ getCanon(uv)
PREINIT:
U8 * rstr;
CODE:
- if(Hangul_IsS(uv)) {
+ if (Hangul_IsS(uv)) {
SV * dst;
dst = newSV(1);
(void)SvPOK_only(dst);
@@ -390,7 +579,8 @@ getCanon(uv)
RETVAL = dst;
} else {
rstr = ix ? dec_compat(uv) : dec_canonical(uv);
- if(!rstr) XSRETURN_UNDEF;
+ if (!rstr)
+ XSRETURN_UNDEF;
RETVAL = newSVpvn((char *)rstr, strlen((char *)rstr));
}
SvUTF8_on(RETVAL);
diff --git a/ext/Unicode/Normalize/README b/ext/Unicode/Normalize/README
index 2404f2fb1d..1f28333ca2 100644
--- a/ext/Unicode/Normalize/README
+++ b/ext/Unicode/Normalize/README
@@ -1,4 +1,4 @@
-Unicode/Normalize version 0.14
+Unicode/Normalize version 0.15
===================================
Unicode::Normalize - normalized forms of Unicode text
@@ -7,23 +7,26 @@ SYNOPSIS
use Unicode::Normalize;
- $string_NFD = NFD($string); # Normalization Form D
- $string_NFC = NFC($string); # Normalization Form C
- $string_NFKD = NFKD($string); # Normalization Form KD
- $string_NFKC = NFKC($string); # Normalization Form KC
+ $NFD_string = NFD($string); # Normalization Form D
+ $NFC_string = NFC($string); # Normalization Form C
+ $NFKD_string = NFKD($string); # Normalization Form KD
+ $NFKC_string = NFKC($string); # Normalization Form KC
+
+
+ or
- or
use Unicode::Normalize 'normalize';
- $string_NFD = normalize('D', $string); # Normalization Form D
- $string_NFC = normalize('C', $string); # Normalization Form C
- $string_NFKD = normalize('KD', $string); # Normalization Form KD
- $string_NFKC = normalize('KC', $string); # Normalization Form KC
+ $NFD_string = normalize('D', $string); # Normalization Form D
+ $NFC_string = normalize('C', $string); # Normalization Form C
+ $NFKD_string = normalize('KD', $string); # Normalization Form KD
+ $NFKC_string = normalize('KC', $string); # Normalization Form KC
+
INSTALLATION
-Perl 5.006 or later
+Perl 5.6 or later
To install this module type the following:
@@ -58,26 +61,30 @@ Exporter
File::Copy
File::Spec
-unicore/CombiningClass.pl
- (or unicode/CombiningClass.pl)
-unicore/Decomposition.pl
- (or unicode/Decomposition.pl)
-unicore/CompositionExclusions.txt
- (or unicode/CompExcl.txt)
+unicore/CombiningClass.pl (or unicode/CombiningClass.pl)
+unicore/Decomposition.pl (or unicode/Decomposition.pl)
+unicore/CompositionExclusions.txt (or unicode/CompExcl.txt)
-# CAVEAT:
-# In bleadperl, unicore/CompExcl.txt is renamed
-# unicore/CompositionExclusions.txt.
+CAVEAT
-And for the NoXS version, in addition to the above,
+(1) In bleadperl, unicore/CompExcl.txt is renamed
+ unicore/CompositionExclusions.txt.
- Lingua::KO::Hangul::Util 0.06
+(2) When these unicore/*.* files are updated;
-is required.
+ in the case of an XS version:
+ You must rebuild the module,
+ as the data will be compiled on building.
+
+ in the case of a NoXS version:
+ Rebuilding is not necessary,
+ as the data will be read on requirement.
COPYRIGHT AND LICENCE
-SADAHIRO Tomoyuki, E<lt>SADAHIRO@cpan.orgE<gt>
+ SADAHIRO Tomoyuki
+
+ SADAHIRO@cpan.org
http://homepage1.nifty.com/nomenclator/perl/
@@ -85,4 +92,3 @@ SADAHIRO Tomoyuki, E<lt>SADAHIRO@cpan.orgE<gt>
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
-
diff --git a/ext/Unicode/Normalize/mkheader b/ext/Unicode/Normalize/mkheader
index 12c5aa8fa0..67a132b756 100644
--- a/ext/Unicode/Normalize/mkheader
+++ b/ext/Unicode/Normalize/mkheader
@@ -14,257 +14,316 @@ use Carp;
our $PACKAGE = 'Unicode::Normalize, mkheader';
our $Combin = do "unicore/CombiningClass.pl"
- || do "unicode/CombiningClass.pl"
- || croak "$PACKAGE: CombiningClass.pl not found";
+ || do "unicode/CombiningClass.pl"
+ || croak "$PACKAGE: CombiningClass.pl not found";
our $Decomp = do "unicore/Decomposition.pl"
- || do "unicode/Decomposition.pl"
- || croak "$PACKAGE: Decomposition.pl not found";
+ || do "unicode/Decomposition.pl"
+ || croak "$PACKAGE: Decomposition.pl not found";
our %Combin; # $codepoint => $number : combination class
our %Canon; # $codepoint => $hexstring : canonical decomp.
our %Compat; # $codepoint => $hexstring : compat. decomp.
our %Compos; # $string => $codepoint : composite
-
our %Exclus; # $codepoint => 1 : composition exclusions
+our %Single; # $codepoint => 1 : singletons
+our %NonStD; # $codepoint => 1 : non-starter decompositions
{
- my($f, $fh);
- foreach my $d (@INC) {
- use File::Spec;
- $f = File::Spec->catfile($d, "unicore", "CompositionExclusions.txt");
- last if open($fh, $f);
- $f = File::Spec->catfile($d, "unicode", "CompExcl.txt");
- last if open($fh, $f);
- $f = undef;
- }
- croak "$PACKAGE: CompExcl.txt not found in @INC" unless defined $f;
- while(<$fh>) {
- next if /^#/ or /^$/;
- s/#.*//;
- $Exclus{ hex($1) } =1 if /([0-9A-Fa-f]+)/;
- }
- close $fh;
+ my($f, $fh);
+ foreach my $d (@INC) {
+ use File::Spec;
+ $f = File::Spec->catfile($d, "unicore", "CompositionExclusions.txt");
+ last if open($fh, $f);
+ $f = File::Spec->catfile($d, "unicode", "CompExcl.txt");
+ last if open($fh, $f);
+ $f = undef;
+ }
+ croak "$PACKAGE: CompExcl.txt not found in @INC" unless defined $f;
+ while (<$fh>) {
+ next if /^#/ or /^$/;
+ s/#.*//;
+ $Exclus{ hex($1) } =1 if /([0-9A-Fa-f]+)/;
+ }
+ close $fh;
}
-while($Combin =~ /(.+)/g) {
- my @tab = split /\t/, $1;
- my $ini = hex $tab[0];
- if($tab[1] eq '') {
- $Combin{ $ini } = $tab[2];
- } else {
- $Combin{ $_ } = $tab[2] foreach $ini .. hex($tab[1]);
- }
+while ($Combin =~ /(.+)/g) {
+ my @tab = split /\t/, $1;
+ my $ini = hex $tab[0];
+ if ($tab[1] eq '') {
+ $Combin{ $ini } = $tab[2];
+ } else {
+ $Combin{ $_ } = $tab[2] foreach $ini .. hex($tab[1]);
+ }
}
-while($Decomp =~ /(.+)/g) {
- my @tab = split /\t/, $1;
- my $compat = $tab[2] =~ s/<[^>]+>//;
- my $dec = [ _getHexArray($tab[2]) ]; # decomposition
- my $com = pack('U*', @$dec); # composable sequence
- my $ini = hex($tab[0]);
- if($tab[1] eq '') {
- $Compat{ $ini } = $dec;
- if(! $compat) {
- $Canon{ $ini } = $dec;
- $Compos{ $com } = $ini if @$dec > 1;
+while ($Decomp =~ /(.+)/g) {
+ my @tab = split /\t/, $1;
+ my $compat = $tab[2] =~ s/<[^>]+>//;
+ my $dec = [ _getHexArray($tab[2]) ]; # decomposition
+ my $com = pack('U*', @$dec); # composable sequence
+ my $ini = hex($tab[0]); # initial decomposable character
+ if ($tab[1] eq '') {
+ $Compat{ $ini } = $dec;
+
+ if (! $compat) {
+ $Canon{ $ini } = $dec;
+
+ if (@$dec > 1) {
+ if ($Combin{ $dec->[0] }) {
+ $NonStD{ $ini } = 1;
+ } else {
+ $Compos{ $com } = $ini;
+ }
+ } else {
+ $Single{ $ini } = 1;
+ }
+ }
+ } else {
+ foreach my $u ($ini .. hex($tab[1])){
+ $Compat{ $u } = $dec;
+ if (! $compat) {
+ $Canon{ $u } = $dec;
+
+ if (@$dec > 1) {
+ if ($Combin{ $dec->[0] }) {
+ $NonStD{ $u } = 1;
+ } else {
+ $Compos{ $com } = $u;
+ }
+ } else {
+ $Single{ $u } = 1;
+ }
+ }
+ }
}
- } else {
- foreach my $u ($ini .. hex($tab[1])){
- $Compat{ $u } = $dec;
- if(! $compat){
- $Canon{ $u } = $dec;
- $Compos{ $com } = $ini if @$dec > 1;
- }
- }
- }
}
# exhaustive decomposition
foreach my $key (keys %Canon) {
- $Canon{$key} = [ getCanonList($key) ];
+ $Canon{$key} = [ getCanonList($key) ];
}
# exhaustive decomposition
foreach my $key (keys %Compat) {
- $Compat{$key} = [ getCompatList($key) ];
+ $Compat{$key} = [ getCompatList($key) ];
}
sub getCanonList {
- my @src = @_;
- my @dec = map $Canon{$_} ? @{ $Canon{$_} } : $_, @src;
- join(" ",@src) eq join(" ",@dec) ? @dec : getCanonList(@dec);
- # condition @src == @dec is not ok.
+ my @src = @_;
+ my @dec = map $Canon{$_} ? @{ $Canon{$_} } : $_, @src;
+ return join(" ",@src) eq join(" ",@dec) ? @dec : getCanonList(@dec);
+ # condition @src == @dec is not ok.
}
sub getCompatList {
- my @src = @_;
- my @dec = map $Compat{$_} ? @{ $Compat{$_} } : $_, @src;
- join(" ",@src) eq join(" ",@dec) ? @dec : getCompatList(@dec);
- # condition @src == @dec is not ok.
+ my @src = @_;
+ my @dec = map $Compat{$_} ? @{ $Compat{$_} } : $_, @src;
+ return join(" ",@src) eq join(" ",@dec) ? @dec : getCompatList(@dec);
+ # condition @src == @dec is not ok.
}
-sub _getHexArray {
- my $str = shift;
- map hex(), $str =~ /([0-9A-Fa-f]+)/g;
-}
+sub _getHexArray { map hex, $_[0] =~ /([0-9A-Fa-f]+)/g }
sub _U_stringify {
- sprintf '"%s"', join '',
- map sprintf("\\x%02x", $_), unpack 'C*', pack 'U*', @_;
+ sprintf '"%s"', join '',
+ map sprintf("\\x%02x", $_), unpack 'C*', pack 'U*', @_;
}
foreach my $hash (\%Canon, \%Compat) {
- foreach my $key (keys %$hash) {
- $hash->{$key} = _U_stringify( @{ $hash->{$key} } );
- }
+ foreach my $key (keys %$hash) {
+ $hash->{$key} = _U_stringify( @{ $hash->{$key} } );
+ }
}
my $prefix = "UNF_";
-
my $structname = "${prefix}complist";
-our (%Comp1st, %CompList);
+our (%Comp1st, %Comp2nd, %CompList);
-foreach(sort keys %Compos) {
- my @a = unpack('U*', $_);
- my $val = $Compos{$_};
- my $name = sprintf "${structname}_%06x", $a[0];
- $Comp1st{ $a[0] } = $name;
- $CompList{ $name }{ $a[1] } = $val;
+foreach (sort keys %Compos) {
+ my @a = unpack('U*', $_);
+ my $val = $Compos{$_};
+ my $name = sprintf "${structname}_%06x", $a[0];
+ $Comp1st{$a[0]} = $name;
+ $Comp2nd{$a[1]} = 1 if ! $Exclus{$Compos{$_}} && ! $Combin{$a[0]};
+ $CompList{$name}{$a[1]} = $val;
+}
+
+# modern HANGUL JUNGSEONG and HANGUL JONGSEONG jamo
+foreach (0x1161..0x1175, 0x11A8..0x11C2) {
+ $Comp2nd{$_} = 1;
}
my $compinit =
- "typedef struct { UV nextchar; UV composite; } $structname;\n\n";
+ "typedef struct { UV nextchar; UV composite; } $structname;\n\n";
foreach my $i (sort keys %CompList) {
- $compinit .= "$structname $i [] = {\n";
- $compinit .= join ",\n",
- map sprintf("\t{ %d, %d }", $_, $CompList{$i}{$_}),
- sort {$a <=> $b } keys %{ $CompList{$i} };
- $compinit .= ",\n{0,0}\n};\n\n"; # with sentinel
+ $compinit .= "$structname $i [] = {\n";
+ $compinit .= join ",\n",
+ map sprintf("\t{ %d, %d }", $_, $CompList{$i}{$_}),
+ sort {$a <=> $b } keys %{ $CompList{$i} };
+ $compinit .= ",\n{0,0}\n};\n\n"; # with sentinel
}
####################################
-my @Exclus = sort {$a <=> $b} keys %Exclus;
+my @boolfunc = (
+ {
+ name => "Exclusion",
+ type => "bool",
+ hash => \%Exclus,
+ },
+ {
+ name => "Singleton",
+ type => "bool",
+ hash => \%Single,
+ },
+ {
+ name => "NonStDecomp",
+ type => "bool",
+ hash => \%NonStD,
+ },
+ {
+ name => "Comp2nd",
+ type => "bool",
+ hash => \%Comp2nd,
+ },
+);
my $file = "unfexc.h";
open FH, ">$file" or croak "$PACKAGE: $file can't be made";
binmode FH; select FH;
-print "bool isExclusion (UV uv) \n{\nreturn\n\t";
+ print << 'EOF';
+/*
+ * This file is auto-generated by mkheader.
+ * Any changes here will be lost!
+ */
+EOF
-while(@Exclus) {
- my $cur = shift @Exclus;
- if(@Exclus && $cur + 1 == $Exclus[0]) {
- print "($cur <= uv && uv <= ";
- while(@Exclus && $cur + 1 == $Exclus[0]) {
- $cur = shift @Exclus;
+foreach my $tbl (@boolfunc) {
+ my @temp = sort {$a <=> $b} keys %{$tbl->{hash}};
+ my $type = $tbl->{type};
+ my $name = $tbl->{name};
+ print "$type is$name (UV uv)\n{\nreturn\n\t";
+
+ while (@temp) {
+ my $cur = shift @temp;
+ if (@temp && $cur + 1 == $temp[0]) {
+ print "($cur <= uv && uv <= ";
+ while (@temp && $cur + 1 == $temp[0]) {
+ $cur = shift @temp;
+ }
+ print "$cur)";
+ print "\n\t|| " if @temp;
+ } else {
+ print "uv == $cur";
+ print "\n\t|| " if @temp;
+ }
}
- print "$cur)";
- print "\n\t|| " if @Exclus;
- } else {
- print "uv == $cur";
- print "\n\t|| " if @Exclus;
- }
+ print "\n\t? TRUE : FALSE;\n}\n\n";
}
-print "\n\t? TRUE : FALSE;\n}\n\n";
close FH;
+
####################################
my @tripletable = (
- {
- file => "unfcmb",
- name => "combin",
- type => "STDCHAR",
- hash => \%Combin,
- null => 0,
- },
- {
- file => "unfcan",
- name => "canon",
- type => "char*",
- hash => \%Canon,
- null => "NULL",
- },
- {
- file => "unfcpt",
- name => "compat",
- type => "char*",
- hash => \%Compat,
- null => "NULL",
- },
- {
- file => "unfcmp",
- name => "compos",
- type => "$structname *",
- hash => \%Comp1st,
- null => "NULL",
- init => $compinit,
- },
+ {
+ file => "unfcmb",
+ name => "combin",
+ type => "STDCHAR",
+ hash => \%Combin,
+ null => 0,
+ },
+ {
+ file => "unfcan",
+ name => "canon",
+ type => "char*",
+ hash => \%Canon,
+ null => "NULL",
+ },
+ {
+ file => "unfcpt",
+ name => "compat",
+ type => "char*",
+ hash => \%Compat,
+ null => "NULL",
+ },
+ {
+ file => "unfcmp",
+ name => "compos",
+ type => "$structname *",
+ hash => \%Comp1st,
+ null => "NULL",
+ init => $compinit,
+ },
);
foreach my $tbl (@tripletable) {
- my $file = "$tbl->{file}.h";
- my $head = "${prefix}$tbl->{name}";
- my $type = $tbl->{type};
- my $hash = $tbl->{hash};
- my $null = $tbl->{null};
- my $init = $tbl->{init};
-
- open FH, ">$file" or croak "$PACKAGE: $file can't be made";
- binmode FH; select FH;
- my %val;
-
- print FH << 'EOF';
+ my $file = "$tbl->{file}.h";
+ my $head = "${prefix}$tbl->{name}";
+ my $type = $tbl->{type};
+ my $hash = $tbl->{hash};
+ my $null = $tbl->{null};
+ my $init = $tbl->{init};
+
+ open FH, ">$file" or croak "$PACKAGE: $file can't be made";
+ binmode FH; select FH;
+ my %val;
+
+ print FH << 'EOF';
/*
* This file is auto-generated by mkheader.
* Any changes here will be lost!
*/
EOF
- print $init if defined $init;
-
- foreach my $uv (keys %$hash) {
- my @c = unpack 'CCCC', pack 'N', $uv;
- $val{ $c[1] }{ $c[2] }{ $c[3] } = $hash->{$uv};
- }
-
- foreach my $p (sort { $a <=> $b } keys %val) {
- next if ! $val{ $p };
- for(my $r = 0; $r < 256; $r++){
- next if ! $val{ $p }{ $r };
- printf "$type ${head}_%02x_%02x [256] = {\n", $p, $r;
- for(my $c = 0; $c < 256; $c++){
- print "\t", defined $val{$p}{$r}{$c}
- ? "($type)".$val{$p}{$r}{$c} : $null;
- print ',' if $c != 255;
- print "\n" if $c % 8 == 7;
- }
- print "};\n\n";
+ print $init if defined $init;
+
+ foreach my $uv (keys %$hash) {
+ my @c = unpack 'CCCC', pack 'N', $uv;
+ $val{ $c[1] }{ $c[2] }{ $c[3] } = $hash->{$uv};
+ }
+
+ foreach my $p (sort { $a <=> $b } keys %val) {
+ next if ! $val{ $p };
+ for (my $r = 0; $r < 256; $r++) {
+ next if ! $val{ $p }{ $r };
+ printf "$type ${head}_%02x_%02x [256] = {\n", $p, $r;
+ for (my $c = 0; $c < 256; $c++) {
+ print "\t", defined $val{$p}{$r}{$c}
+ ? "($type)".$val{$p}{$r}{$c}
+ : $null;
+ print ',' if $c != 255;
+ print "\n" if $c % 8 == 7;
+ }
+ print "};\n\n";
+ }
+ }
+ foreach my $p (sort { $a <=> $b } keys %val) {
+ next if ! $val{ $p };
+ printf "$type* ${head}_%02x [256] = {\n", $p;
+ for (my $r = 0; $r < 256; $r++) {
+ print $val{ $p }{ $r }
+ ? sprintf("${head}_%02x_%02x", $p, $r)
+ : "NULL";
+ print ',' if $r != 255;
+ print "\n" if $val{ $p }{ $r } || ($r+1) % 8 == 0;
+ }
+ print "};\n\n";
}
- }
- foreach my $p (sort { $a <=> $b } keys %val) {
- next if ! $val{ $p };
- printf "$type* ${head}_%02x [256] = {\n", $p;
- for(my $r = 0; $r < 256; $r++){
- print $val{ $p }{ $r } ? sprintf("${head}_%02x_%02x", $p, $r) : "NULL";
- print ',' if $r != 255;
- print "\n" if $val{ $p }{ $r } || ($r+1) % 8 == 0;
+ print "$type** $head [] = {\n";
+ for (my $p = 0; $p <= 0x10; $p++) {
+ print $val{ $p } ? sprintf("${head}_%02x", $p) : "NULL";
+ print ',' if $p != 0x10;
+ print "\n";
}
print "};\n\n";
- }
- print "$type** $head [] = {\n";
- for(my $p = 0; $p <= 0x10; $p++){
- print $val{ $p } ? sprintf("${head}_%02x", $p) : "NULL";
- print ',' if $p != 0x10;
- print "\n";
- }
- print "};\n\n";
- close FH;
+ close FH;
}
__END__
diff --git a/ext/Unicode/Normalize/t/func.t b/ext/Unicode/Normalize/t/func.t
index c436a7c3dd..86320ccd6f 100644
--- a/ext/Unicode/Normalize/t/func.t
+++ b/ext/Unicode/Normalize/t/func.t
@@ -3,8 +3,8 @@
BEGIN {
if (ord("A") == 193) {
- print "1..0 # Unicode::Normalize not ported to EBCDIC\n";
- exit 0;
+ print "1..0 # Unicode::Normalize not ported to EBCDIC\n";
+ exit 0;
}
}
@@ -13,7 +13,7 @@ BEGIN {
use Test;
use strict;
use warnings;
-BEGIN { plan tests => 6 };
+BEGIN { plan tests => 10 };
use Unicode::Normalize qw(:all);
ok(1); # If we made it this far, we're ok.
@@ -22,7 +22,7 @@ ok(1); # If we made it this far, we're ok.
print getCombinClass( 0) == 0
&& getCombinClass( 768) == 230
&& getCombinClass(1809) == 36
-# && getCombinClass(119143) == 1
+# && getCombinClass(119143) == 1 # U+1D167, a Unicode 3.1 character
? "ok" : "not ok", " 2\n";
print ! defined getCanon( 0)
@@ -68,13 +68,60 @@ print ! defined getComposite( 0, 0)
&& 0xADF8 == getComposite(0x1100, 0x1173)
&& ! defined getComposite(0x1100, 0x11AF)
&& ! defined getComposite(0x1173, 0x11AF)
+ && ! defined getComposite(0xAC00, 0x11A7)
+ && 0xAC01 == getComposite(0xAC00, 0x11A8)
&& 0xAE00 == getComposite(0xADF8, 0x11AF)
? "ok" : "not ok", " 5\n";
print ! isExclusion( 0)
&& ! isExclusion(41)
- && isExclusion(2392)
- && isExclusion(3907)
- && isExclusion(64334)
+ && isExclusion(2392) # DEVANAGARI LETTER QA
+ && isExclusion(3907) # TIBETAN LETTER GHA
+ && isExclusion(64334) # HEBREW LETTER PE WITH RAFE
? "ok" : "not ok", " 6\n";
+print ! isSingleton( 0)
+ && isSingleton(0x212B) # ANGSTROM SIGN
+ ? "ok" : "not ok", " 7\n";
+
+print reorder("") eq ""
+ && reorder(pack("U*", 0x0041, 0x0300, 0x0315, 0x0313, 0x031b, 0x0061))
+ eq pack("U*", 0x0041, 0x031b, 0x0300, 0x0313, 0x0315, 0x0061)
+ && reorder(pack("U*", 0x00C1, 0x0300, 0x0315, 0x0313, 0x031b,
+ 0x0061, 0x309A, 0x3099))
+ eq pack("U*", 0x00C1, 0x031b, 0x0300, 0x0313, 0x0315,
+ 0x0061, 0x309A, 0x3099)
+ ? "ok" : "not ok", " 8\n";
+
+sub answer { defined $_[0] ? $_[0] ? "YES" : "NO" : "MAYBE" }
+
+print answer(checkNFD("")) eq "YES"
+ && answer(checkNFC("")) eq "YES"
+ && answer(checkNFKD("")) eq "YES"
+ && answer(checkNFKC("")) eq "YES"
+ && answer(check("NFD", "")) eq "YES"
+ && answer(check("NFC", "")) eq "YES"
+ && answer(check("NFKD","")) eq "YES"
+ && answer(check("NFKC","")) eq "YES"
+# U+0000 to U+007F are prenormalized in all the normalization forms.
+ && answer(checkNFD("AZaz\t12!#`")) eq "YES"
+ && answer(checkNFC("AZaz\t12!#`")) eq "YES"
+ && answer(checkNFKD("AZaz\t12!#`")) eq "YES"
+ && answer(checkNFKC("AZaz\t12!#`")) eq "YES"
+ && answer(check("D", "AZaz\t12!#`")) eq "YES"
+ && answer(check("C", "AZaz\t12!#`")) eq "YES"
+ && answer(check("KD","AZaz\t12!#`")) eq "YES"
+ && answer(check("KC","AZaz\t12!#`")) eq "YES"
+ ? "ok" : "not ok", " 9\n";
+
+print 1
+ && answer(checkNFD(NFD(pack('U*', 0xC1, 0x1100, 0x1173, 0x11AF)))) eq "YES"
+ && answer(checkNFD(pack('U*', 0x20, 0xC1, 0x1100, 0x1173, 0x11AF))) eq "NO"
+ && answer(checkNFC(pack('U*', 0x20, 0xC1, 0x1173, 0x11AF))) eq "MAYBE"
+ && answer(checkNFC(pack('U*', 0x20, 0xC1, 0xAE00, 0x1100))) eq "YES"
+ && answer(checkNFC(pack('U*', 0x20, 0xC1, 0xAE00, 0x1100, 0x300))) eq "MAYBE"
+ && answer(checkNFC(pack('U*', 0x20, 0xC1, 0xFF71, 0x2025))) eq "YES"
+ && answer(check("NFC", pack('U*', 0x20, 0xC1, 0x212B, 0x300))) eq "NO"
+ && answer(checkNFKD(pack('U*', 0x20, 0xC1, 0xFF71, 0x2025))) eq "NO"
+ && answer(checkNFKC(pack('U*', 0x20, 0xC1, 0xAE00, 0x2025))) eq "NO"
+ ? "ok" : "not ok", " 10\n";
diff --git a/ext/attrs/attrs.xs b/ext/attrs/attrs.xs
index 142f09aeb2..73f100decc 100644
--- a/ext/attrs/attrs.xs
+++ b/ext/attrs/attrs.xs
@@ -28,7 +28,7 @@ import(...)
if (!PL_compcv || !(cv = CvOUTSIDE(PL_compcv)))
croak("can't set attributes outside a subroutine scope");
if (ckWARN(WARN_DEPRECATED))
- Perl_warner(aTHX_ WARN_DEPRECATED,
+ Perl_warner(aTHX_ packWARN(WARN_DEPRECATED),
"pragma \"attrs\" is deprecated, "
"use \"sub NAME : ATTRS\" instead");
for (i = 1; i < items; i++) {
diff --git a/gv.c b/gv.c
index 6fd5ff75df..5b32b0d9f8 100644
--- a/gv.c
+++ b/gv.c
@@ -1821,7 +1821,7 @@ Perl_is_gv_magical(pTHX_ char *name, STRLEN len, U32 flags)
break;
case '\017': /* $^O & $^OPEN */
if (len == 1
- || (len == 4 && strEQ(name, "\027PEN")))
+ || (len == 4 && strEQ(name, "\017PEN")))
{
goto yes;
}
diff --git a/hints/hpux.sh b/hints/hpux.sh
index f2363039b1..aa99f27a9a 100644
--- a/hints/hpux.sh
+++ b/hints/hpux.sh
@@ -31,11 +31,12 @@ else
sed -e 's/HP-//' -e 1q`;
selecttype='int *'
fi
- # For some strange reason, the u32align test from Configure hangs in
- # HP-UX 10.20 since the December 2001 patches. So hint it to avoid
- # the test.
- if [ "$xxOsRevMajor" -le 10 ]; then
- d_u32align=$define
+
+# For some strange reason, the u32align test from Configure hangs in
+# HP-UX 10.20 since the December 2001 patches. So hint it to avoid
+# the test.
+if [ "$xxOsRevMajor" -le 10 ]; then
+ d_u32align=$define
fi
echo "Archname is $archname"
@@ -73,11 +74,11 @@ case `$cc -v 2>&1`"" in
# Done too late in Configure if hinted
gccversion=`$cc --version`
fi
- case "$gccversion" in
- [012]*) # HP-UX and gcc-2.* break UINT32_MAX :-(
- ccflags="$ccflags -DUINT32_MAX_BROKEN"
- ;;
- esac
+ case "$gccversion" in
+ [012]*) # HP-UX and gcc-2.* break UINT32_MAX :-(
+ ccflags="$ccflags -DUINT32_MAX_BROKEN"
+ ;;
+ esac
case "`getconf KERNEL_BITS 2>/dev/null`" in
*64*)
echo "main(){}">try.c
@@ -101,12 +102,12 @@ case `$cc -v 2>&1`"" in
gnu_ld=yes
;;
*) # HPld
- case "$gccversion" in
- [12]*)
- ldflags="$ldflags -Wl,+vnocompatwarnings"
- ccflags="$ccflags -Wl,+vnocompatwarnings"
- ;;
- esac
+ case "$gccversion" in
+ [12]*)
+ ldflags="$ldflags -Wl,+vnocompatwarnings"
+ ccflags="$ccflags -Wl,+vnocompatwarnings"
+ ;;
+ esac
;;
esac
rm -f try.c
@@ -168,16 +169,16 @@ case "$archname" in
so='so'
;;
*)
- case "$uselongdouble" in
- *) ;;
- $define|true|[yY]*)
- cat <<EOM >&4
+ case "$uselongdouble" in
+ *) ;;
+ $define|true|[yY]*)
+ cat <<EOM >&4
*** long doubles are not (yet) supported on HP-UX (any version)
*** Until it does, we cannot continue, aborting.
EOM
- exit 1 ;;
- esac
+ exit 1 ;;
+ esac
;;
esac
@@ -349,14 +350,14 @@ case "$ccisgcc" in
esac
case "$optimize" in
*-O*|\
- *O2*) opt=`echo "$optimize" | sed -e 's/-O/+O2/' -e 's/O2/O1/' -e 's/ *+Onolimit//'`
+ *O2*) opt=`echo "$optimize" | sed -e 's/-O/+O2/' -e 's/O2/O1/' -e 's/ *+Onolimit//'`
;;
- *) opt="$optimize"
- ;;
- esac
+ *) opt="$optimize"
+ ;;
+ esac
if [ $maxdsiz -le 64 ]; then
- toke_cflags="$toke_cflags;optimize=\"$opt\""
- regexec_cflags="optimize=\"$opt\""
+ toke_cflags="$toke_cflags;optimize=\"$opt\""
+ regexec_cflags="optimize=\"$opt\""
fi
case "$archname" in
IA64*)
@@ -397,7 +398,7 @@ ccflags_uselargefiles="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
*) ccflags="$ccflags $ccflags_uselargefiles" ;;
esac
- if test -z "$ccisgcc" -a -z "$gccversion"; then
+ if test -z "$ccisgcc" -a -z "$gccversion"; then
# The strict ANSI mode (-Aa) doesn't like large files.
ccflags=`echo " $ccflags "|sed 's@ -Aa @ @g'`
case "$ccflags" in
@@ -432,10 +433,10 @@ EOM
if [ -f /usr/lib/libcma.sl ]; then
# DCE (from Core OS CD) is installed
- # Check if it is pristine, or patched
- cmavsn=`what /usr/lib/libcma.sl 2>&1 | grep 1996`
- if [ ! -z "$cmavsn" ]; then
- cat <<EOM >&4
+ # Check if it is pristine, or patched
+ cmavsn=`what /usr/lib/libcma.sl 2>&1 | grep 1996`
+ if [ ! -z "$cmavsn" ]; then
+ cat <<EOM >&4

***************************************************************************
@@ -450,8 +451,8 @@ consider to upgrade using patch PHSS_23672 (read README.hpux)
(sleeping for 10 seconds...)
EOM
- sleep 10
- fi
+ sleep 10
+ fi
# It needs # libcma and OLD_PTHREADS_API. Also
# <pthread.h> needs to be #included before any
diff --git a/hints/linux.sh b/hints/linux.sh
index e1c2c28baf..4c40980cb5 100644
--- a/hints/linux.sh
+++ b/hints/linux.sh
@@ -249,18 +249,22 @@ esac
cat > UU/usethreads.cbu <<'EOCBU'
case "$usethreads" in
$define|true|[yY]*)
- ccflags="-D_GNU_SOURCE -D_REENTRANT $ccflags"
+ ccflags="-D_REENTRANT -D_GNU_SOURCE $ccflags"
set `echo X "$libswanted "| sed -e 's/ c / pthread c /'`
shift
libswanted="$*"
+
# Somehow at least in Debian 2.2 these manage to escape
# the #define forest of <features.h> and <time.h> so that
# the hasproto macro of Configure doesn't see these protos,
- # regardless of the -D_GNU_SOURCE that should turn on everything.
+ # even with the -D_GNU_SOURCE.
+
d_asctime_r_proto="$define"
+ d_crypt_r_proto="$define"
d_ctime_r_proto="$define"
d_gmtime_r_proto="$define"
d_localtime_r_proto="$define"
+
;;
esac
EOCBU
diff --git a/hints/solaris_2.sh b/hints/solaris_2.sh
index 37142d04b6..c377f947d6 100644
--- a/hints/solaris_2.sh
+++ b/hints/solaris_2.sh
@@ -409,6 +409,8 @@ EOM
# Ditto. (Solaris 7)
d_readdir_r_proto="$define"
d_readdir64_r_proto="$define"
+ d_tmpnam_r_proto="$define"
+ d_ttyname_r_proto="$define"
;;
esac
diff --git a/intrpvar.h b/intrpvar.h
index 31d644945e..94125c5719 100644
--- a/intrpvar.h
+++ b/intrpvar.h
@@ -515,6 +515,8 @@ PERLVARI(IOpSpace,I32,0)
PERLVAR(IOpSlab,I32 *)
#endif
+PERLVAR(Iwantutf8, bool) /* want utf8 as the default discipline */
+
/* New variables must be added to the very end for binary compatibility.
* XSUB.h provides wrapper functions via perlapi.h that make this
* irrelevant, but not all code may be expected to #include XSUB.h. */
diff --git a/lib/ExtUtils/t/ExtUtils.t b/lib/ExtUtils/t/Constant.t
index e63d1179e5..5b6bf56466 100644
--- a/lib/ExtUtils/t/ExtUtils.t
+++ b/lib/ExtUtils/t/Constant.t
@@ -403,6 +403,7 @@ if ($^O eq 'MSWin32' && $make eq 'nmake') { $make .= " -nologo"; }
my @makeout;
+if ($^O eq 'VMS') { $make .= ' all'; }
print "# make = '$make'\n";
@makeout = `$make`;
if ($?) {
@@ -413,6 +414,8 @@ if ($?) {
print "ok 3\n";
}
+if ($^O eq 'VMS') { $make =~ s{ all}{}; }
+
if ($Config{usedl}) {
print "ok 4\n";
} else {
diff --git a/lib/Getopt/Long.pm b/lib/Getopt/Long.pm
index f1ac4f554f..86dd61f062 100644
--- a/lib/Getopt/Long.pm
+++ b/lib/Getopt/Long.pm
@@ -2,12 +2,12 @@
package Getopt::Long;
-# RCS Status : $Id: GetoptLong.pm,v 2.54 2002-02-20 15:00:10+01 jv Exp $
+# RCS Status : $Id: GetoptLong.pm,v 2.55 2002-03-13 13:06:44+01 jv Exp $
# Author : Johan Vromans
# Created On : Tue Sep 11 15:00:12 1990
# Last Modified By: Johan Vromans
-# Last Modified On: Wed Feb 20 15:00:04 2002
-# Update Count : 1045
+# Last Modified On: Wed Mar 13 12:54:01 2002
+# Update Count : 1070
# Status : Released
################ Copyright ################
@@ -35,10 +35,10 @@ use 5.004;
use strict;
use vars qw($VERSION);
-$VERSION = 2.28;
+$VERSION = 2.29;
# For testing versions only.
use vars qw($VERSION_STRING);
-$VERSION_STRING = "2.28";
+$VERSION_STRING = "2.29";
use Exporter;
@@ -70,7 +70,6 @@ sub ConfigDefaults ();
sub ParseOptionSpec ($$);
sub OptCtl ($);
sub FindOption ($$$$);
-sub Croak (@); # demand loading the real Croak
################ Local Variables ################
@@ -168,8 +167,8 @@ sub new {
}
if ( %atts ) { # Oops
- Getopt::Long::Croak(__PACKAGE__.": unhandled attributes: ".
- join(" ", sort(keys(%atts))));
+ die(__PACKAGE__.": unhandled attributes: ".
+ join(" ", sort(keys(%atts)))."\n");
}
$self;
@@ -261,7 +260,7 @@ sub GetOptions {
$error = '';
print STDERR ("GetOpt::Long $Getopt::Long::VERSION (",
- '$Revision: 2.54 $', ") ",
+ '$Revision: 2.55 $', ") ",
"called from package \"$pkg\".",
"\n ",
"ARGV: (@ARGV)",
@@ -504,7 +503,7 @@ sub GetOptions {
else {
print STDERR ("Invalid REF type \"", ref($linkage{$opt}),
"\" in linkage\n");
- Croak ("Getopt::Long -- internal error!\n");
+ die("Getopt::Long -- internal error!\n");
}
}
# No entry in linkage means entry in userlinkage.
@@ -713,10 +712,8 @@ sub ParseOptionSpec ($$) {
}
if ( $dups && $^W ) {
- require 'Carp.pm';
- $Carp::CarpLevel = 2;
foreach ( split(/\n+/, $dups) ) {
- Carp::cluck($_);
+ warn($_."\n");
}
}
($names[0], $orig);
@@ -757,7 +754,7 @@ sub FindOption ($$$$) {
#### Look it up ###
- my $tryopt; # option to try
+ my $tryopt = $opt; # option to try
if ( $bundling && $starter eq '-' ) {
@@ -1011,7 +1008,7 @@ sub FindOption ($$$$) {
}
}
else {
- Croak ("GetOpt::Long internal error (Can't happen)\n");
+ die("GetOpt::Long internal error (Can't happen)\n");
}
return (1, $opt, $ctl, $arg, $key);
}
@@ -1090,7 +1087,7 @@ sub Configure (@) {
# Turn into regexp. Needs to be parenthesized!
$genprefix = "(" . quotemeta($genprefix) . ")";
eval { '' =~ /$genprefix/; };
- Croak ("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
+ die("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
}
elsif ( $try =~ /^prefix_pattern=(.+)$/ && $action ) {
$genprefix = $1;
@@ -1098,13 +1095,13 @@ sub Configure (@) {
$genprefix = "(" . $genprefix . ")"
unless $genprefix =~ /^\(.*\)$/;
eval { '' =~ /$genprefix/; };
- Croak ("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
+ die("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
}
elsif ( $try eq 'debug' ) {
$debug = $action;
}
else {
- Croak ("Getopt::Long: unknown config parameter \"$opt\"")
+ die("Getopt::Long: unknown config parameter \"$opt\"")
}
}
$prevconfig;
@@ -1115,13 +1112,6 @@ sub config (@) {
Configure (@_);
}
-# To prevent Carp from being loaded unnecessarily.
-sub Croak (@) {
- require 'Carp.pm';
- $Carp::CarpLevel = 1;
- Carp::croak(@_);
-};
-
################ Documentation ################
=head1 NAME
diff --git a/lib/Getopt/Long/CHANGES b/lib/Getopt/Long/CHANGES
index 004dfab9f8..95489d5797 100644
--- a/lib/Getopt/Long/CHANGES
+++ b/lib/Getopt/Long/CHANGES
@@ -1,3 +1,12 @@
+Changes in version 2.29
+-----------------------
+
+* Fix a problem where options were not recognized when both
+ auto_abbrev and ignore_case were disabled. Thanks to Seth Robertson
+ <seth@systemdetection.com>.
+
+* Remove Carp.
+
Changes in version 2.28
-----------------------
diff --git a/lib/Pod/Html.pm b/lib/Pod/Html.pm
index dd2f0bf439..1ae81c9e60 100644
--- a/lib/Pod/Html.pm
+++ b/lib/Pod/Html.pm
@@ -492,8 +492,6 @@ END_OF_HEAD
if (/^=(head[1-6])\s+(.*\S)/s) { # =head[1-6] heading
process_head( $1, $2, $doindex && $index );
} elsif (/^=item\s*(.*\S)?/sm) { # =item text
- warn "$0: $podfile: =item without bullet, number or text"
- . " in paragraph $paragraph.\n" if !defined($1) or $1 eq '';
$need_dd = process_item( $1 );
$after_item = 1;
} elsif (/^=over\s*(.*)/) { # =over N
diff --git a/lib/Tie/File/t/30_defer.t b/lib/Tie/File/t/30_defer.t
index 4c32825fe2..a684d675d5 100644
--- a/lib/Tie/File/t/30_defer.t
+++ b/lib/Tie/File/t/30_defer.t
@@ -223,6 +223,7 @@ undef $o;
untie @a;
# (79) We can't use check_contents any more, because the object is dead
open F, "< $file" or die;
+binmode F;
{ local $/ ; $z = <F> }
close F;
my $x = join("$:", qw(flushed recordB recordE
diff --git a/lib/dumpvar.pl b/lib/dumpvar.pl
index 2fb1f695ce..12c9e91f0a 100644
--- a/lib/dumpvar.pl
+++ b/lib/dumpvar.pl
@@ -250,6 +250,13 @@ sub unwrap {
}
}
+sub matchlex {
+ (my $var = $_[0]) =~ s/.//;
+ $var eq $_[1] or
+ ($_[1] =~ /^([!~])(.)([\x00-\xff]*)/) and
+ ($1 eq '!') ^ (eval { $var =~ /$2$3/ });
+}
+
sub matchvar {
$_[0] eq $_[1] or
($_[1] =~ /^([!~])(.)([\x00-\xff]*)/) and
@@ -326,6 +333,36 @@ sub dumpglob {
}
}
+sub dumplex {
+ return if $DB::signal;
+ my ($key, $val, $m, @vars) = @_;
+ return if @vars && !grep( matchlex($key, $_), @vars );
+ local %address;
+ my $off = 0; # It reads better this way
+ my $fileno;
+ if (UNIVERSAL::isa($val,'ARRAY')) {
+ print( (' ' x $off) . "$key = (\n" );
+ unwrap($val,3+$off,$m) ;
+ print( (' ' x $off) . ")\n" );
+ }
+ elsif (UNIVERSAL::isa($val,'HASH')) {
+ print( (' ' x $off) . "$key = (\n" );
+ unwrap($val,3+$off,$m) ;
+ print( (' ' x $off) . ")\n" );
+ }
+ elsif (UNIVERSAL::isa($val,'IO')) {
+ print( (' ' x $off) . "FileHandle($key) => fileno($fileno)\n" );
+ }
+ # No lexical subroutines yet...
+ # elsif (UNIVERSAL::isa($val,'CODE')) {
+ # dumpsub($off, $$val);
+ # }
+ else {
+ print( (' ' x $off) . &unctrl($key), " = " );
+ DumpElem $$val, 3+$off, $m;
+ }
+}
+
sub CvGV_name_or_bust {
my $in = shift;
return if $skipCvGV; # Backdoor to avoid problems if XS broken...
diff --git a/lib/open.pm b/lib/open.pm
index 7d59d9abfc..f66cb5b0ed 100644
--- a/lib/open.pm
+++ b/lib/open.pm
@@ -48,7 +48,7 @@ sub _get_locale_encoding {
} elsif ($country_language =~ /^zh_CN|chin(?:a|ese)?$/i) {
$locale_encoding = 'euc-cn';
} elsif ($country_language =~ /^zh_TW|taiwan(?:ese)?$/i) {
- $locale_encoding = 'big5';
+ $locale_encoding = 'euc-tw';
}
croak "Locale encoding 'euc' too ambiguous"
if $locale_encoding eq 'euc';
@@ -90,7 +90,10 @@ sub import {
}
$std = 1;
} else {
- unless(PerlIO::Layer::->find($layer)) {
+ my $target = $layer; # the layer name itself
+ $target =~ s/^(\w+)\(.+\)$/$1/; # strip parameters
+
+ unless(PerlIO::Layer::->find($target)) {
carp("Unknown discipline layer '$layer'");
}
}
@@ -242,6 +245,11 @@ pragma.
=back
+If your locale environment variables (LANGUAGE, LC_ALL, LC_CTYPE, LANG)
+contain the strings 'UTF-8' or 'UTF8' (case-insensitive matching),
+the default encoding of your STDIN, STDOUT, and STDERR, and of
+B<any subsequent file open>, is UTF-8.
+
Directory handles may also support disciplines in future.
=head1 NONPERLIO FUNCTIONALITY
diff --git a/lib/perl5db.pl b/lib/perl5db.pl
index 158510dfeb..093fc2cb1e 100644
--- a/lib/perl5db.pl
+++ b/lib/perl5db.pl
@@ -316,6 +316,8 @@ sub eval {
# + m(methods), M(modules) # ... (was m,v)
# + o(option) # lc (was O)
# + v(view code), V(view Variables) # ... (was w,V)
+# Changes: 1.18: Mar 17, 2002 Richard Foley <richard.foley@rfi.net>
+# + fixed missing cmd_O bug
#
####################################################################
@@ -1441,7 +1443,7 @@ sub cmd_wrapper {
my $call = 'cmd_'.(
$set{$CommandSet}{$cmd} || $cmd
);
- # print "rjsf: cmd_wrapper($cmd): $CommandSet($set{$CommandSet}{$cmd}) => call($call)\n";
+ # print "cmd_wrapper($cmd): $CommandSet($set{$CommandSet}{$cmd}) => call($call)\n";
return &$call($line, $dblineno);
}
@@ -1885,6 +1887,12 @@ sub cmd_o {
}
}
+sub cmd_O {
+ print $OUT "The old O command is now the o command.\n"; # hint
+ print $OUT "Use 'h' to get current command help synopsis or\n"; #
+ print $OUT "use 'o CommandSet=pre580' to revert to old usage\n"; #
+}
+
sub cmd_v {
my $line = shift;
@@ -2809,6 +2817,7 @@ I<Data Examination:> B<expr> Execute perl code, also see: B<s>,B<n>,B<t>
B<S> [[B<!>]I<pat>] List subroutine names [not] matching pattern
B<V> [I<Pk> [I<Vars>]] List Variables in Package. Vars can be ~pattern or !pattern.
B<X> [I<Vars>] Same as \"B<V> I<current_package> [I<Vars>]\".
+ B<y> [I<n> [I<Vars>]] List lexicals in higher scope <n>. Vars same as B<V>.
For more help, type B<h> I<cmd_letter>, or run B<$doccmd perldebug> for all docs.
END_SUM
# ')}}; # Fix balance of vi % matching
@@ -2976,6 +2985,7 @@ I<Data Examination:> B<expr> Execute perl code, also see: B<s>,B<n>,B<t>
B<S> [[B<!>]I<pat>] List subroutine names [not] matching pattern
B<V> [I<Pk> [I<Vars>]] List Variables in Package. Vars can be ~pattern or !pattern.
B<X> [I<Vars>] Same as \"B<V> I<current_package> [I<Vars>]\".
+ B<y> [I<n> [I<Vars>]] List lexicals in higher scope <n>. Vars same as B<V>.
For more help, type B<h> I<cmd_letter>, or run B<$doccmd perldebug> for all docs.
END_SUM
# ')}}; # Fix balance of vi % matching
diff --git a/locale.c b/locale.c
index 22e903037a..2c84ab5cb2 100644
--- a/locale.c
+++ b/locale.c
@@ -25,6 +25,10 @@
# include <locale.h>
#endif
+#ifdef I_LANGINFO
+# include <langinfo.h>
+#endif
+
/*
* Standardize the locale name from a string returned by 'setlocale'.
*
@@ -462,10 +466,45 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
#ifdef USE_LOCALE_NUMERIC
new_numeric(curnum);
#endif /* USE_LOCALE_NUMERIC */
+
}
#endif /* USE_LOCALE */
+ {
+ bool wantutf8 = FALSE;
+ char *codeset = NULL;
+#if defined(HAS_NL_LANGINFO) && defined(CODESET)
+ codeset = nl_langinfo(CODESET);
+#endif
+ if (codeset &&
+ (ibcmp(codeset, "UTF-8", 5) == 0 ||
+ ibcmp(codeset, "UTF8", 4) == 0))
+ wantutf8 = TRUE;
+#ifdef __GLIBC__
+ if (!wantutf8 && language &&
+ (ibcmp(language, "UTF-8", 5) == 0 ||
+ ibcmp(language, "UTF8", 4) == 0))
+ wantutf8 = TRUE;
+#endif
+ if (!wantutf8 && lc_all &&
+ (ibcmp(lc_all, "UTF-8", 5) == 0 ||
+ ibcmp(lc_all, "UTF8", 4) == 0))
+ wantutf8 = TRUE;
+#ifdef USE_LOCALE_CTYPE
+ if (!wantutf8 && curctype &&
+ (ibcmp(curctype, "UTF-8", 5) == 0 ||
+ ibcmp(curctype, "UTF8", 4) == 0))
+ wantutf8 = TRUE;
+#endif
+ if (!wantutf8 && lang &&
+ (ibcmp(lang, "UTF-8", 5) == 0 ||
+ ibcmp(lang, "UTF8", 4) == 0))
+ wantutf8 = TRUE;
+ if (wantutf8)
+ PL_wantutf8 = TRUE;
+ }
+
#ifdef USE_LOCALE_CTYPE
if (curctype != NULL)
Safefree(curctype);
diff --git a/os2/os2.c b/os2/os2.c
index 38da198434..9b1f3483a0 100644
--- a/os2/os2.c
+++ b/os2/os2.c
@@ -682,7 +682,7 @@ do_spawn_ve(pTHX_ SV *really, U32 flag, U32 execf, char *inicmd, U32 addflag)
if (flag == P_NOWAIT)
flag = P_PM;
else if ((flag & 7) != P_PM && (flag & 7) != P_SESSION)
- Perl_warner(aTHX_ WARN_EXEC, "Starting PM process with flag=%d, mytype=%d",
+ Perl_warner(aTHX_ packWARN(WARN_EXEC), "Starting PM process with flag=%d, mytype=%d",
flag, os2_mytype);
}
}
@@ -693,7 +693,7 @@ do_spawn_ve(pTHX_ SV *really, U32 flag, U32 execf, char *inicmd, U32 addflag)
if (flag == P_NOWAIT)
flag = P_SESSION;
else if ((flag & 7) != P_SESSION)
- Perl_warner(aTHX_ WARN_EXEC, "Starting Full Screen process with flag=%d, mytype=%d",
+ Perl_warner(aTHX_ packWARN(WARN_EXEC), "Starting Full Screen process with flag=%d, mytype=%d",
flag, os2_mytype);
}
}
@@ -790,7 +790,7 @@ do_spawn_ve(pTHX_ SV *really, U32 flag, U32 execf, char *inicmd, U32 addflag)
}
if (PerlIO_close(file) != 0) { /* Failure */
panic_file:
- Perl_warner(aTHX_ WARN_EXEC, "Error reading \"%s\": %s",
+ Perl_warner(aTHX_ packWARN(WARN_EXEC), "Error reading \"%s\": %s",
scr, Strerror(errno));
buf = ""; /* Not #! */
goto doshell_args;
@@ -834,7 +834,7 @@ do_spawn_ve(pTHX_ SV *really, U32 flag, U32 execf, char *inicmd, U32 addflag)
*s++ = 0;
}
if (nargs == -1) {
- Perl_warner(aTHX_ WARN_EXEC, "Too many args on %.*s line of \"%s\"",
+ Perl_warner(aTHX_ packWARN(WARN_EXEC), "Too many args on %.*s line of \"%s\"",
s1 - buf, buf, scr);
nargs = 4;
argsp = fargs;
@@ -937,7 +937,7 @@ do_spawn_ve(pTHX_ SV *really, U32 flag, U32 execf, char *inicmd, U32 addflag)
}
}
if (rc < 0 && ckWARN(WARN_EXEC))
- Perl_warner(aTHX_ WARN_EXEC, "Can't %s \"%s\": %s\n",
+ Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s \"%s\": %s\n",
((execf != EXECF_EXEC && execf != EXECF_TRUEEXEC)
? "spawn" : "exec"),
PL_Argv[0], Strerror(errno));
@@ -1046,7 +1046,7 @@ do_spawn3(pTHX_ char *cmd, int execf, int flag)
rc = result(aTHX_ P_WAIT,
spawnl(P_NOWAIT,shell,shell,copt,cmd,(char*)0));
if (rc < 0 && ckWARN(WARN_EXEC))
- Perl_warner(aTHX_ WARN_EXEC, "Can't %s \"%s\": %s",
+ Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s \"%s\": %s",
(execf == EXECF_SPAWN ? "spawn" : "exec"),
shell, Strerror(errno));
if (rc < 0)
diff --git a/patchlevel.h b/patchlevel.h
index e78d6805ec..1a321b01e7 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -79,7 +79,7 @@
#if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT)
static char *local_patches[] = {
NULL
- ,"DEVEL15299"
+ ,"DEVEL15372"
,NULL
};
diff --git a/perl.c b/perl.c
index ebf5ca121d..c8a63709b0 100644
--- a/perl.c
+++ b/perl.c
@@ -1428,6 +1428,22 @@ print \" \\@INC:\\n @INC\\n\";");
if (!PL_do_undump)
init_postdump_symbols(argc,argv,env);
+ if (PL_wantutf8) { /* Requires init_predump_symbols(). */
+ IO* io;
+ PerlIO* fp;
+ SV* sv;
+ if (PL_stdingv && (io = GvIO(PL_stdingv)) && (fp = IoIFP(io)))
+ PerlIO_binmode(aTHX_ fp, IoTYPE(io), 0, ":utf8");
+ if (PL_defoutgv && (io = GvIO(PL_defoutgv)) && (fp = IoOFP(io)))
+ PerlIO_binmode(aTHX_ fp, IoTYPE(io), 0, ":utf8");
+ if (PL_stderrgv && (io = GvIO(PL_stderrgv)) && (fp = IoOFP(io)))
+ PerlIO_binmode(aTHX_ fp, IoTYPE(io), 0, ":utf8");
+ if ((sv = GvSV(gv_fetchpv("\017PEN", TRUE, SVt_PV)))) {
+ sv_setpvn(sv, ":utf8\0:utf8", 11);
+ SvSETMAGIC(sv);
+ }
+ }
+
init_lexer();
/* now parse the script */
diff --git a/perlapi.h b/perlapi.h
index 82af7c5ce1..5070d1dbe7 100644
--- a/perlapi.h
+++ b/perlapi.h
@@ -606,6 +606,8 @@ END_EXTERN_C
#define PL_utf8_xdigit (*Perl_Iutf8_xdigit_ptr(aTHX))
#undef PL_uudmap
#define PL_uudmap (*Perl_Iuudmap_ptr(aTHX))
+#undef PL_wantutf8
+#define PL_wantutf8 (*Perl_Iwantutf8_ptr(aTHX))
#undef PL_warnhook
#define PL_warnhook (*Perl_Iwarnhook_ptr(aTHX))
#undef PL_widesyscalls
diff --git a/pod/perldebguts.pod b/pod/perldebguts.pod
index f507ac8997..cde70b2fb0 100644
--- a/pod/perldebguts.pod
+++ b/pod/perldebguts.pod
@@ -111,15 +111,15 @@ calls are not possible, even though C<&DB::sub> exists.
=head2 Writing Your Own Debugger
=head3 Environment Variables
-
+
The C<PERL5DB> environment variable can be used to define a debugger.
For example, the minimal "working" debugger (it actually doesn't do anything)
consists of one line:
-
+
sub DB::DB {}
It can easily be defined like this:
-
+
$ PERL5DB="sub DB::DB {}" perl -d your-script
Another brief debugger, slightly more useful, can be created
@@ -130,9 +130,9 @@ with only the line:
This debugger prints a number which increments for each statement
encountered and waits for you to hit a newline before continuing
to the next statement.
-
+
The following debugger is actually useful:
-
+
{
package DB;
sub DB {}
diff --git a/pod/perldebug.pod b/pod/perldebug.pod
index 5d0ef3f54d..45c2420472 100644
--- a/pod/perldebug.pod
+++ b/pod/perldebug.pod
@@ -114,6 +114,16 @@ This is similar to calling the C<x> command on each applicable var.
Same as C<V currentpackage [vars]>.
+=item y [level [vars]]
+
+Display all (or some) lexical variables (mnemonic: C<mY> variables)
+in the current scope or I<level> scopes higher. You can limit the
+variables that you see with I<vars> which works exactly as it does
+for the C<V> and C<X> commands. Requires the C<PadWalker> module
+version 0.08 or higher; will warn if this isn't installed. Output
+is pretty-printed in the same style as for C<V> and the format is
+controlled by the same options.
+
=item T
Produce a stack backtrace. See below for details on its output.
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index f973b31264..36c7144496 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -312,6 +312,13 @@ The list form of C<open> is now implemented for pipes (at least on UNIX):
creates a pipe, and runs the equivalent of exec('cat', '/etc/motd') in
the child process.
+=item *
+
+If your locale environment variables (LANGUAGE, LC_ALL, LC_CTYPE, LANG)
+contain the strings 'UTF-8' or 'UTF8' (case-insensitive matching),
+the default encoding of your STDIN, STDOUT, and STDERR, and of
+B<any subsequent file open>, is UTF-8.
+
=back
=head2 Safe Signals
@@ -334,7 +341,8 @@ out from potentially blocking operations should still work, though.
Unicode in general should be now much more usable than in Perl 5.6.0
(or even in 5.6.1). Unicode can be used in hash keys, Unicode in
regular expressions should work now, Unicode in tr/// should work now,
-Unicode in I/O should work now.
+Unicode in I/O should work now. See L<perluniintro> for introduction
+and L<perlunicode> for details.
=over 4
@@ -619,9 +627,11 @@ included since its further use is discouraged.
C<Encode>, by Nick Ing-Simmons, provides a mechanism to translate
between different character encodings. Support for Unicode,
ISO-8859-*, ASCII, CP*, KOI8-R, and three variants of EBCDIC are
-compiled in to the module. Several other encodings (like Japanese,
-Chinese, and MacIntosh encodings) are included and will be loaded at
-runtime. See L<Encode>.
+compiled in to the module. Several other encodings (like Chinese,
+Japanese, Korean, and MacIntosh encodings) are included and will be
+loaded at runtime. (For space considerations, the largest Chinese
+encodings have been separated into their own CPAN module,
+Encode::HanExtra). See L<Encode>.
Any encoding supported by Encode module is also available to the
":encoding()" layer if PerlIO is used.
@@ -2369,11 +2379,11 @@ respectively.
=item *
-perl5db.pl has been modified to present a more consistent commands
-interface, via (CommandSet=580). perl5db.t was also added to test the
-changes, and as a placeholder for further tests.
+The debugger (perl5db.pl) has been modified to present a more
+consistent commands interface, via (CommandSet=580). perl5db.t was
+also added to test the changes, and as a placeholder for further tests.
-See L<perldebug>
+See L<perldebug>.
=item *
@@ -2384,6 +2394,11 @@ depth of at most I<N> levels.
=item *
+The debugger can now show lexical variables if you have the CPAN
+module PadWalker installed.
+
+=item *
+
If an attempt to use a (non-blessed) reference as an array index
is made, a warning is given.
@@ -2608,21 +2623,22 @@ If you are building on a UFS partition, you will also probably see
t/op/stat.t subtest #9 fail. This is caused by Darwin's UFS not
supporting inode change time.
-=head2 OS/390
+=head2 z/OS (OS/390)
-OS/390 has rather many test failures but the situation is actually
+z/OS has rather many test failures but the situation is actually
better than it was in 5.6.0, it's just that so many new modules and
tests have been added.
- ../ext/B/t/deparse.t 17 1 5.88% 14
+ Failed Test Stat Wstat Total Fail Failed List of Failed
+ -------------------------------------------------------------------------
../ext/Data/Dumper/t/dumper.t 321 2 0.62% 311 314
../ext/IO/lib/IO/t/io_unix.t 5 4 80.00% 2-5
../lib/utf8.t 94 13 13.83% 27 30-31 43 46 73
76 79 82 85 88 91
94
../lib/Benchmark.t 1 256 159 1 0.63% 75
+ ../lib/ExtUtils/t/Constant.t 27 19 70.37% 5-23
../lib/ExtUtils/t/Embed.t 9 9 100.00% 1-9
- ../lib/ExtUtils/t/ExtUtils.t 27 19 70.37% 5-23
op/pat.t 864 9 1.04% 242-243 665 776
785 832-834 845
op/sprintf.t 224 3 1.34% 98 100 136
@@ -2661,6 +2677,8 @@ threads are considered fundamentally broken.
=head2 UNICOS
+ Failed Test Stat Wstat Total Fail Failed List of Failed
+ -------------------------------------------------------------------------
../ext/Socket/socketpair.t 1 256 45 1 2.22% 12
../lib/Math/Trig.t 26 1 3.85% 25
../lib/warnings.t 460 1 0.22% 425
@@ -2688,12 +2706,12 @@ needing further debugging and/or porting work.
=head2 Win32
In multi-CPU boxes there are some problems with the I/O buffering:
-some output may appear twice. The Win32 following failures are known
+some output may appear twice. The following Win32 failures are known
as of 5.7.3:
- ..\ext/Encode/t/JP.t 4 1024 22 4 18.18% 9 14 18 21
+ Failed Test Stat Wstat Total Fail Failed List of Failed
+ -------------------------------------------------------------------------
..\ext/threads/t/end.t 6 4 66.67% 3-6
- ..\lib/blib.t 3 768 7 3 42.86% 1 4-5
=head2 Localising a Tied Variable Leaks Memory
diff --git a/pod/perlebcdic.pod b/pod/perlebcdic.pod
index 0053d91a38..a9f1d0fc3f 100644
--- a/pod/perlebcdic.pod
+++ b/pod/perlebcdic.pod
@@ -117,6 +117,24 @@ all the possible code points, pack("U",ord("A")) would in EBCDIC
equal I<A with acute> or chr(101), and unpack("U", "A") would equal
65, or I<non-breaking space>, not 193, or ord "A".)
+=head2 Remaining Perl Unicode problems in EBCDIC
+
+=over 4
+
+=item *
+
+Many of the remaining seem to be related to case-insensitive matching:
+for example, C<< /[\x{131}]/ >> (LATIN SMALL LETTER DOTLESS I) does
+not match "I" case-insensitively, as it should under Unicode.
+(The match succeeds in ASCII-derived platforms.)
+
+=item *
+
+The extensions Unicode::Collate and Unicode::Normalized are not
+supported under EBCDIC, likewise for the encoding pragma.
+
+=back
+
=head2 Unicode and UTF
UTF is a Unicode Transformation Format. UTF-8 is a Unicode conforming
diff --git a/pod/perlfaq5.pod b/pod/perlfaq5.pod
index 986333465b..701a757558 100644
--- a/pod/perlfaq5.pod
+++ b/pod/perlfaq5.pod
@@ -496,7 +496,6 @@ literals
open FILE, "<", " file "; # filename is " file "
open FILE, ">", ">file"; # filename is ">file"
-
It may be a lot clearer to use sysopen(), though:
diff --git a/pod/perlfaq6.pod b/pod/perlfaq6.pod
index c4512e695a..dd76588ec0 100644
--- a/pod/perlfaq6.pod
+++ b/pod/perlfaq6.pod
@@ -9,7 +9,7 @@ littered with answers involving regular expressions. For example,
decoding a URL and checking whether something is a number are handled
with regular expressions, but those answers are found elsewhere in
this document (in L<perlfaq9>: ``How do I decode or create those %-encodings
-on the web'' and L<perfaq4>: ``How do I determine whether a scalar is
+on the web'' and L<perlfaq4>: ``How do I determine whether a scalar is
a number/whole/integer/float'', to be precise).
=head2 How can I hope to use regular expressions without creating illegible and unmaintainable code?
diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod
index b32cd9464c..9e667ab8c7 100644
--- a/pod/perlfunc.pod
+++ b/pod/perlfunc.pod
@@ -3433,10 +3433,10 @@ aligned at a multiple of C<count> bytes. For example, to pack() or
unpack() C's C<struct {char c; double d; char cc[2]}> one may need to
use the template C<C x![d] d C[2]>; this assumes that doubles must be
aligned on the double's size.
-
+
For alignment commands C<count> of 0 is equivalent to C<count> of 1;
both result in no-ops.
-
+
=item *
A comment in a TEMPLATE starts with C<#> and goes to the end of line.
diff --git a/pod/perlguts.pod b/pod/perlguts.pod
index cda5285d7d..59c9fb0b08 100644
--- a/pod/perlguts.pod
+++ b/pod/perlguts.pod
@@ -843,7 +843,7 @@ stored in the C<mg_type> field. The value of C<how> should be chosen
from the set of macros C<PERL_MAGIC_foo> found perl.h. Note that before
these macros were added, Perl internals used to directly use character
literals, so you may occasionally come across old code or documentation
-referrring to 'U' magic rather than C<PERL_MAGIC_uvar> for example.
+referring to 'U' magic rather than C<PERL_MAGIC_uvar> for example.
The C<obj> argument is stored in the C<mg_obj> field of the C<MAGIC>
structure. If it is not the same as the C<sv> argument, the reference
diff --git a/pod/perllocale.pod b/pod/perllocale.pod
index 43ffe584ac..5605428dd5 100644
--- a/pod/perllocale.pod
+++ b/pod/perllocale.pod
@@ -985,6 +985,15 @@ nations, when we all know that the world can equally well be divided
into bankers, bikers, gamers, and so on. But, for now, it's the only
standard we've got. This may be construed as a bug.
+=head1 Unicode and UTF-8
+
+The support of Unicode is new starting from Perl version 5.6, and
+more fully implemented in the version 5.8. See L<perluniintro> and
+L<perlunicode> for more details.
+
+Usually locale settings and Unicode do not affect each other, but
+there are exceptions, see L<perlunicode/Locales> for examples.
+
=head1 BUGS
=head2 Broken systems
@@ -1000,7 +1009,8 @@ operating system upgrade.
=head1 SEE ALSO
-L<I18N::Langinfo>, L<POSIX/isalnum>, L<POSIX/isalpha>,
+L<I18N::Langinfo>, L<perluniintro>, L<perlunicode>, L<open>,
+L<POSIX/isalnum>, L<POSIX/isalpha>,
L<POSIX/isdigit>, L<POSIX/isgraph>, L<POSIX/islower>,
L<POSIX/isprint>, L<POSIX/ispunct>, L<POSIX/isspace>,
L<POSIX/isupper>, L<POSIX/isxdigit>, L<POSIX/localeconv>,
diff --git a/pod/perlport.pod b/pod/perlport.pod
index 9ca3f15e8c..ef05ecf349 100644
--- a/pod/perlport.pod
+++ b/pod/perlport.pod
@@ -1440,6 +1440,9 @@ Only good for changing "owner" and "other" read-write access. (S<RISC OS>)
Access permissions are mapped onto VOS access-control list changes. (VOS)
+The actual permissions set depend on the value of the C<CYGWIN>
+in the SYSTEM environment settings. (Cygwin)
+
=item chown LIST
Not implemented. (S<Mac OS>, Win32, Plan9, S<RISC OS>, VOS)
diff --git a/pod/perltoc.pod b/pod/perltoc.pod
index dcc990738f..19c1be2fcd 100644
--- a/pod/perltoc.pod
+++ b/pod/perltoc.pod
@@ -2467,6 +2467,8 @@ LC_NUMERIC, LC_TIME, LANG
=back
+=item Unicode and UTF-8
+
=item BUGS
=over 4
@@ -2495,6 +2497,8 @@ LC_NUMERIC, LC_TIME, LANG
=item Perl's Unicode Model
+=item Unicode and EBCDIC
+
=item Creating Unicode
=item Handling Unicode
@@ -2562,12 +2566,16 @@ to enable UTF-8/UTF-EBCDIC in scripts
=item Unicode in Perl on EBCDIC
+=item Locales
+
=item Using Unicode in XS
=back
=item BUGS
+=item SEE ALSO
+
=back
=head2 perlebcdic - Considerations for running Perl on EBCDIC platforms
@@ -2596,6 +2604,10 @@ to enable UTF-8/UTF-EBCDIC in scripts
=item POSIX-BC
+=item Unicode code points versus EBCDIC code points
+
+=item Remaining Perl Unicode problems in EBCDIC
+
=item Unicode and UTF
=item Using Encode
@@ -2781,49 +2793,55 @@ module (sometimes unnecessary), B<INSTALL> the module
=item Pragmatic Modules
-attributes, autouse, base, blib, bytes, charnames, constant, diagnostics,
-encoding, fields, filetest, integer, less, locale, open, overload, sigtrap,
-sort, strict, subs, utf8, vars, vmsish, warnings, warnings::register
+attributes, attrs, autouse, base, blib, bytes, charnames, constant,
+diagnostics, encoding, fields, filetest, if, integer, less, locale, open,
+ops, overload, re, sigtrap, sort, strict, subs, threads, utf8, vars,
+vmsish, warnings, warnings::register
=item Standard Modules
-AnyDBM_File, Attribute::Handlers, AutoLoader, AutoSplit, Benchmark, CGI,
-CGI::Apache, CGI::Carp, CGI::Cookie, CGI::Fast, CGI::Pretty, CGI::Push,
-CGI::Switch, CGI::Util, CPAN, CPAN::FirstTime, CPAN::Nox, Carp,
-Carp::Heavy, Class::ISA, Class::Struct, Cwd, DB, Devel::SelfStubber,
-Digest, DirHandle, Dumpvalue, English, Env, Exporter, Exporter::Heavy,
+AnyDBM_File, Attribute::Handlers, AutoLoader, AutoSplit, B, B::Asmdata,
+B::Assembler, B::Bblock, B::Bytecode, B::C, B::CC, B::Concise, B::Debug,
+B::Deparse, B::Disassembler, B::Lint, B::Showlex, B::Stackobj, B::Stash,
+B::Terse, B::Xref, Benchmark, ByteLoader, CGI, CGI::Apache, CGI::Carp,
+CGI::Cookie, CGI::Fast, CGI::Pretty, CGI::Push, CGI::Switch, CGI::Util,
+CPAN, CPAN::FirstTime, CPAN::Nox, Carp, Carp::Heavy, Class::ISA,
+Class::Struct, Cwd, DB, DB_File, Devel::SelfStubber, Digest, DirHandle,
+Dumpvalue, Encode, English, Env, Exporter, Exporter::Heavy,
ExtUtils::Command, ExtUtils::Constant, ExtUtils::Embed, ExtUtils::Install,
-ExtUtils::Installed, ExtUtils::Liblist, ExtUtils::MM_Cygwin,
-ExtUtils::MM_NW5, ExtUtils::MM_OS2, ExtUtils::MM_Unix, ExtUtils::MM_VMS,
-ExtUtils::MM_Win32, ExtUtils::MakeMaker, ExtUtils::Manifest,
-ExtUtils::Mkbootstrap, ExtUtils::Mksymlists, ExtUtils::Packlist,
-ExtUtils::testlib, Fatal, File::Basename, File::CheckTree, File::Compare,
-File::Copy, File::DosGlob, File::Find, File::Path, File::Spec,
-File::Spec::Cygwin, File::Spec::Epoc, File::Spec::Functions,
-File::Spec::Mac, File::Spec::OS2, File::Spec::Unix, File::Spec::VMS,
-File::Spec::Win32, File::Temp, File::stat, FileCache, FileHandle,
-Filter::Simple, FindBin, Getopt::Long, Getopt::Std, I18N::Collate,
-I18N::LangTags, I18N::LangTags::List, IPC::Open2, IPC::Open3,
-Locale::Constants, Locale::Country, Locale::Currency, Locale::Language,
-Locale::Maketext, Locale::Maketext::TPJ13, Math::BigFloat, Math::BigInt,
-Math::BigInt::Calc, Math::Complex, Math::Trig, Memoize,
-Memoize::AnyDBM_File, Memoize::Expire, Memoize::ExpireFile,
-Memoize::ExpireTest, Memoize::NDBM_File, Memoize::SDBM_File,
-Memoize::Storable, NEXT, Net::Cmd, Net::Config, Net::Domain, Net::FTP,
-Net::NNTP, Net::Netrc, Net::POP3, Net::Ping, Net::SMTP, Net::Time,
-Net::hostent, Net::libnetFAQ, Net::netent, Net::protoent, Net::servent,
-PerlIO, Pod::Checker, Pod::Find, Pod::Functions, Pod::Html,
-Pod::InputObjects, Pod::LaTeX, Pod::Man, Pod::ParseLink, Pod::ParseUtils,
-Pod::Parser, Pod::Plainer, Pod::Select, Pod::Text, Pod::Text::Color,
+ExtUtils::Installed, ExtUtils::Liblist, ExtUtils::MM_BeOS,
+ExtUtils::MM_Cygwin, ExtUtils::MM_NW5, ExtUtils::MM_OS2, ExtUtils::MM_Unix,
+ExtUtils::MM_VMS, ExtUtils::MM_Win32, ExtUtils::MakeMaker,
+ExtUtils::Manifest, ExtUtils::Mkbootstrap, ExtUtils::Mksymlists,
+ExtUtils::Packlist, ExtUtils::testlib, Fatal, Fcntl, File::Basename,
+File::CheckTree, File::Compare, File::Copy, File::DosGlob, File::Find,
+File::Path, File::Spec, File::Spec::Cygwin, File::Spec::Epoc,
+File::Spec::Functions, File::Spec::Mac, File::Spec::OS2, File::Spec::Unix,
+File::Spec::VMS, File::Spec::Win32, File::Temp, File::stat, FileCache,
+FileHandle, Filter::Simple, FindBin, Getopt::Long, Getopt::Std, Hash::Util,
+I18N::Collate, I18N::LangTags, I18N::LangTags::List, IO, IPC::Open2,
+IPC::Open3, Locale::Constants, Locale::Country, Locale::Currency,
+Locale::Language, Locale::Maketext, Locale::Maketext::TPJ13,
+Locale::Script, Math::BigFloat, Math::BigInt, Math::BigInt::Calc,
+Math::Complex, Math::Trig, Memoize, Memoize::AnyDBM_File, Memoize::Expire,
+Memoize::ExpireFile, Memoize::ExpireTest, Memoize::NDBM_File,
+Memoize::SDBM_File, Memoize::Storable, NDBM_File, NEXT, Net::Cmd,
+Net::Config, Net::Domain, Net::FTP, Net::NNTP, Net::Netrc, Net::POP3,
+Net::Ping, Net::SMTP, Net::Time, Net::hostent, Net::libnetFAQ, Net::netent,
+Net::protoent, Net::servent, O, ODBM_File, Opcode, POSIX, PerlIO,
+Pod::Checker, Pod::Find, Pod::Functions, Pod::Html, Pod::InputObjects,
+Pod::LaTeX, Pod::Man, Pod::ParseLink, Pod::ParseUtils, Pod::Parser,
+Pod::Plainer, Pod::Select, Pod::Text, Pod::Text::Color,
Pod::Text::Overstrike, Pod::Text::Termcap, Pod::Usage, Pod::t::basic,
-Search::Dict, SelectSaver, SelfLoader, Shell, Switch, Symbol,
-Term::ANSIColor, Term::Cap, Term::Complete, Term::ReadLine, Test,
-Test::Builder, Test::Harness, Test::More, Test::Simple, Test::Tutorial,
-Text::Abbrev, Text::Balanced, Text::ParseWords, Text::Soundex, Text::Tabs,
-Text::Wrap, Thread, Tie::Array, Tie::Handle, Tie::Hash, Tie::RefHash,
-Tie::Scalar, Tie::SubstrHash, Time::Local, Time::gmtime, Time::localtime,
-Time::tm, UNIVERSAL, Unicode::Collate, Unicode::UCD, User::grent,
-User::pwent, Win32
+SDBM_File, Safe, Search::Dict, SelectSaver, SelfLoader, Shell, Socket,
+Storable, Switch, Symbol, Term::ANSIColor, Term::Cap, Term::Complete,
+Term::ReadLine, Test, Test::Builder, Test::Harness, Test::Harness::Assert,
+Test::Harness::Iterator, Test::Harness::Straps, Test::More, Test::Simple,
+Test::Tutorial, Text::Abbrev, Text::Balanced, Text::ParseWords,
+Text::Soundex, Text::Tabs, Text::Wrap, Thread, Tie::Array, Tie::File,
+Tie::Handle, Tie::Hash, Tie::Memoize, Tie::RefHash, Tie::Scalar,
+Tie::SubstrHash, Time::Local, Time::gmtime, Time::localtime, Time::tm,
+UNIVERSAL, Unicode::Collate, Unicode::UCD, User::grent, User::pwent, Win32
=item Extension Modules
@@ -4918,6 +4936,8 @@ PerlIO_apply_layers(f,mode,layers), PerlIO_binmode(f,ptype,imode,layers),
=item Sort out the uid-setting mess
+=item Custom opcodes
+
=item DLL Versioning
=item Introduce @( and @)
@@ -5319,6 +5339,8 @@ DEFINES, USE_MULTI = define, #PERL_MALLOC = define, CFG = Debug
-h, -l, -p[rocedures], -h[eavy], -i[nvocations], -l[ines], -testcoverage,
-z[ero]
+=item Miscellaneous tricks
+
=item CONCLUSION
I<The Road goes ever on and on, down from the door where it began.>
@@ -8952,7 +8974,8 @@ code
=item Utility functions
$num_octets = utf8::upgrade($string);, utf8::downgrade($string[, CHECK]),
-utf8::encode($string), $flag = utf8::decode($string)
+utf8::encode($string), $flag = utf8::decode($string), $flag =
+utf8::valid(STRING)
=back
@@ -9252,7 +9275,7 @@ main_cv, init_av, begin_av, end_av, main_root, main_start, comppadlist,
regex_padav, sv_undef, sv_yes, sv_no, amagic_generation, walkoptree(OP,
METHOD), walkoptree_debug(DEBUG), walksymtable(SYMREF, METHOD, RECURSE,
PREFIX), svref_2object(SV), ppname(OPNUM), hash(STR), cast_I32(I), minus_c,
-cstring(STR), class(OBJ), threadsv_names
+cstring(STR), perlstring(STR), class(OBJ), threadsv_names
=item AUTHOR
@@ -9577,7 +9600,7 @@ B<-u Package>
=item OPTIONS
-C<-oFILENAME>, C<-r>, C<-D[tO]>
+C<-oFILENAME>, C<-r>, C<-d>, C<-D[tO]>
=item BUGS
@@ -10362,7 +10385,7 @@ C<_a>, C<_exe>, C<_o>
C<afs>, C<afsroot>, C<alignbytes>, C<ansi2knr>, C<aphostname>,
C<api_revision>, C<api_subversion>, C<api_version>, C<api_versionstring>,
C<ar>, C<archlib>, C<archlibexp>, C<archname64>, C<archname>, C<archobjs>,
-C<awk>
+C<asctime_r_proto>, C<awk>
=item b
@@ -10376,80 +10399,97 @@ C<ccflags_uselargefiles>, C<ccname>, C<ccsymbols>, C<ccversion>, C<cf_by>,
C<cf_email>, C<cf_time>, C<charsize>, C<chgrp>, C<chmod>, C<chown>,
C<clocktype>, C<comm>, C<compress>, C<contains>, C<cp>, C<cpio>, C<cpp>,
C<cpp_stuff>, C<cppccsymbols>, C<cppflags>, C<cpplast>, C<cppminus>,
-C<cpprun>, C<cppstdin>, C<cppsymbols>, C<cryptlib>, C<csh>
+C<cpprun>, C<cppstdin>, C<cppsymbols>, C<crypt_r_proto>, C<cryptlib>,
+C<csh>, C<ctermid_r_proto>, C<ctime_r_proto>
=item d
C<d__fwalk>, C<d_access>, C<d_accessx>, C<d_alarm>, C<d_archlib>,
-C<d_atolf>, C<d_atoll>, C<d_attribut>, C<d_bcmp>, C<d_bcopy>,
-C<d_bincompat5005>, C<d_bsd>, C<d_bsdgetpgrp>, C<d_bsdsetpgrp>, C<d_bzero>,
-C<d_casti32>, C<d_castneg>, C<d_charvspr>, C<d_chown>, C<d_chroot>,
-C<d_chsize>, C<d_class>, C<d_closedir>, C<d_cmsghdr_s>, C<d_const>,
-C<d_crypt>, C<d_csh>, C<d_cuserid>, C<d_dbl_dig>, C<d_dbminitproto>,
-C<d_difftime>, C<d_dirfd>, C<d_dirnamlen>, C<d_dlerror>, C<d_dlopen>,
-C<d_dlsymun>, C<d_dosuid>, C<d_drand48proto>, C<d_dup2>, C<d_eaccess>,
-C<d_endgrent>, C<d_endhent>, C<d_endnent>, C<d_endpent>, C<d_endpwent>,
-C<d_endsent>, C<d_eofnblk>, C<d_eunice>, C<d_fchdir>, C<d_fchmod>,
-C<d_fchown>, C<d_fcntl>, C<d_fcntl_can_lock>, C<d_fd_macros>, C<d_fd_set>,
+C<d_asctime_r>, C<d_atolf>, C<d_atoll>, C<d_attribut>, C<d_bcmp>,
+C<d_bcopy>, C<d_bincompat5005>, C<d_bsd>, C<d_bsdgetpgrp>, C<d_bsdsetpgrp>,
+C<d_bzero>, C<d_casti32>, C<d_castneg>, C<d_charvspr>, C<d_chown>,
+C<d_chroot>, C<d_chsize>, C<d_class>, C<d_closedir>, C<d_cmsghdr_s>,
+C<d_const>, C<d_crypt>, C<d_crypt_r>, C<d_csh>, C<d_ctermid_r>,
+C<d_ctime_r>, C<d_cuserid>, C<d_dbl_dig>, C<d_dbminitproto>, C<d_difftime>,
+C<d_dirfd>, C<d_dirnamlen>, C<d_dlerror>, C<d_dlopen>, C<d_dlsymun>,
+C<d_dosuid>, C<d_drand48_r>, C<d_drand48proto>, C<d_dup2>, C<d_eaccess>,
+C<d_endgrent>, C<d_endgrent_r>, C<d_endhent>, C<d_endhostent_r>,
+C<d_endnent>, C<d_endnetent_r>, C<d_endpent>, C<d_endprotoent_r>,
+C<d_endpwent>, C<d_endpwent_r>, C<d_endsent>, C<d_endservent_r>,
+C<d_eofnblk>, C<d_eunice>, C<d_fchdir>, C<d_fchmod>, C<d_fchown>,
+C<d_fcntl>, C<d_fcntl_can_lock>, C<d_fd_macros>, C<d_fd_set>,
C<d_fds_bits>, C<d_fgetpos>, C<d_finite>, C<d_finitel>, C<d_flexfnam>,
C<d_flock>, C<d_flockproto>, C<d_fork>, C<d_fp_class>, C<d_fpathconf>,
C<d_fpclass>, C<d_fpclassify>, C<d_fpclassl>, C<d_fpos64_t>, C<d_frexpl>,
C<d_fs_data_s>, C<d_fseeko>, C<d_fsetpos>, C<d_fstatfs>, C<d_fstatvfs>,
C<d_fsync>, C<d_ftello>, C<d_ftime>, C<d_Gconvert>, C<d_getcwd>,
-C<d_getespwnam>, C<d_getfsstat>, C<d_getgrent>, C<d_getgrps>,
-C<d_gethbyaddr>, C<d_gethbyname>, C<d_gethent>, C<d_gethname>,
-C<d_gethostprotos>, C<d_getitimer>, C<d_getlogin>, C<d_getmnt>,
+C<d_getespwnam>, C<d_getfsstat>, C<d_getgrent>, C<d_getgrent_r>,
+C<d_getgrgid_r>, C<d_getgrnam_r>, C<d_getgrps>, C<d_gethbyaddr>,
+C<d_gethbyname>, C<d_gethent>, C<d_gethname>, C<d_gethostbyaddr_r>,
+C<d_gethostbyname_r>, C<d_gethostent_r>, C<d_gethostprotos>,
+C<d_getitimer>, C<d_getlogin>, C<d_getlogin_r>, C<d_getmnt>,
C<d_getmntent>, C<d_getnbyaddr>, C<d_getnbyname>, C<d_getnent>,
+C<d_getnetbyaddr_r>, C<d_getnetbyname_r>, C<d_getnetent_r>,
C<d_getnetprotos>, C<d_getpagsz>, C<d_getpbyname>, C<d_getpbynumber>,
C<d_getpent>, C<d_getpgid>, C<d_getpgrp2>, C<d_getpgrp>, C<d_getppid>,
-C<d_getprior>, C<d_getprotoprotos>, C<d_getprpwnam>, C<d_getpwent>,
-C<d_getsbyname>, C<d_getsbyport>, C<d_getsent>, C<d_getservprotos>,
-C<d_getspnam>, C<d_gettimeod>, C<d_gnulibc>, C<d_grpasswd>, C<d_hasmntopt>,
+C<d_getprior>, C<d_getprotobyname_r>, C<d_getprotobynumber_r>,
+C<d_getprotoent_r>, C<d_getprotoprotos>, C<d_getprpwnam>, C<d_getpwent>,
+C<d_getpwent_r>, C<d_getpwnam_r>, C<d_getpwuid_r>, C<d_getsbyname>,
+C<d_getsbyport>, C<d_getsent>, C<d_getservbyname_r>, C<d_getservbyport_r>,
+C<d_getservent_r>, C<d_getservprotos>, C<d_getspnam>, C<d_getspnam_r>,
+C<d_gettimeod>, C<d_gmtime_r>, C<d_gnulibc>, C<d_grpasswd>, C<d_hasmntopt>,
C<d_htonl>, C<d_index>, C<d_inetaton>, C<d_int64_t>, C<d_isascii>,
C<d_isfinite>, C<d_isinf>, C<d_isnan>, C<d_isnanl>, C<d_killpg>,
-C<d_lchown>, C<d_ldbl_dig>, C<d_link>, C<d_locconv>, C<d_lockf>,
-C<d_longdbl>, C<d_longlong>, C<d_lseekproto>, C<d_lstat>, C<d_madvise>,
-C<d_mblen>, C<d_mbstowcs>, C<d_mbtowc>, C<d_memchr>, C<d_memcmp>,
-C<d_memcpy>, C<d_memmove>, C<d_memset>, C<d_mkdir>, C<d_mkdtemp>,
-C<d_mkfifo>, C<d_mkstemp>, C<d_mkstemps>, C<d_mktime>, C<d_mmap>,
-C<d_modfl>, C<d_modfl_pow32_bug>, C<d_mprotect>, C<d_msg>, C<d_msg_ctrunc>,
-C<d_msg_dontroute>, C<d_msg_oob>, C<d_msg_peek>, C<d_msg_proxy>,
-C<d_msgctl>, C<d_msgget>, C<d_msghdr_s>, C<d_msgrcv>, C<d_msgsnd>,
-C<d_msync>, C<d_munmap>, C<d_mymalloc>, C<d_nice>, C<d_nl_langinfo>,
-C<d_nv_preserves_uv>, C<nv_preserves_uv_bits>, C<d_off64_t>,
-C<d_old_pthread_create_joinable>, C<d_oldpthreads>, C<d_oldsock>,
-C<d_open3>, C<d_pathconf>, C<d_pause>, C<d_perl_otherlibdirs>,
-C<d_phostname>, C<d_pipe>, C<d_poll>, C<d_portable>, C<d_PRId64>,
-C<d_PRIeldbl>, C<d_PRIEUldbl>, C<d_PRIfldbl>, C<d_PRIFUldbl>,
-C<d_PRIgldbl>, C<d_PRIGUldbl>, C<d_PRIi64>, C<d_PRIo64>, C<d_PRIu64>,
-C<d_PRIx64>, C<d_PRIXU64>, C<d_procselfexe>, C<d_pthread_atfork>,
-C<d_pthread_yield>, C<d_pwage>, C<d_pwchange>, C<d_pwclass>,
-C<d_pwcomment>, C<d_pwexpire>, C<d_pwgecos>, C<d_pwpasswd>, C<d_pwquota>,
-C<d_qgcvt>, C<d_quad>, C<d_readdir>, C<d_readlink>, C<d_readv>,
-C<d_recvmsg>, C<d_rename>, C<d_rewinddir>, C<d_rmdir>, C<d_safebcpy>,
-C<d_safemcpy>, C<d_sanemcmp>, C<d_sbrkproto>, C<d_sched_yield>,
-C<d_scm_rights>, C<d_SCNfldbl>, C<d_seekdir>, C<d_select>, C<d_sem>,
-C<d_semctl>, C<d_semctl_semid_ds>, C<d_semctl_semun>, C<d_semget>,
-C<d_semop>, C<d_sendmsg>, C<d_setegid>, C<d_seteuid>, C<d_setgrent>,
-C<d_setgrps>, C<d_sethent>, C<d_setitimer>, C<d_setlinebuf>,
-C<d_setlocale>, C<d_setnent>, C<d_setpent>, C<d_setpgid>, C<d_setpgrp2>,
-C<d_setpgrp>, C<d_setprior>, C<d_setproctitle>, C<d_setpwent>,
-C<d_setregid>, C<d_setresgid>, C<d_setresuid>, C<d_setreuid>, C<d_setrgid>,
-C<d_setruid>, C<d_setsent>, C<d_setsid>, C<d_setvbuf>, C<d_sfio>, C<d_shm>,
-C<d_shmat>, C<d_shmatprototype>, C<d_shmctl>, C<d_shmdt>, C<d_shmget>,
-C<d_sigaction>, C<d_sigprocmask>, C<d_sigsetjmp>, C<d_sockatmark>,
-C<d_sockatmarkproto>, C<d_socket>, C<d_socklen_t>, C<d_sockpair>,
-C<d_socks5_init>, C<d_sqrtl>, C<d_sresgproto>, C<d_sresuproto>,
+C<d_lchown>, C<d_ldbl_dig>, C<d_link>, C<d_localtime_r>, C<d_locconv>,
+C<d_lockf>, C<d_longdbl>, C<d_longlong>, C<d_lseekproto>, C<d_lstat>,
+C<d_madvise>, C<d_mblen>, C<d_mbstowcs>, C<d_mbtowc>, C<d_memchr>,
+C<d_memcmp>, C<d_memcpy>, C<d_memmove>, C<d_memset>, C<d_mkdir>,
+C<d_mkdtemp>, C<d_mkfifo>, C<d_mkstemp>, C<d_mkstemps>, C<d_mktime>,
+C<d_mmap>, C<d_modfl>, C<d_modfl_pow32_bug>, C<d_mprotect>, C<d_msg>,
+C<d_msg_ctrunc>, C<d_msg_dontroute>, C<d_msg_oob>, C<d_msg_peek>,
+C<d_msg_proxy>, C<d_msgctl>, C<d_msgget>, C<d_msghdr_s>, C<d_msgrcv>,
+C<d_msgsnd>, C<d_msync>, C<d_munmap>, C<d_mymalloc>, C<d_nice>,
+C<d_nl_langinfo>, C<d_nv_preserves_uv>
+
+=item n
+
+C<nv_preserves_uv_bits>, C<d_off64_t>, C<d_old_pthread_create_joinable>,
+C<d_oldpthreads>, C<d_oldsock>, C<d_open3>, C<d_pathconf>, C<d_pause>,
+C<d_perl_otherlibdirs>, C<d_phostname>, C<d_pipe>, C<d_poll>,
+C<d_portable>, C<d_PRId64>, C<d_PRIeldbl>, C<d_PRIEUldbl>, C<d_PRIfldbl>,
+C<d_PRIFUldbl>, C<d_PRIgldbl>, C<d_PRIGUldbl>, C<d_PRIi64>, C<d_PRIo64>,
+C<d_PRIu64>, C<d_PRIx64>, C<d_PRIXU64>, C<d_procselfexe>,
+C<d_pthread_atfork>, C<d_pthread_yield>, C<d_pwage>, C<d_pwchange>,
+C<d_pwclass>, C<d_pwcomment>, C<d_pwexpire>, C<d_pwgecos>, C<d_pwpasswd>,
+C<d_pwquota>, C<d_qgcvt>, C<d_quad>, C<d_random_r>, C<d_readdir64_r>,
+C<d_readdir>, C<d_readdir_r>, C<d_readlink>, C<d_readv>, C<d_recvmsg>,
+C<d_rename>, C<d_rewinddir>, C<d_rmdir>, C<d_safebcpy>, C<d_safemcpy>,
+C<d_sanemcmp>, C<d_sbrkproto>, C<d_sched_yield>, C<d_scm_rights>,
+C<d_SCNfldbl>, C<d_seekdir>, C<d_select>, C<d_sem>, C<d_semctl>,
+C<d_semctl_semid_ds>, C<d_semctl_semun>, C<d_semget>, C<d_semop>,
+C<d_sendmsg>, C<d_setegid>, C<d_seteuid>, C<d_setgrent>, C<d_setgrent_r>,
+C<d_setgrps>, C<d_sethent>, C<d_sethostent_r>, C<d_setitimer>,
+C<d_setlinebuf>, C<d_setlocale>, C<d_setlocale_r>, C<d_setnent>,
+C<d_setnetent_r>, C<d_setpent>, C<d_setpgid>, C<d_setpgrp2>, C<d_setpgrp>,
+C<d_setprior>, C<d_setproctitle>, C<d_setprotoent_r>, C<d_setpwent>,
+C<d_setpwent_r>, C<d_setregid>, C<d_setresgid>, C<d_setresuid>,
+C<d_setreuid>, C<d_setrgid>, C<d_setruid>, C<d_setsent>, C<d_setservent_r>,
+C<d_setsid>, C<d_setvbuf>, C<d_sfio>, C<d_shm>, C<d_shmat>,
+C<d_shmatprototype>, C<d_shmctl>, C<d_shmdt>, C<d_shmget>, C<d_sigaction>,
+C<d_sigprocmask>, C<d_sigsetjmp>, C<d_sockatmark>, C<d_sockatmarkproto>,
+C<d_socket>, C<d_socklen_t>, C<d_sockpair>, C<d_socks5_init>, C<d_sqrtl>,
+C<d_srand48_r>, C<d_srandom_r>, C<d_sresgproto>, C<d_sresuproto>,
C<d_statblks>, C<d_statfs_f_flags>, C<d_statfs_s>, C<d_statvfs>,
C<d_stdio_cnt_lval>, C<d_stdio_ptr_lval>, C<d_stdio_ptr_lval_nochange_cnt>,
C<d_stdio_ptr_lval_sets_cnt>, C<d_stdio_stream_array>, C<d_stdiobase>,
C<d_stdstdio>, C<d_strchr>, C<d_strcoll>, C<d_strctcpy>, C<d_strerrm>,
-C<d_strerror>, C<d_strftime>, C<d_strtod>, C<d_strtol>, C<d_strtold>,
-C<d_strtoll>, C<d_strtoq>, C<d_strtoul>, C<d_strtoull>, C<d_strtouq>,
-C<d_strxfrm>, C<d_suidsafe>, C<d_symlink>, C<d_syscall>, C<d_syscallproto>,
-C<d_sysconf>, C<d_sysernlst>, C<d_syserrlst>, C<d_system>, C<d_tcgetpgrp>,
-C<d_tcsetpgrp>, C<d_telldir>, C<d_telldirproto>, C<d_time>, C<d_times>,
-C<d_tm_tm_gmtoff>, C<d_tm_tm_zone>, C<d_truncate>, C<d_tzname>,
+C<d_strerror>, C<d_strerror_r>, C<d_strftime>, C<d_strtod>, C<d_strtol>,
+C<d_strtold>, C<d_strtoll>, C<d_strtoq>, C<d_strtoul>, C<d_strtoull>,
+C<d_strtouq>, C<d_strxfrm>, C<d_suidsafe>, C<d_symlink>, C<d_syscall>,
+C<d_syscallproto>, C<d_sysconf>, C<d_sysernlst>, C<d_syserrlst>,
+C<d_system>, C<d_tcgetpgrp>, C<d_tcsetpgrp>, C<d_telldir>,
+C<d_telldirproto>, C<d_time>, C<d_times>, C<d_tm_tm_gmtoff>,
+C<d_tm_tm_zone>, C<d_tmpnam_r>, C<d_truncate>, C<d_ttyname_r>, C<d_tzname>,
C<d_u32align>, C<d_ualarm>, C<d_umask>, C<d_uname>, C<d_union_semun>,
C<d_unordered>, C<d_usleep>, C<d_usleepproto>, C<d_ustat>, C<d_vendorarch>,
C<d_vendorbin>, C<d_vendorlib>, C<d_vfork>, C<d_void_closedir>,
@@ -10457,12 +10497,14 @@ C<d_voidsig>, C<d_voidtty>, C<d_volatile>, C<d_vprintf>, C<d_wait4>,
C<d_waitpid>, C<d_wcstombs>, C<d_wctomb>, C<d_writev>, C<d_xenix>, C<date>,
C<db_hashtype>, C<db_prefixtype>, C<db_version_major>, C<db_version_minor>,
C<db_version_patch>, C<defvoidused>, C<direntrytype>, C<dlext>, C<dlsrc>,
-C<doublesize>, C<drand01>, C<dynamic_ext>
+C<doublesize>, C<drand01>, C<drand48_r_proto>, C<dynamic_ext>
=item e
-C<eagain>, C<ebcdic>, C<echo>, C<egrep>, C<emacs>, C<eunicefix>,
-C<exe_ext>, C<expr>, C<extensions>, C<extras>
+C<eagain>, C<ebcdic>, C<echo>, C<egrep>, C<emacs>, C<endgrent_r_proto>,
+C<endhostent_r_proto>, C<endnetent_r_proto>, C<endprotoent_r_proto>,
+C<endpwent_r_proto>, C<endservent_r_proto>, C<eunicefix>, C<exe_ext>,
+C<expr>, C<extensions>, C<extras>
=item f
@@ -10472,9 +10514,15 @@ C<full_sed>
=item g
-C<gccosandvers>, C<gccversion>, C<gidformat>, C<gidsign>, C<gidsize>,
-C<gidtype>, C<glibpth>, C<gmake>, C<grep>, C<groupcat>, C<groupstype>,
-C<gzip>
+C<gccosandvers>, C<gccversion>, C<getgrent_r_proto>, C<getgrgid_r_proto>,
+C<getgrnam_r_proto>, C<gethostbyaddr_r_proto>, C<gethostbyname_r_proto>,
+C<gethostent_r_proto>, C<getlogin_r_proto>, C<getnetbyaddr_r_proto>,
+C<getnetbyname_r_proto>, C<getnetent_r_proto>, C<getprotobyname_r_proto>,
+C<getprotobynumber_r_proto>, C<getprotoent_r_proto>, C<getpwent_r_proto>,
+C<getpwnam_r_proto>, C<getpwuid_r_proto>, C<getservbyname_r_proto>,
+C<getservbyport_r_proto>, C<getservent_r_proto>, C<getspnam_r_proto>,
+C<gidformat>, C<gidsign>, C<gidsize>, C<gidtype>, C<glibpth>, C<gmake>,
+C<gmtime_r_proto>, C<grep>, C<groupcat>, C<groupstype>, C<gzip>
=item h
@@ -10483,9 +10531,9 @@ C<h_fcntl>, C<h_sysfile>, C<hint>, C<hostcat>
=item i
C<i16size>, C<i16type>, C<i32size>, C<i32type>, C<i64size>, C<i64type>,
-C<i8size>, C<i8type>, C<i_arpainet>, C<i_bsdioctl>, C<i_db>, C<i_dbm>,
-C<i_dirent>, C<i_dld>, C<i_dlfcn>, C<i_fcntl>, C<i_float>, C<i_fp>,
-C<i_fp_class>, C<i_gdbm>, C<i_grp>, C<i_ieeefp>, C<i_inttypes>,
+C<i8size>, C<i8type>, C<i_arpainet>, C<i_bsdioctl>, C<i_crypt>, C<i_db>,
+C<i_dbm>, C<i_dirent>, C<i_dld>, C<i_dlfcn>, C<i_fcntl>, C<i_float>,
+C<i_fp>, C<i_fp_class>, C<i_gdbm>, C<i_grp>, C<i_ieeefp>, C<i_inttypes>,
C<i_langinfo>, C<i_libutil>, C<i_limits>, C<i_locale>, C<i_machcthr>,
C<i_malloc>, C<i_math>, C<i_memory>, C<i_mntent>, C<i_ndbm>, C<i_netdb>,
C<i_neterrno>, C<i_netinettcp>, C<i_niin>, C<i_poll>, C<i_prot>,
@@ -10517,8 +10565,9 @@ C<ld>, C<lddlflags>, C<ldflags>, C<ldflags_uselargefiles>, C<ldlibpthname>,
C<less>, C<lib_ext>, C<libc>, C<libperl>, C<libpth>, C<libs>, C<libsdirs>,
C<libsfiles>, C<libsfound>, C<libspath>, C<libswanted>,
C<libswanted_uselargefiles>, C<line>, C<lint>, C<lkflags>, C<ln>, C<lns>,
-C<locincpth>, C<loclibpth>, C<longdblsize>, C<longlongsize>, C<longsize>,
-C<lp>, C<lpr>, C<ls>, C<lseeksize>, C<lseektype>
+C<localtime_r_proto>, C<locincpth>, C<loclibpth>, C<longdblsize>,
+C<longlongsize>, C<longsize>, C<lp>, C<lpr>, C<ls>, C<lseeksize>,
+C<lseektype>
=item m
@@ -10529,10 +10578,7 @@ C<man3direxp>, C<man3ext>
=item M
C<Mcc>, C<mips_type>, C<mkdir>, C<mmaptype>, C<modetype>, C<more>,
-C<multiarch>, C<mv>, C<myarchname>, C<mydomain>, C<myhostname>, C<myuname>
-
-=item n
-
+C<multiarch>, C<mv>, C<myarchname>, C<mydomain>, C<myhostname>, C<myuname>,
C<n>, C<need_va_copy>, C<netdb_hlen_type>, C<netdb_host_type>,
C<netdb_name_type>, C<netdb_net_type>, C<nm>, C<nm_opt>, C<nm_so_opt>,
C<nonxs_ext>, C<nroff>, C<nveformat>, C<nvEUformat>, C<nvfformat>,
@@ -10561,30 +10607,35 @@ C<quadkind>, C<quadtype>
=item r
-C<randbits>, C<randfunc>, C<randseedtype>, C<ranlib>, C<rd_nodata>,
-C<revision>, C<rm>, C<rmail>, C<run>, C<runnm>
+C<randbits>, C<randfunc>, C<random_r_proto>, C<randseedtype>, C<ranlib>,
+C<rd_nodata>, C<readdir64_r_proto>, C<readdir_r_proto>, C<revision>, C<rm>,
+C<rmail>, C<run>, C<runnm>
=item s
C<sched_yield>, C<scriptdir>, C<scriptdirexp>, C<sed>, C<seedfunc>,
-C<selectminbits>, C<selecttype>, C<sendmail>, C<sh>, C<shar>, C<sharpbang>,
-C<shmattype>, C<shortsize>, C<shrpenv>, C<shsharp>, C<sig_count>,
-C<sig_name>, C<sig_name_init>, C<sig_num>, C<sig_num_init>, C<sig_size>,
-C<signal_t>, C<sitearch>, C<sitearchexp>, C<sitebin>, C<sitebinexp>,
-C<sitelib>, C<sitelib_stem>, C<sitelibexp>, C<siteprefix>,
+C<selectminbits>, C<selecttype>, C<sendmail>, C<setgrent_r_proto>,
+C<sethostent_r_proto>, C<setlocale_r_proto>, C<setnetent_r_proto>,
+C<setprotoent_r_proto>, C<setpwent_r_proto>, C<setservent_r_proto>, C<sh>,
+C<shar>, C<sharpbang>, C<shmattype>, C<shortsize>, C<shrpenv>, C<shsharp>,
+C<sig_count>, C<sig_name>, C<sig_name_init>, C<sig_num>, C<sig_num_init>,
+C<sig_size>, C<signal_t>, C<sitearch>, C<sitearchexp>, C<sitebin>,
+C<sitebinexp>, C<sitelib>, C<sitelib_stem>, C<sitelibexp>, C<siteprefix>,
C<siteprefixexp>, C<sizesize>, C<sizetype>, C<sleep>, C<smail>, C<so>,
C<sockethdr>, C<socketlib>, C<socksizetype>, C<sort>, C<spackage>,
C<spitshell>, C<sPRId64>, C<sPRIeldbl>, C<sPRIEUldbl>, C<sPRIfldbl>,
C<sPRIFUldbl>, C<sPRIgldbl>, C<sPRIGUldbl>, C<sPRIi64>, C<sPRIo64>,
-C<sPRIu64>, C<sPRIx64>, C<sPRIXU64>, C<src>, C<sSCNfldbl>, C<ssizetype>,
-C<startperl>, C<startsh>, C<static_ext>, C<stdchar>, C<stdio_base>,
-C<stdio_bufsiz>, C<stdio_cnt>, C<stdio_filbuf>, C<stdio_ptr>,
-C<stdio_stream_array>, C<strings>, C<submit>, C<subversion>, C<sysman>
+C<sPRIu64>, C<sPRIx64>, C<sPRIXU64>, C<srand48_r_proto>,
+C<srandom_r_proto>, C<src>, C<sSCNfldbl>, C<ssizetype>, C<startperl>,
+C<startsh>, C<static_ext>, C<stdchar>, C<stdio_base>, C<stdio_bufsiz>,
+C<stdio_cnt>, C<stdio_filbuf>, C<stdio_ptr>, C<stdio_stream_array>,
+C<strerror_r_proto>, C<strings>, C<submit>, C<subversion>, C<sysman>
=item t
C<tail>, C<tar>, C<targetarch>, C<tbl>, C<tee>, C<test>, C<timeincl>,
-C<timetype>, C<to>, C<touch>, C<tr>, C<trnl>, C<troff>
+C<timetype>, C<tmpnam_r_proto>, C<to>, C<touch>, C<tr>, C<trnl>, C<troff>,
+C<ttyname_r_proto>
=item u
@@ -11172,7 +11223,7 @@ strings in binary data, Perl/Encode wrappers on non-Unicode XS modules
=item Messing with Perl's Internals
-is_utf8(STRING [, CHECK]), valid_utf8(STRING)
+is_utf8(STRING [, CHECK])
=item IMPLEMENTATION CLASSES
@@ -11216,18 +11267,6 @@ variants of EBCDIC, symbol and dingbats as used by Tk on X11
=back
-=head2 Encode::Tcl::Extended - Tcl EUC encodings
-
-=over 4
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item SEE ALSO
-
-=back
-
=head2 Encode::Tcl::Table - Tcl Table encodings
=over 4
@@ -11265,19 +11304,6 @@ encodings
=back
-=head2 Encode::lib::Encode::Tcl::Extended, Encode::Tcl::Extended - Tcl EUC
-encodings
-
-=over 4
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item SEE ALSO
-
-=back
-
=head2 Encode::lib::Encode::Tcl::Table, Encode::Tcl::Table - Tcl Table
encodings
@@ -13997,7 +14023,7 @@ general-utility scalar subroutines
=item DESCRIPTION
-blessed EXPR, dualvar NUM, STRING, isweak EXPR, readonly SCALAR, reftype
+blessed EXPR, dualvar NUM, STRING, isweak EXPR, openhandle FH, reftype
EXPR, tainted EXPR, weaken REF
=item KNOWN BUGS
@@ -16878,7 +16904,7 @@ Memory, CPU, Snooping, Signals, State Changes
=item DESCRIPTION
-blessed EXPR, dualvar NUM, STRING, isweak EXPR, readonly SCALAR, reftype
+blessed EXPR, dualvar NUM, STRING, isweak EXPR, openhandle FH, reftype
EXPR, tainted EXPR, weaken REF
=item KNOWN BUGS
@@ -18011,9 +18037,13 @@ SHIFT this, UNSHIFT this, LIST, SPLICE this, offset, length, LIST
=item C<recsep>
+=item C<autochomp>
+
=item C<mode>
-=item C<cachesize>
+=item C<memory>
+
+=item C<dw_size>
=item Option Format
@@ -18025,23 +18055,25 @@ SHIFT this, UNSHIFT this, LIST, SPLICE this, offset, length, LIST
=item C<flock>
-=item Tying to an already-opened filehandle
+=item C<autochomp>
-=back
+=item C<defer>, C<flush>, and C<discard>
-=item CAVEATS
+=back
-=over 4
+=item Tying to an already-opened filehandle
-=item Efficiency Note
+=item Deferred Writing
-=item Efficiency Note 2
+=item CAVEATS
-=item Efficiency Note 3
+You might be tempted to think that deferred writing is like transactions,
+with C<flush> as C<commit> and C<discard> as C<rollback>, but it isn't, so
+don't
-=back
+=item SUBCLASSING
-=item CAVEATS
+=item WHAT ABOUT C<DB_File>?
=item AUTHOR
@@ -18312,28 +18344,42 @@ Unicode Collation Algorithm - Unicode TR #10, L<Unicode::Normalize>
=item Normalization Forms
-C<$string_NFD = NFD($raw_string)>, C<$string_NFC = NFC($raw_string)>,
-C<$string_NFKD = NFKD($raw_string)>, C<$string_NFKC = NFKC($raw_string)>,
-C<$normalized_string = normalize($form_name, $raw_string)>
+C<$NFD_string = NFD($string)>, C<$NFC_string = NFC($string)>,
+C<$NFKD_string = NFKD($string)>, C<$NFKC_string = NFKC($string)>,
+C<$normalized_string = normalize($form_name, $string)>
+
+=item Decomposition and Composition
+
+C<$decomposed_string = decompose($string)>, C<$decomposed_string =
+decompose($string, $useCompatMapping)>, C<$reordered_string =
+reorder($string)>, C<$composed_string = compose($string)>
+
+=item Quick Check
+
+C<$result = checkNFD($string)>, C<$result = checkNFC($string)>, C<$result =
+checkNFKD($string)>, C<$result = checkNFKC($string)>, C<$result =
+check($form_name, $string)>
=item Character Data
C<$canonical_decomposed = getCanon($codepoint)>,
-C<$compatibility_decomposed = getCompat($codepoint)>, C<$uv_composite =
-getComposite($uv_here, $uv_next)>, C<$combining_class =
-getCombinClass($codepoint)>, C<$is_exclusion = isExclusion($codepoint)>
+C<$compatibility_decomposed = getCompat($codepoint)>,
+C<$codepoint_composite = getComposite($codepoint_here, $codepoint_next)>,
+C<$combining_class = getCombinClass($codepoint)>, C<$is_exclusion =
+isExclusion($codepoint)>, C<$is_singleton = isSingleton($codepoint)>,
+C<$is_non_startar_decomposition = isNonStDecomp($codepoint)>,
+C<$may_be_composed_with_prev_char = isComp2nd($codepoint)>
=item EXPORT
-=item TODO
-
=back
=item AUTHOR
=item SEE ALSO
-http://www.unicode.org/unicode/reports/tr15/
+http://www.unicode.org/unicode/reports/tr15/,
+http://www.unicode.org/Public/UNIDATA/DerivedNormalizationProperties.txt
=back
diff --git a/pod/perltodo.pod b/pod/perltodo.pod
index 6870696f4e..eea756b641 100644
--- a/pod/perltodo.pod
+++ b/pod/perltodo.pod
@@ -193,7 +193,7 @@ for the real and effective uids). Firstly, what exactly setuid() call
gets invoked in which platform is simply a big mess that needs to be
untangled. Secondly, the effects are apparently not standard across
platforms, (if you first set $< and then $>, or vice versa, being
-uid==euid== zero, or just euid==zero, or as a normal user, what are
+uid == euid == zero, or just euid == zero, or as a normal user, what are
the results?). The test suite not (usually) being run as root means
that these things do not get much testing. Thirdly, there's quite
often a third uid called saved uid, and Perl has no knowledge of that
@@ -201,7 +201,7 @@ feature in any way. (If one has the saved uid of zero, one can get
back any real and effective uids.) As an example, to change also the
saved uid, one needs to set the real and effective uids B<twice>-- in
most systems, that is: in HP-UX that doesn't seem to work.
-
+
=head2 Custom opcodes
Have a way to introduce user-defined opcodes without the subroutine call
diff --git a/pod/perlunicode.pod b/pod/perlunicode.pod
index 518d239dd6..4cb83252f0 100644
--- a/pod/perlunicode.pod
+++ b/pod/perlunicode.pod
@@ -828,6 +828,29 @@ are specifically discussed. There is no C<utfebcdic> pragma or
the platform's "natural" 8-bit encoding of Unicode. See L<perlebcdic>
for more discussion of the issues.
+=head2 Locales
+
+Usually locale settings and Unicode do not affect each other, but
+there are a couple of exceptions:
+
+=over 4
+
+=item *
+
+If your locale environment variables (LANGUAGE, LC_ALL, LC_CTYPE, LANG)
+contain the strings 'UTF-8' or 'UTF8' (case-insensitive matching),
+the default encoding of your STDIN, STDOUT, and STDERR, and of
+B<any subsequent file open>, is UTF-8.
+
+=item *
+
+Perl tries really hard to work both with Unicode and the old byte
+oriented world: most often this is nice, but sometimes this causes
+problems. See L</BUGS> for example how sometimes using locales
+with Unicode can help with these problems.
+
+=back
+
=head2 Using Unicode in XS
If you want to handle Perl Unicode in XS extensions, you may find
@@ -936,14 +959,23 @@ Use of locales with Unicode data may lead to odd results. Currently
there is some attempt to apply 8-bit locale info to characters in the
range 0..255, but this is demonstrably incorrect for locales that use
characters above that range when mapped into Unicode. It will also
-tend to run slower. Avoidance of locales is strongly encouraged.
+tend to run slower. Avoidance of locales is strongly encouraged,
+with one known expection, see the next paragraph.
+
+If the keys of a hash are "mixed", that is, some keys are Unicode,
+while some keys are "byte", the keys may behave differently in regular
+expressions since the definition of character classes like C</\w/>
+is different for byte strings and character strings. This problem can
+sometimes be helped by using an appropriate locale (see L<perllocale>).
+Another way is to force all the strings to be character encoded by
+using utf8::upgrade() (see L<utf8>).
Some functions are slower when working on UTF-8 encoded strings than
on byte encoded strings. All functions that need to hop over
characters such as length(), substr() or index() can work B<much>
faster when the underlying data are byte-encoded. Witness the
following benchmark:
-
+
% perl -e '
use Benchmark;
use strict;
@@ -962,7 +994,7 @@ following benchmark:
LENGTH_U: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 12155.45/s (n=25648)
SUBSTR_B: 3 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @ 374480.09/s (n=808877)
SUBSTR_U: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 6791.00/s (n=14329)
-
+
The numbers show an incredible slowness on long UTF-8 strings and you
should carefully avoid to use these functions within tight loops. For
example if you want to iterate over characters, it is infinitely
@@ -990,7 +1022,7 @@ benchmark shows:
You see, the algorithm based on substr() was faster with byte encoded
data but it is pathologically slow with UTF-8 data.
-
+
=head1 SEE ALSO
L<perluniintro>, L<encoding>, L<Encode>, L<open>, L<utf8>, L<bytes>,
diff --git a/pod/perluniintro.pod b/pod/perluniintro.pod
index e36bb07dd7..dd3064f6bf 100644
--- a/pod/perluniintro.pod
+++ b/pod/perluniintro.pod
@@ -169,16 +169,17 @@ To output UTF-8 always, use the ":utf8" output discipline. Prepending
to this sample program ensures the output is completely UTF-8, and
of course, removes the warning.
+If your locale environment variables (LANGUAGE, LC_ALL, LC_CTYPE, LANG)
+contain the strings 'UTF-8' or 'UTF8' (case-insensitive matching),
+the default encoding of your STDIN, STDOUT, and STDERR, and of
+B<any subsequent file open>, is UTF-8.
+
=head2 Unicode and EBCDIC
Perl 5.8.0 also supports Unicode on EBCDIC platforms. There,
the Unicode support is somewhat more complex to implement since
additional conversions are needed at every step. Some problems
-remain, but they all seem to be related to the combination of
-the extra mapping just described and case-insensitive matching:
-for example, "\x{131}" (LATIN SMALL LETTER DOTLESS I) does not
-match "I" case-insensitively, as it should under Unicode.
-(The match succeeds in ASCII-derived platforms.)
+remain, see L<perlebcdic> for details.
In any case, the Unicode support on EBCDIC platforms is better than
in the 5.6 series, which didn't work much at all for EBCDIC platform.
diff --git a/proto.h b/proto.h
index dad9b57299..ac6f2815cd 100644
--- a/proto.h
+++ b/proto.h
@@ -1206,6 +1206,8 @@ STATIC U8* S_reghop3(pTHX_ U8 *pos, I32 off, U8 *lim);
STATIC U8* S_reghopmaybe(pTHX_ U8 *pos, I32 off);
STATIC U8* S_reghopmaybe3(pTHX_ U8 *pos, I32 off, U8 *lim);
STATIC char* S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, char *strend, char *startpos, I32 norun);
+STATIC void S_to_utf8_substr(pTHX_ regexp * prog);
+STATIC void S_to_byte_substr(pTHX_ regexp * prog);
#endif
#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
diff --git a/reentr.h b/reentr.h
index 6060fb7ed3..14de347452 100644
--- a/reentr.h
+++ b/reentr.h
@@ -89,75 +89,76 @@
#define REENTRANT_PROTO_B_B 1
#define REENTRANT_PROTO_B_BI 2
#define REENTRANT_PROTO_B_BW 3
-#define REENTRANT_PROTO_B_CCS 4
-#define REENTRANT_PROTO_B_IBI 5
-#define REENTRANT_PROTO_B_IBW 6
-#define REENTRANT_PROTO_B_SB 7
-#define REENTRANT_PROTO_B_SBI 8
-#define REENTRANT_PROTO_I_BI 9
-#define REENTRANT_PROTO_I_BW 10
-#define REENTRANT_PROTO_I_CCSBWR 11
-#define REENTRANT_PROTO_I_CCSD 12
-#define REENTRANT_PROTO_I_CII 13
-#define REENTRANT_PROTO_I_CIISD 14
-#define REENTRANT_PROTO_I_CSBI 15
-#define REENTRANT_PROTO_I_CSBIR 16
-#define REENTRANT_PROTO_I_CSBWR 17
-#define REENTRANT_PROTO_I_CSBWRE 18
-#define REENTRANT_PROTO_I_CSD 19
-#define REENTRANT_PROTO_I_CWISBWRE 20
-#define REENTRANT_PROTO_I_CWISD 21
-#define REENTRANT_PROTO_I_H 22
-#define REENTRANT_PROTO_I_IBI 23
-#define REENTRANT_PROTO_I_IBW 24
-#define REENTRANT_PROTO_I_ICBI 25
-#define REENTRANT_PROTO_I_ICSBWR 26
-#define REENTRANT_PROTO_I_ICSD 27
-#define REENTRANT_PROTO_I_ID 28
-#define REENTRANT_PROTO_I_IISD 29
-#define REENTRANT_PROTO_I_ISBWR 30
-#define REENTRANT_PROTO_I_ISD 31
-#define REENTRANT_PROTO_I_LISBI 32
-#define REENTRANT_PROTO_I_LISD 33
-#define REENTRANT_PROTO_I_LS 34
-#define REENTRANT_PROTO_I_S 35
-#define REENTRANT_PROTO_I_SB 36
-#define REENTRANT_PROTO_I_SBI 37
-#define REENTRANT_PROTO_I_SBIE 38
-#define REENTRANT_PROTO_I_SBIH 39
-#define REENTRANT_PROTO_I_SBIR 40
-#define REENTRANT_PROTO_I_SBWR 41
-#define REENTRANT_PROTO_I_SBWRE 42
-#define REENTRANT_PROTO_I_SD 43
-#define REENTRANT_PROTO_I_ST 44
-#define REENTRANT_PROTO_I_TISD 45
-#define REENTRANT_PROTO_I_TS 46
-#define REENTRANT_PROTO_I_TSBI 47
-#define REENTRANT_PROTO_I_TSBIR 48
-#define REENTRANT_PROTO_I_TSBWR 49
-#define REENTRANT_PROTO_I_TSR 50
-#define REENTRANT_PROTO_I_UISBWRE 51
-#define REENTRANT_PROTO_S_CBI 52
-#define REENTRANT_PROTO_S_CCSBI 53
-#define REENTRANT_PROTO_S_CIISBIE 54
-#define REENTRANT_PROTO_S_CSBI 55
-#define REENTRANT_PROTO_S_CSBIE 56
-#define REENTRANT_PROTO_S_CWISBIE 57
-#define REENTRANT_PROTO_S_CWISBWIE 58
-#define REENTRANT_PROTO_S_ICSBI 59
-#define REENTRANT_PROTO_S_ISBI 60
-#define REENTRANT_PROTO_S_LISBI 61
-#define REENTRANT_PROTO_S_SBI 62
-#define REENTRANT_PROTO_S_SBIE 63
-#define REENTRANT_PROTO_S_SBW 64
-#define REENTRANT_PROTO_S_TISBI 65
-#define REENTRANT_PROTO_S_TS 66
-#define REENTRANT_PROTO_S_TSBI 67
-#define REENTRANT_PROTO_S_TSBIE 68
-#define REENTRANT_PROTO_S_TWISBIE 69
-#define REENTRANT_PROTO_V_H 70
-#define REENTRANT_PROTO_V_ID 71
-#define REENTRANT_PROTO_V_S 72
+#define REENTRANT_PROTO_B_CCD 4
+#define REENTRANT_PROTO_B_CCS 5
+#define REENTRANT_PROTO_B_IBI 6
+#define REENTRANT_PROTO_B_IBW 7
+#define REENTRANT_PROTO_B_SB 8
+#define REENTRANT_PROTO_B_SBI 9
+#define REENTRANT_PROTO_I_BI 10
+#define REENTRANT_PROTO_I_BW 11
+#define REENTRANT_PROTO_I_CCSBWR 12
+#define REENTRANT_PROTO_I_CCSD 13
+#define REENTRANT_PROTO_I_CII 14
+#define REENTRANT_PROTO_I_CIISD 15
+#define REENTRANT_PROTO_I_CSBI 16
+#define REENTRANT_PROTO_I_CSBIR 17
+#define REENTRANT_PROTO_I_CSBWR 18
+#define REENTRANT_PROTO_I_CSBWRE 19
+#define REENTRANT_PROTO_I_CSD 20
+#define REENTRANT_PROTO_I_CWISBWRE 21
+#define REENTRANT_PROTO_I_CWISD 22
+#define REENTRANT_PROTO_I_H 23
+#define REENTRANT_PROTO_I_IBI 24
+#define REENTRANT_PROTO_I_IBW 25
+#define REENTRANT_PROTO_I_ICBI 26
+#define REENTRANT_PROTO_I_ICSBWR 27
+#define REENTRANT_PROTO_I_ICSD 28
+#define REENTRANT_PROTO_I_ID 29
+#define REENTRANT_PROTO_I_IISD 30
+#define REENTRANT_PROTO_I_ISBWR 31
+#define REENTRANT_PROTO_I_ISD 32
+#define REENTRANT_PROTO_I_LISBI 33
+#define REENTRANT_PROTO_I_LISD 34
+#define REENTRANT_PROTO_I_LS 35
+#define REENTRANT_PROTO_I_S 36
+#define REENTRANT_PROTO_I_SB 37
+#define REENTRANT_PROTO_I_SBI 38
+#define REENTRANT_PROTO_I_SBIE 39
+#define REENTRANT_PROTO_I_SBIH 40
+#define REENTRANT_PROTO_I_SBIR 41
+#define REENTRANT_PROTO_I_SBWR 42
+#define REENTRANT_PROTO_I_SBWRE 43
+#define REENTRANT_PROTO_I_SD 44
+#define REENTRANT_PROTO_I_ST 45
+#define REENTRANT_PROTO_I_TISD 46
+#define REENTRANT_PROTO_I_TS 47
+#define REENTRANT_PROTO_I_TSBI 48
+#define REENTRANT_PROTO_I_TSBIR 49
+#define REENTRANT_PROTO_I_TSBWR 50
+#define REENTRANT_PROTO_I_TSR 51
+#define REENTRANT_PROTO_I_UISBWRE 52
+#define REENTRANT_PROTO_S_CBI 53
+#define REENTRANT_PROTO_S_CCSBI 54
+#define REENTRANT_PROTO_S_CIISBIE 55
+#define REENTRANT_PROTO_S_CSBI 56
+#define REENTRANT_PROTO_S_CSBIE 57
+#define REENTRANT_PROTO_S_CWISBIE 58
+#define REENTRANT_PROTO_S_CWISBWIE 59
+#define REENTRANT_PROTO_S_ICSBI 60
+#define REENTRANT_PROTO_S_ISBI 61
+#define REENTRANT_PROTO_S_LISBI 62
+#define REENTRANT_PROTO_S_SBI 63
+#define REENTRANT_PROTO_S_SBIE 64
+#define REENTRANT_PROTO_S_SBW 65
+#define REENTRANT_PROTO_S_TISBI 66
+#define REENTRANT_PROTO_S_TS 67
+#define REENTRANT_PROTO_S_TSBI 68
+#define REENTRANT_PROTO_S_TSBIE 69
+#define REENTRANT_PROTO_S_TWISBIE 70
+#define REENTRANT_PROTO_V_H 71
+#define REENTRANT_PROTO_V_ID 72
+#define REENTRANT_PROTO_V_S 73
/* Defines for indicating which special features are supported. */
@@ -575,7 +576,11 @@ typedef struct {
size_t _asctime_size;
#endif /* HAS_ASCTIME_R */
#ifdef HAS_CRYPT_R
+#if CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
+ CRYPTD* _crypt_data;
+#else
struct crypt_data _crypt_struct;
+#endif
#endif /* HAS_CRYPT_R */
#ifdef HAS_CTIME_R
char* _ctime_buffer;
@@ -740,6 +745,9 @@ typedef struct {
# if !defined(crypt) && CRYPT_R_PROTO == REENTRANT_PROTO_B_CCS
# define crypt(a, b) crypt_r(a, b, &PL_reentrant_buffer->_crypt_struct)
# endif
+# if !defined(crypt) && CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
+# define crypt(a, b) crypt_r(a, b, &PL_reentrant_buffer->_crypt_data)
+# endif
#endif /* HAS_CRYPT_R */
#ifdef HAS_CTERMID_R
diff --git a/reentr.pl b/reentr.pl
index 1e0947adac..ae56377c15 100644
--- a/reentr.pl
+++ b/reentr.pl
@@ -395,18 +395,27 @@ EOF
pushinitfree $f;
pushssif $endif;
}
- elsif ($f =~ /^(crypt|drand48|gmtime|localtime|random)$/) {
+ elsif ($f =~ /^(crypt)$/) {
pushssif $ifdef;
push @struct, <<EOF;
+#if CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
+ $seend{$f} _${f}_data;
+#else
$seent{$f} _${f}_struct;
+#endif
EOF
- if ($f eq 'crypt') {
- push @init, <<EOF;
+ push @init, <<EOF;
#ifdef __GLIBC__
PL_reentrant_buffer->_${f}_struct.initialized = 0;
#endif
EOF
- }
+ pushssif $endif;
+ }
+ elsif ($f =~ /^(drand48|gmtime|localtime|random)$/) {
+ pushssif $ifdef;
+ push @struct, <<EOF;
+ $seent{$f} _${f}_struct;
+EOF
if ($1 eq 'drand48') {
push @struct, <<EOF;
double _${f}_double;
@@ -877,7 +886,7 @@ EOF
__DATA__
asctime S |time |const struct tm|B_SB|B_SBI|I_SB|I_SBI
-crypt CC |crypt |struct crypt_data|B_CCS
+crypt CC |crypt |struct crypt_data|B_CCS|B_CCD|D=CRYPTD*
ctermid B |stdio | |B_B
ctime S |time |const time_t |B_SB|B_SBI|I_SB|I_SBI
drand48 |stdlib |struct drand48_data |I_ST|T=double*
diff --git a/regcomp.c b/regcomp.c
index 7c34d8f949..639f140582 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -931,6 +931,8 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, I32 *deltap, reg
? I32_MAX : data->pos_min + data->pos_delta;
}
sv_catpvn(data->last_found, STRING(scan), STR_LEN(scan));
+ if (UTF)
+ SvUTF8_on(data->last_found);
data->last_end = data->pos_min + l;
data->pos_min += l; /* As in the first entry. */
data->flags &= ~SF_BEFORE_EOL;
@@ -1963,17 +1965,23 @@ Perl_pregcomp(pTHX_ char *exp, char *xend, PMOP *pm)
&& SvCUR(data.longest_fixed) == SvCUR(data.longest_float))
goto remove_float; /* As in (a)+. */
- r->float_substr = data.longest_float;
+ if (SvUTF8(data.longest_float)) {
+ r->float_utf8 = data.longest_float;
+ r->float_substr = Nullsv;
+ } else {
+ r->float_substr = data.longest_float;
+ r->float_utf8 = Nullsv;
+ }
r->float_min_offset = data.offset_float_min;
r->float_max_offset = data.offset_float_max;
t = (data.flags & SF_FL_BEFORE_EOL /* Can't have SEOL and MULTI */
&& (!(data.flags & SF_FL_BEFORE_MEOL)
|| (RExC_flags16 & PMf_MULTILINE)));
- fbm_compile(r->float_substr, t ? FBMcf_TAIL : 0);
+ fbm_compile(data.longest_float, t ? FBMcf_TAIL : 0);
}
else {
remove_float:
- r->float_substr = Nullsv;
+ r->float_substr = r->float_utf8 = Nullsv;
SvREFCNT_dec(data.longest_float);
longest_float_length = 0;
}
@@ -1985,22 +1993,29 @@ Perl_pregcomp(pTHX_ char *exp, char *xend, PMOP *pm)
|| (RExC_flags16 & PMf_MULTILINE)))) {
int t;
- r->anchored_substr = data.longest_fixed;
+ if (SvUTF8(data.longest_fixed)) {
+ r->anchored_utf8 = data.longest_fixed;
+ r->anchored_substr = Nullsv;
+ } else {
+ r->anchored_substr = data.longest_fixed;
+ r->anchored_utf8 = Nullsv;
+ }
r->anchored_offset = data.offset_fixed;
t = (data.flags & SF_FIX_BEFORE_EOL /* Can't have SEOL and MULTI */
&& (!(data.flags & SF_FIX_BEFORE_MEOL)
|| (RExC_flags16 & PMf_MULTILINE)));
- fbm_compile(r->anchored_substr, t ? FBMcf_TAIL : 0);
+ fbm_compile(data.longest_fixed, t ? FBMcf_TAIL : 0);
}
else {
- r->anchored_substr = Nullsv;
+ r->anchored_substr = r->anchored_utf8 = Nullsv;
SvREFCNT_dec(data.longest_fixed);
longest_fixed_length = 0;
}
if (r->regstclass
&& (OP(r->regstclass) == REG_ANY || OP(r->regstclass) == SANY))
r->regstclass = NULL;
- if ((!r->anchored_substr || r->anchored_offset) && stclass_flag
+ if ((!(r->anchored_substr || r->anchored_utf8) || r->anchored_offset)
+ && stclass_flag
&& !(data.start_class->flags & ANYOF_EOS)
&& !cl_is_anything(data.start_class)) {
I32 n = add_data(pRExC_state, 1, "f");
@@ -2023,20 +2038,22 @@ Perl_pregcomp(pTHX_ char *exp, char *xend, PMOP *pm)
/* A temporary algorithm prefers floated substr to fixed one to dig more info. */
if (longest_fixed_length > longest_float_length) {
r->check_substr = r->anchored_substr;
+ r->check_utf8 = r->anchored_utf8;
r->check_offset_min = r->check_offset_max = r->anchored_offset;
if (r->reganch & ROPT_ANCH_SINGLE)
r->reganch |= ROPT_NOSCAN;
}
else {
r->check_substr = r->float_substr;
+ r->check_utf8 = r->float_utf8;
r->check_offset_min = data.offset_float_min;
r->check_offset_max = data.offset_float_max;
}
/* XXXX Currently intuiting is not compatible with ANCH_GPOS.
This should be changed ASAP! */
- if (r->check_substr && !(r->reganch & ROPT_ANCH_GPOS)) {
+ if ((r->check_substr || r->check_utf8) && !(r->reganch & ROPT_ANCH_GPOS)) {
r->reganch |= RE_USE_INTUIT;
- if (SvTAIL(r->check_substr))
+ if (SvTAIL(r->check_substr ? r->check_substr : r->check_utf8))
r->reganch |= RE_INTUIT_TAIL;
}
}
@@ -2052,7 +2069,8 @@ Perl_pregcomp(pTHX_ char *exp, char *xend, PMOP *pm)
data.start_class = &ch_class;
data.last_closep = &last_close;
minlen = study_chunk(pRExC_state, &scan, &fake, scan + RExC_size, &data, SCF_DO_STCLASS_AND|SCF_WHILEM_VISITED_POS);
- r->check_substr = r->anchored_substr = r->float_substr = Nullsv;
+ r->check_substr = r->check_utf8 = r->anchored_substr = r->anchored_utf8
+ = r->float_substr = r->float_utf8 = Nullsv;
if (!(data.start_class->flags & ANYOF_EOS)
&& !cl_is_anything(data.start_class)) {
I32 n = add_data(pRExC_state, 1, "f");
@@ -4529,6 +4547,15 @@ Perl_regdump(pTHX_ regexp *r)
PL_colors[1],
SvTAIL(r->anchored_substr) ? "$" : "",
(IV)r->anchored_offset);
+ else if (r->anchored_utf8)
+ PerlIO_printf(Perl_debug_log,
+ "anchored utf8 `%s%.*s%s'%s at %"IVdf" ",
+ PL_colors[0],
+ (int)(SvCUR(r->anchored_utf8) - (SvTAIL(r->anchored_utf8)!=0)),
+ SvPVX(r->anchored_utf8),
+ PL_colors[1],
+ SvTAIL(r->anchored_utf8) ? "$" : "",
+ (IV)r->anchored_offset);
if (r->float_substr)
PerlIO_printf(Perl_debug_log,
"floating `%s%.*s%s'%s at %"IVdf"..%"UVuf" ",
@@ -4538,15 +4565,25 @@ Perl_regdump(pTHX_ regexp *r)
PL_colors[1],
SvTAIL(r->float_substr) ? "$" : "",
(IV)r->float_min_offset, (UV)r->float_max_offset);
- if (r->check_substr)
+ else if (r->float_utf8)
+ PerlIO_printf(Perl_debug_log,
+ "floating utf8 `%s%.*s%s'%s at %"IVdf"..%"UVuf" ",
+ PL_colors[0],
+ (int)(SvCUR(r->float_utf8) - (SvTAIL(r->float_utf8)!=0)),
+ SvPVX(r->float_utf8),
+ PL_colors[1],
+ SvTAIL(r->float_utf8) ? "$" : "",
+ (IV)r->float_min_offset, (UV)r->float_max_offset);
+ if (r->check_substr || r->check_utf8)
PerlIO_printf(Perl_debug_log,
r->check_substr == r->float_substr
+ && r->check_utf8 == r->float_utf8
? "(checking floating" : "(checking anchored");
if (r->reganch & ROPT_NOSCAN)
PerlIO_printf(Perl_debug_log, " noscan");
if (r->reganch & ROPT_CHECK_ALL)
PerlIO_printf(Perl_debug_log, " isall");
- if (r->check_substr)
+ if (r->check_substr || r->check_utf8)
PerlIO_printf(Perl_debug_log, ") ");
if (r->regstclass) {
@@ -4795,18 +4832,21 @@ Perl_re_intuit_string(pTHX_ regexp *prog)
{ /* Assume that RE_INTUIT is set */
DEBUG_r(
{ STRLEN n_a;
- char *s = SvPV(prog->check_substr,n_a);
+ char *s = SvPV(prog->check_substr
+ ? prog->check_substr : prog->check_utf8, n_a);
if (!PL_colorset) reginitcolors();
PerlIO_printf(Perl_debug_log,
- "%sUsing REx substr:%s `%s%.60s%s%s'\n",
- PL_colors[4],PL_colors[5],PL_colors[0],
+ "%sUsing REx %ssubstr:%s `%s%.60s%s%s'\n",
+ PL_colors[4],
+ prog->check_substr ? "" : "utf8 ",
+ PL_colors[5],PL_colors[0],
s,
PL_colors[1],
(strlen(s) > 60 ? "..." : ""));
} );
- return prog->check_substr;
+ return prog->check_substr ? prog->check_substr : prog->check_utf8;
}
void
@@ -4841,8 +4881,12 @@ Perl_pregfree(pTHX_ struct regexp *r)
if (r->substrs) {
if (r->anchored_substr)
SvREFCNT_dec(r->anchored_substr);
+ if (r->anchored_utf8)
+ SvREFCNT_dec(r->anchored_utf8);
if (r->float_substr)
SvREFCNT_dec(r->float_substr);
+ if (r->float_utf8)
+ SvREFCNT_dec(r->float_utf8);
Safefree(r->substrs);
}
if (r->data) {
diff --git a/regcomp.h b/regcomp.h
index bfd00dcc7b..8c027bfbb8 100644
--- a/regcomp.h
+++ b/regcomp.h
@@ -386,7 +386,8 @@ struct reg_data {
struct reg_substr_datum {
I32 min_offset;
I32 max_offset;
- SV *substr;
+ SV *substr; /* non-utf8 variant */
+ SV *utf8_substr; /* utf8 variant */
};
struct reg_substr_data {
@@ -394,10 +395,13 @@ struct reg_substr_data {
};
#define anchored_substr substrs->data[0].substr
+#define anchored_utf8 substrs->data[0].utf8_substr
#define anchored_offset substrs->data[0].min_offset
#define float_substr substrs->data[1].substr
+#define float_utf8 substrs->data[1].utf8_substr
#define float_min_offset substrs->data[1].min_offset
#define float_max_offset substrs->data[1].max_offset
#define check_substr substrs->data[2].substr
+#define check_utf8 substrs->data[2].utf8_substr
#define check_offset_min substrs->data[2].min_offset
#define check_offset_max substrs->data[2].max_offset
diff --git a/regexec.c b/regexec.c
index e676568bdd..5a6d72db8c 100644
--- a/regexec.c
+++ b/regexec.c
@@ -102,7 +102,7 @@
* Forwards.
*/
-#define CHR_SVLEN(sv) (UTF ? sv_len_utf8(sv) : SvCUR(sv))
+#define CHR_SVLEN(sv) (do_utf8 ? sv_len_utf8(sv) : SvCUR(sv))
#define CHR_DIST(a,b) (PL_reg_match_utf8 ? utf8_distance(a,b) : a - b)
#define reghop_c(pos,off) ((char*)reghop((U8*)pos, off))
@@ -392,6 +392,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
register SV *check;
char *strbeg;
char *t;
+ int do_utf8 = sv ? SvUTF8(sv) : 0; /* if no sv we have to assume bytes */
I32 ml_anch;
register char *other_last = Nullch; /* other substr checked before this */
char *check_at = Nullch; /* check substr found at this pos */
@@ -437,7 +438,20 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
}
strbeg = (sv && SvPOK(sv)) ? strend - SvCUR(sv) : strpos;
PL_regeol = strend;
- check = prog->check_substr;
+ if (do_utf8) {
+ if (!prog->check_utf8 && prog->check_substr)
+ to_utf8_substr(prog);
+ check = prog->check_utf8;
+ } else {
+ if (!prog->check_substr && prog->check_utf8)
+ to_byte_substr(prog);
+ check = prog->check_substr;
+ }
+ if (check == &PL_sv_undef) {
+ DEBUG_r(PerlIO_printf(Perl_debug_log,
+ "Non-utf string cannot match utf check string\n"));
+ goto fail;
+ }
if (prog->reganch & ROPT_ANCH) { /* Match at beg-of-str or after \n */
ml_anch = !( (prog->reganch & ROPT_ANCH_SINGLE)
|| ( (prog->reganch & ROPT_ANCH_BOL)
@@ -543,7 +557,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
DEBUG_r(PerlIO_printf(Perl_debug_log, "%s %s substr `%s%.*s%s'%s%s",
(s ? "Found" : "Did not find"),
- ((check == prog->anchored_substr) ? "anchored" : "floating"),
+ (check == (do_utf8 ? prog->anchored_utf8 : prog->anchored_substr) ? "anchored" : "floating"),
PL_colors[0],
(int)(SvCUR(check) - (SvTAIL(check)!=0)),
SvPVX(check),
@@ -566,16 +580,17 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
Probably it is right to do no SCREAM here...
*/
- if (prog->float_substr && prog->anchored_substr) {
+ if (do_utf8 ? (prog->float_utf8 && prog->anchored_utf8) : (prog->float_substr && prog->anchored_substr)) {
/* Take into account the "other" substring. */
/* XXXX May be hopelessly wrong for UTF... */
if (!other_last)
other_last = strpos;
- if (check == prog->float_substr) {
+ if (check == (do_utf8 ? prog->float_utf8 : prog->float_substr)) {
do_other_anchored:
{
char *last = HOP3c(s, -start_shift, strbeg), *last1, *last2;
char *s1 = s;
+ SV* must;
t = s - prog->check_offset_max;
if (s - strpos > prog->check_offset_max /* signed-corrected t > strpos */
@@ -593,20 +608,27 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
last1 = last;
/* XXXX It is not documented what units *_offsets are in. Assume bytes. */
/* On end-of-str: see comment below. */
- s = fbm_instr((unsigned char*)t,
- HOP3(HOP3(last1, prog->anchored_offset, strend)
- + SvCUR(prog->anchored_substr),
- -(SvTAIL(prog->anchored_substr)!=0), strbeg),
- prog->anchored_substr,
- PL_multiline ? FBMrf_MULTILINE : 0);
+ must = do_utf8 ? prog->anchored_utf8 : prog->anchored_substr;
+ if (must == &PL_sv_undef) {
+ s = (char*)NULL;
+ DEBUG_r(must = prog->anchored_utf8); /* for debug */
+ }
+ else
+ s = fbm_instr(
+ (unsigned char*)t,
+ HOP3(HOP3(last1, prog->anchored_offset, strend)
+ + SvCUR(must), -(SvTAIL(must)!=0), strbeg),
+ must,
+ PL_multiline ? FBMrf_MULTILINE : 0
+ );
DEBUG_r(PerlIO_printf(Perl_debug_log,
"%s anchored substr `%s%.*s%s'%s",
(s ? "Found" : "Contradicts"),
PL_colors[0],
- (int)(SvCUR(prog->anchored_substr)
- - (SvTAIL(prog->anchored_substr)!=0)),
- SvPVX(prog->anchored_substr),
- PL_colors[1], (SvTAIL(prog->anchored_substr) ? "$" : "")));
+ (int)(SvCUR(must)
+ - (SvTAIL(must)!=0)),
+ SvPVX(must),
+ PL_colors[1], (SvTAIL(must) ? "$" : "")));
if (!s) {
if (last1 >= last2) {
DEBUG_r(PerlIO_printf(Perl_debug_log,
@@ -633,54 +655,60 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
}
}
else { /* Take into account the floating substring. */
- char *last, *last1;
- char *s1 = s;
-
- t = HOP3c(s, -start_shift, strbeg);
- last1 = last =
- HOP3c(strend, -prog->minlen + prog->float_min_offset, strbeg);
- if (CHR_DIST((U8*)last, (U8*)t) > prog->float_max_offset)
- last = HOP3c(t, prog->float_max_offset, strend);
- s = HOP3c(t, prog->float_min_offset, strend);
- if (s < other_last)
- s = other_last;
+ char *last, *last1;
+ char *s1 = s;
+ SV* must;
+
+ t = HOP3c(s, -start_shift, strbeg);
+ last1 = last =
+ HOP3c(strend, -prog->minlen + prog->float_min_offset, strbeg);
+ if (CHR_DIST((U8*)last, (U8*)t) > prog->float_max_offset)
+ last = HOP3c(t, prog->float_max_offset, strend);
+ s = HOP3c(t, prog->float_min_offset, strend);
+ if (s < other_last)
+ s = other_last;
/* XXXX It is not documented what units *_offsets are in. Assume bytes. */
- /* fbm_instr() takes into account exact value of end-of-str
- if the check is SvTAIL(ed). Since false positives are OK,
- and end-of-str is not later than strend we are OK. */
+ must = do_utf8 ? prog->float_utf8 : prog->float_substr;
+ /* fbm_instr() takes into account exact value of end-of-str
+ if the check is SvTAIL(ed). Since false positives are OK,
+ and end-of-str is not later than strend we are OK. */
+ if (must == &PL_sv_undef) {
+ s = (char*)NULL;
+ DEBUG_r(must = prog->float_utf8); /* for debug message */
+ }
+ else
s = fbm_instr((unsigned char*)s,
- (unsigned char*)last + SvCUR(prog->float_substr)
- - (SvTAIL(prog->float_substr)!=0),
- prog->float_substr, PL_multiline ? FBMrf_MULTILINE : 0);
- DEBUG_r(PerlIO_printf(Perl_debug_log, "%s floating substr `%s%.*s%s'%s",
- (s ? "Found" : "Contradicts"),
- PL_colors[0],
- (int)(SvCUR(prog->float_substr)
- - (SvTAIL(prog->float_substr)!=0)),
- SvPVX(prog->float_substr),
- PL_colors[1], (SvTAIL(prog->float_substr) ? "$" : "")));
- if (!s) {
- if (last1 == last) {
- DEBUG_r(PerlIO_printf(Perl_debug_log,
- ", giving up...\n"));
- goto fail_finish;
- }
+ (unsigned char*)last + SvCUR(must)
+ - (SvTAIL(must)!=0),
+ must, PL_multiline ? FBMrf_MULTILINE : 0);
+ DEBUG_r(PerlIO_printf(Perl_debug_log, "%s floating substr `%s%.*s%s'%s",
+ (s ? "Found" : "Contradicts"),
+ PL_colors[0],
+ (int)(SvCUR(must) - (SvTAIL(must)!=0)),
+ SvPVX(must),
+ PL_colors[1], (SvTAIL(must) ? "$" : "")));
+ if (!s) {
+ if (last1 == last) {
DEBUG_r(PerlIO_printf(Perl_debug_log,
- ", trying anchored starting at offset %ld...\n",
- (long)(s1 + 1 - i_strpos)));
- other_last = last;
- s = HOP3c(t, 1, strend);
- goto restart;
- }
- else {
- DEBUG_r(PerlIO_printf(Perl_debug_log, " at offset %ld...\n",
- (long)(s - i_strpos)));
- other_last = s; /* Fix this later. --Hugo */
- s = s1;
- if (t == strpos)
- goto try_at_start;
- goto try_at_offset;
+ ", giving up...\n"));
+ goto fail_finish;
}
+ DEBUG_r(PerlIO_printf(Perl_debug_log,
+ ", trying anchored starting at offset %ld...\n",
+ (long)(s1 + 1 - i_strpos)));
+ other_last = last;
+ s = HOP3c(t, 1, strend);
+ goto restart;
+ }
+ else {
+ DEBUG_r(PerlIO_printf(Perl_debug_log, " at offset %ld...\n",
+ (long)(s - i_strpos)));
+ other_last = s; /* Fix this later. --Hugo */
+ s = s1;
+ if (t == strpos)
+ goto try_at_start;
+ goto try_at_offset;
+ }
}
}
@@ -703,7 +731,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
while (t < strend - prog->minlen) {
if (*t == '\n') {
if (t < check_at - prog->check_offset_min) {
- if (prog->anchored_substr) {
+ if (do_utf8 ? prog->anchored_utf8 : prog->anchored_substr) {
/* Since we moved from the found position,
we definitely contradict the found anchored
substr. Due to the above check we do not
@@ -743,7 +771,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
}
s = t;
set_useful:
- ++BmUSEFUL(prog->check_substr); /* hooray/5 */
+ ++BmUSEFUL(do_utf8 ? prog->check_utf8 : prog->check_substr); /* hooray/5 */
}
else {
/* The found string does not prohibit matching at strpos,
@@ -767,15 +795,23 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
);
success_at_start:
if (!(prog->reganch & ROPT_NAUGHTY) /* XXXX If strpos moved? */
- && prog->check_substr /* Could be deleted already */
- && --BmUSEFUL(prog->check_substr) < 0
- && prog->check_substr == prog->float_substr)
+ && (do_utf8 ? (
+ prog->check_utf8 /* Could be deleted already */
+ && --BmUSEFUL(prog->check_utf8) < 0
+ && (prog->check_utf8 == prog->float_utf8)
+ ) : (
+ prog->check_substr /* Could be deleted already */
+ && --BmUSEFUL(prog->check_substr) < 0
+ && (prog->check_substr == prog->float_substr)
+ )))
{
/* If flags & SOMETHING - do not do it many times on the same match */
DEBUG_r(PerlIO_printf(Perl_debug_log, "... Disabling check substring...\n"));
- SvREFCNT_dec(prog->check_substr);
- prog->check_substr = Nullsv; /* disable */
- prog->float_substr = Nullsv; /* clear */
+ SvREFCNT_dec(do_utf8 ? prog->check_utf8 : prog->check_substr);
+ if (do_utf8 ? prog->check_substr : prog->check_utf8)
+ SvREFCNT_dec(do_utf8 ? prog->check_substr : prog->check_utf8);
+ prog->check_substr = prog->check_utf8 = Nullsv; /* disable */
+ prog->float_substr = prog->float_utf8 = Nullsv; /* clear */
check = Nullsv; /* abort */
s = strpos;
/* XXXX This is a remnant of the old implementation. It
@@ -802,9 +838,9 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
int cl_l = (PL_regkind[(U8)OP(prog->regstclass)] == EXACT
? CHR_DIST(str+STR_LEN(prog->regstclass), str)
: 1);
- char *endpos = (prog->anchored_substr || ml_anch)
+ char *endpos = (prog->anchored_substr || prog->anchored_utf8 || ml_anch)
? HOP3c(s, (prog->minlen ? cl_l : 0), strend)
- : (prog->float_substr
+ : (prog->float_substr || prog->float_utf8
? HOP3c(HOP3c(check_at, -start_shift, strbeg),
cl_l, strend)
: strend);
@@ -830,8 +866,8 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
if ((prog->reganch & ROPT_ANCH) && !ml_anch)
goto fail;
/* Contradict one of substrings */
- if (prog->anchored_substr) {
- if (prog->anchored_substr == check) {
+ if (prog->anchored_substr || prog->anchored_utf8) {
+ if ((do_utf8 ? prog->anchored_utf8 : prog->anchored_substr) == check) {
DEBUG_r( what = "anchored" );
hop_and_restart:
s = HOP3c(t, 1, strend);
@@ -871,7 +907,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
PL_colors[0],PL_colors[1], (long)(t - i_strpos)) );
goto try_at_offset;
}
- if (!prog->float_substr) /* Could have been deleted */
+ if (!(do_utf8 ? prog->float_utf8 : prog->float_substr)) /* Could have been deleted */
goto fail;
/* Check is floating subtring. */
retry_floating_check:
@@ -898,8 +934,8 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
return s;
fail_finish: /* Substring not found */
- if (prog->check_substr) /* could be removed already */
- BmUSEFUL(prog->check_substr) += 5; /* hooray */
+ if (prog->check_substr || prog->check_utf8) /* could be removed already */
+ BmUSEFUL(do_utf8 ? prog->check_utf8 : prog->check_substr) += 5; /* hooray */
fail:
DEBUG_r(PerlIO_printf(Perl_debug_log, "%sMatch rejected by optimizer%s\n",
PL_colors[4],PL_colors[5]));
@@ -1626,8 +1662,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
PL_reg_ganch = strbeg;
}
- if (do_utf8 == (UTF!=0) &&
- !(flags & REXEC_CHECKED) && prog->check_substr != Nullsv) {
+ if (!(flags & REXEC_CHECKED) && (prog->check_substr != Nullsv || prog->check_utf8 != Nullsv)) {
re_scream_pos_data d;
d.scream_olds = &scream_olds;
@@ -1677,7 +1712,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
dontbother = minlen - 1;
end = HOP3c(strend, -dontbother, strbeg) - 1;
/* for multiline we only have to try after newlines */
- if (prog->check_substr) {
+ if (prog->check_substr || prog->check_utf8) {
if (s == startpos)
goto after_try;
while (1) {
@@ -1713,13 +1748,16 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
}
/* Messy cases: unanchored match. */
- if (prog->anchored_substr && prog->reganch & ROPT_SKIP) {
+ if ((prog->anchored_substr || prog->anchored_utf8) && prog->reganch & ROPT_SKIP) {
/* we have /x+whatever/ */
/* it must be a one character string (XXXX Except UTF?) */
- char ch = SvPVX(prog->anchored_substr)[0];
+ char ch;
#ifdef DEBUGGING
int did_match = 0;
#endif
+ if (!(do_utf8 ? prog->anchored_utf8 : prog->anchored_substr))
+ do_utf8 ? to_utf8_substr(prog) : to_byte_substr(prog);
+ ch = SvPVX(do_utf8 ? prog->anchored_utf8 : prog->anchored_substr)[0];
if (do_utf8) {
while (s < strend) {
@@ -1751,23 +1789,37 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
);
}
/*SUPPRESS 560*/
- else if (do_utf8 == (UTF!=0) &&
- (prog->anchored_substr != Nullsv
- || (prog->float_substr != Nullsv
- && prog->float_max_offset < strend - s))) {
- SV *must = prog->anchored_substr
- ? prog->anchored_substr : prog->float_substr;
- I32 back_max =
- prog->anchored_substr ? prog->anchored_offset : prog->float_max_offset;
- I32 back_min =
- prog->anchored_substr ? prog->anchored_offset : prog->float_min_offset;
- char *last = HOP3c(strend, /* Cannot start after this */
- -(I32)(CHR_SVLEN(must)
- - (SvTAIL(must) != 0) + back_min), strbeg);
+ else if (prog->anchored_substr != Nullsv
+ || prog->anchored_utf8 != Nullsv
+ || ((prog->float_substr != Nullsv || prog->float_utf8 != Nullsv)
+ && prog->float_max_offset < strend - s)) {
+ SV *must;
+ I32 back_max;
+ I32 back_min;
+ char *last;
char *last1; /* Last position checked before */
#ifdef DEBUGGING
int did_match = 0;
#endif
+ if (prog->anchored_substr || prog->anchored_utf8) {
+ if (!(do_utf8 ? prog->anchored_utf8 : prog->anchored_substr))
+ do_utf8 ? to_utf8_substr(prog) : to_byte_substr(prog);
+ must = do_utf8 ? prog->anchored_utf8 : prog->anchored_substr;
+ back_max = back_min = prog->anchored_offset;
+ } else {
+ if (!(do_utf8 ? prog->float_utf8 : prog->float_substr))
+ do_utf8 ? to_utf8_substr(prog) : to_byte_substr(prog);
+ must = do_utf8 ? prog->float_utf8 : prog->float_substr;
+ back_max = prog->float_max_offset;
+ back_min = prog->float_min_offset;
+ }
+ if (must == &PL_sv_undef)
+ /* could not downgrade utf8 check substring, so must fail */
+ goto phooey;
+
+ last = HOP3c(strend, /* Cannot start after this */
+ -(I32)(CHR_SVLEN(must)
+ - (SvTAIL(must) != 0) + back_min), strbeg);
if (s > PL_bostr)
last1 = HOPc(s, -1);
@@ -1815,7 +1867,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
DEBUG_r(if (!did_match)
PerlIO_printf(Perl_debug_log,
"Did not find %s substr `%s%.*s%s'%s...\n",
- ((must == prog->anchored_substr)
+ ((must == prog->anchored_substr || must == prog->anchored_utf8)
? "anchored" : "floating"),
PL_colors[0],
(int)(SvCUR(must) - (SvTAIL(must)!=0)),
@@ -1855,20 +1907,26 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
}
else {
dontbother = 0;
- if (prog->float_substr != Nullsv) { /* Trim the end. */
+ if (prog->float_substr != Nullsv || prog->float_utf8 != Nullsv) {
+ /* Trim the end. */
char *last;
+ SV* float_real;
+
+ if (!(do_utf8 ? prog->float_utf8 : prog->float_substr))
+ do_utf8 ? to_utf8_substr(prog) : to_byte_substr(prog);
+ float_real = do_utf8 ? prog->float_utf8 : prog->float_substr;
if (flags & REXEC_SCREAM) {
- last = screaminstr(sv, prog->float_substr, s - strbeg,
+ last = screaminstr(sv, float_real, s - strbeg,
end_shift, &scream_pos, 1); /* last one */
if (!last)
last = scream_olds; /* Only one occurrence. */
}
else {
STRLEN len;
- char *little = SvPV(prog->float_substr, len);
+ char *little = SvPV(float_real, len);
- if (SvTAIL(prog->float_substr)) {
+ if (SvTAIL(float_real)) {
if (memEQ(strend - len + 1, little, len - 1))
last = strend - len + 1;
else if (!PL_multiline)
@@ -4426,3 +4484,59 @@ restore_pos(pTHX_ void *arg)
PL_curpm = PL_reg_oldcurpm;
}
}
+
+STATIC void
+S_to_utf8_substr(pTHX_ register regexp *prog)
+{
+ SV* sv;
+ if (prog->float_substr && !prog->float_utf8) {
+ prog->float_utf8 = sv = NEWSV(117, 0);
+ SvSetMagicSV(sv, prog->float_substr);
+ sv_utf8_upgrade(sv);
+ if (SvTAIL(prog->float_substr))
+ SvTAIL_on(sv);
+ if (prog->float_substr == prog->check_substr)
+ prog->check_utf8 = sv;
+ }
+ if (prog->anchored_substr && !prog->anchored_utf8) {
+ prog->anchored_utf8 = sv = NEWSV(118, 0);
+ SvSetMagicSV(sv, prog->anchored_substr);
+ sv_utf8_upgrade(sv);
+ if (SvTAIL(prog->anchored_substr))
+ SvTAIL_on(sv);
+ if (prog->anchored_substr == prog->check_substr)
+ prog->check_utf8 = sv;
+ }
+}
+
+STATIC void
+S_to_byte_substr(pTHX_ register regexp *prog)
+{
+ SV* sv;
+ if (prog->float_utf8 && !prog->float_substr) {
+ prog->float_substr = sv = NEWSV(117, 0);
+ SvSetMagicSV(sv, prog->float_utf8);
+ if (sv_utf8_downgrade(sv, TRUE)) {
+ if (SvTAIL(prog->float_utf8))
+ SvTAIL_on(sv);
+ } else {
+ SvREFCNT_dec(sv);
+ prog->float_substr = sv = &PL_sv_undef;
+ }
+ if (prog->float_utf8 == prog->check_utf8)
+ prog->check_substr = sv;
+ }
+ if (prog->anchored_utf8 && !prog->anchored_substr) {
+ prog->anchored_substr = sv = NEWSV(118, 0);
+ SvSetMagicSV(sv, prog->anchored_utf8);
+ if (sv_utf8_downgrade(sv, TRUE)) {
+ if (SvTAIL(prog->anchored_utf8))
+ SvTAIL_on(sv);
+ } else {
+ SvREFCNT_dec(sv);
+ prog->anchored_substr = sv = &PL_sv_undef;
+ }
+ if (prog->anchored_utf8 == prog->check_utf8)
+ prog->check_substr = sv;
+ }
+}
diff --git a/sv.c b/sv.c
index ac4090052c..21de7ed654 100644
--- a/sv.c
+++ b/sv.c
@@ -8592,6 +8592,7 @@ Perl_re_dup(pTHX_ REGEXP *r, CLONE_PARAMS *param)
s->min_offset = r->substrs->data[i].min_offset;
s->max_offset = r->substrs->data[i].max_offset;
s->substr = sv_dup_inc(r->substrs->data[i].substr, param);
+ s->utf8_substr = sv_dup_inc(r->substrs->data[i].utf8_substr, param);
}
ret->regstclass = NULL;
diff --git a/t/io/fs.t b/t/io/fs.t
index c30e14acf6..e7a7cb7fa1 100755
--- a/t/io/fs.t
+++ b/t/io/fs.t
@@ -41,6 +41,9 @@ my $needs_fh_reopen =
$needs_fh_reopen = 1 if (defined &Win32::IsWin95 && Win32::IsWin95());
+my $skip_mode_checks =
+ $^O eq 'cygwin' && $ENV{CYGWIN} !~ /ntsec/;
+
plan tests => 36;
@@ -93,8 +96,13 @@ SKIP: {
SKIP: {
skip "hard links not that hard in $^O", 1 if $^O eq 'amigaos';
+ skip "no mode checks", 1 if $skip_mode_checks;
- is($mode & 0777, 0666, "mode of triply-linked file");
+ if ($^O eq 'cygwin') { # new files on cygwin get rwx instead of rw-
+ is($mode & 0777, 0777, "mode of triply-linked file");
+ } else {
+ is($mode & 0777, 0666, "mode of triply-linked file");
+ }
}
}
@@ -108,7 +116,11 @@ SKIP: {
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
$blksize,$blocks) = stat('c');
- is($mode & 0777, $newmode, "chmod going through");
+ SKIP: {
+ skip "no mode checks", 1 if $skip_mode_checks;
+
+ is($mode & 0777, $newmode, "chmod going through");
+ }
$newmode = 0700;
chmod 0444, 'x';
@@ -119,12 +131,20 @@ SKIP: {
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
$blksize,$blocks) = stat('c');
- is($mode & 0777, $newmode, "chmod going through to c");
+ SKIP: {
+ skip "no mode checks", 1 if $skip_mode_checks;
+
+ is($mode & 0777, $newmode, "chmod going through to c");
+ }
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
$blksize,$blocks) = stat('x');
- is($mode & 0777, $newmode, "chmod going through to x");
+ SKIP: {
+ skip "no mode checks", 1 if $skip_mode_checks;
+
+ is($mode & 0777, $newmode, "chmod going through to x");
+ }
is(unlink('b','x'), 2, "unlink two files");
diff --git a/t/lib/1_compile.t b/t/lib/1_compile.t
index 762418177f..9035886be0 100644
--- a/t/lib/1_compile.t
+++ b/t/lib/1_compile.t
@@ -114,9 +114,17 @@ foreach my $mod (<DATA>) {
my @Core_Modules = sort keys %Core_Modules;
-print "1..".@Core_Modules."\n";
+print "1..".(1+@Core_Modules)."\n";
-my $test_num = 1;
+my $message
+ = "ok 1 - All modules should have tests # TODO Make Schwern Poorer\n";
+if (@Core_Modules) {
+ print "not $message";
+} else {
+ print $message;
+}
+
+my $test_num = 2;
foreach my $module (@Core_Modules) {
print "$module compile failed\nnot " unless compile_module($module);
@@ -149,8 +157,15 @@ CGI::Util
Carp::Heavy
CPAN::Nox
Exporter::Heavy
+ExtUtils::Command
ExtUtils::Constant
+ExtUtils::Embed
+ExtUtils::Installed
ExtUtils::MakeMaker
+ExtUtils::Manifest
+ExtUtils::Mkbootstrap
+ExtUtils::Packlist
+File::Spec::Functions
Filter::Util::Call
GDBM_File
I18N::LangTags::List
@@ -168,6 +183,7 @@ Locale::Constants
Locale::Country
Locale::Currency
Locale::Language
+Locale::Script
MIME::QuotedPrint
Math::BigFloat
Math::BigInt::Calc
@@ -188,11 +204,14 @@ Net::Time
ODBM_File
Pod::Checker
Pod::Find
+Pod::Functions
Pod::Html
+Pod::InputObjects
Pod::LaTeX
Pod::Man
Pod::ParseLink
Pod::ParseUtils
+Pod::Select
Pod::Text
Pod::Text::Overstrike
Pod::Text::Termcap
@@ -201,6 +220,9 @@ SDBM_File
Safe
Scalar::Util
Sys::Syslog
+Test::Builder
+Test::Harness::Assert
+Test::Harness::Straps
Test::More
Test::ParseWords
Text::Tabs
diff --git a/t/op/exec.t b/t/op/exec.t
index bbab0fbba5..4c1b36ae2e 100755
--- a/t/op/exec.t
+++ b/t/op/exec.t
@@ -83,7 +83,7 @@ is( system(qq{$Perl "-I../lib" -e "use vmsish qw(hushed); exit 1"}), $exit_one,
$rc = system "lskdfj";
-unless( ok($rc == 255 << 8 or $rc == -1 or $rc == 256) ) {
+unless( ok($rc == 255 << 8 or $rc == -1 or $rc == 256 or $rc == 512) ) {
print "# \$rc == $rc\n";
}
diff --git a/t/op/magic.t b/t/op/magic.t
index ede0b8b2ef..139f723c1b 100755
--- a/t/op/magic.t
+++ b/t/op/magic.t
@@ -55,7 +55,7 @@ $PERL = ($Is_NetWare ? 'perl' :
eval '$ENV{"FOO"} = "hi there";'; # check that ENV is inited inside eval
# cmd.exe will echo 'variable=value' but 4nt will echo just the value
# -- Nikola Knezevic
-if ($Is_MSWin32) { ok `set FOO` =~ /^(FOO=)?hi there$/; }
+if ($Is_MSWin32) { ok `set FOO` =~ /^(?:FOO=)?hi there$/; }
elsif ($Is_MacOS) { ok "1 # skipped", 1; }
elsif ($Is_VMS) { ok `write sys\$output f\$trnlnm("FOO")` eq "hi there\n"; }
else { ok `echo \$FOO` eq "hi there\n"; }
@@ -246,7 +246,7 @@ else {
$0 = "bar";
# cmd.exe will echo 'variable=value' but 4nt will echo just the value
# -- Nikola Knezevic
- ok ($Is_MSWin32 ? (`set __NoNeSuCh` =~ /^(__NoNeSuCh=)?foo$/)
+ ok ($Is_MSWin32 ? (`set __NoNeSuCh` =~ /^(?:__NoNeSuCh=)?foo$/)
: (`echo \$__NoNeSuCh` eq "foo\n") );
}
diff --git a/t/op/pat.t b/t/op/pat.t
index a00e624bf4..b5dff4b7e3 100755
--- a/t/op/pat.t
+++ b/t/op/pat.t
@@ -6,7 +6,7 @@
$| = 1;
-print "1..864\n";
+print "1..892\n";
BEGIN {
chdir 't' if -d 't';
@@ -2730,3 +2730,44 @@ print "# some Unicode properties\n";
print $u eq "feeber" ? "ok 864\n" : "not ok 864\n";
}
+{
+ print "# UTF-8 bug with s///\n";
+ # check utf8/non-utf8 mixtures
+ # try to force all float/anchored check combinations
+ my $c = "\x{100}";
+ my $test = 865;
+ my $subst;
+ for my $re (
+ "xx.*$c", "x.*$c$c", "$c.*xx", "$c$c.*x", "xx.*(?=$c)", "(?=$c).*xx",
+ ) {
+ print "xxx" =~ /$re/ ? "not ok $test\n" : "ok $test\n";
+ ++$test;
+ print +($subst = "xxx") =~ s/$re// ? "not ok $test\n" : "ok $test\n";
+ ++$test;
+ }
+ for my $re ("xx.*$c*", "$c*.*xx") {
+ print "xxx" =~ /$re/ ? "ok $test\n" : "not ok $test\n";
+ ++$test;
+ ($subst = "xxx") =~ s/$re//;
+ print $subst eq '' ? "ok $test\n" : "not ok $test\t# $subst\n";
+ ++$test;
+ }
+ for my $re ("xxy*", "y*xx") {
+ print "xx$c" =~ /$re/ ? "ok $test\n" : "not ok $test\n";
+ ++$test;
+ ($subst = "xx$c") =~ s/$re//;
+ print $subst eq $c ? "ok $test\n" : "not ok $test\n";
+ ++$test;
+ print "xy$c" =~ /$re/ ? "not ok $test\n" : "ok $test\n";
+ ++$test;
+ print +($subst = "xy$c") =~ /$re/ ? "not ok $test\n" : "ok $test\n";
+ ++$test;
+ }
+ for my $re ("xy$c*z", "x$c*yz") {
+ print "xyz" =~ /$re/ ? "ok $test\n" : "not ok $test\n";
+ ++$test;
+ ($subst = "xyz") =~ s/$re//;
+ print $subst eq '' ? "ok $test\n" : "not ok $test\n";
+ ++$test;
+ }
+}
diff --git a/vms/vms.c b/vms/vms.c
index 52bea49af6..47716c3bdd 100644
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -230,11 +230,11 @@ Perl_vmstrnenv(const char *lnm, char *eqv, unsigned long int idx,
if (thr && PL_curcop) {
#endif
if (ckWARN(WARN_MISC)) {
- Perl_warner(aTHX_ WARN_MISC,"Value of CLI symbol \"%s\" too long",lnm);
+ Perl_warner(aTHX_ packWARN(WARN_MISC),"Value of CLI symbol \"%s\" too long",lnm);
}
#if defined(USE_5005THREADS)
} else {
- Perl_warner(aTHX_ WARN_MISC,"Value of CLI symbol \"%s\" too long",lnm);
+ Perl_warner(aTHX_ packWARN(WARN_MISC),"Value of CLI symbol \"%s\" too long",lnm);
}
#endif
@@ -494,7 +494,7 @@ prime_env_iter(void)
for (j = 0; environ[j]; j++) {
if (!(start = strchr(environ[j],'='))) {
if (ckWARN(WARN_INTERNAL))
- Perl_warner(aTHX_ WARN_INTERNAL,"Ill-formed CRTL environ value \"%s\"\n",environ[j]);
+ Perl_warner(aTHX_ packWARN(WARN_INTERNAL),"Ill-formed CRTL environ value \"%s\"\n",environ[j]);
}
else {
start++;
@@ -564,7 +564,7 @@ prime_env_iter(void)
continue;
}
if (sts == SS$_BUFFEROVF && ckWARN(WARN_INTERNAL))
- Perl_warner(aTHX_ WARN_INTERNAL,"Buffer overflow in prime_env_iter: %s",buf);
+ Perl_warner(aTHX_ packWARN(WARN_INTERNAL),"Buffer overflow in prime_env_iter: %s",buf);
for (cp1 = buf; *cp1 && isspace(*cp1); cp1++) ;
if (*cp1 == '(' || /* Logical name table name */
@@ -585,7 +585,7 @@ prime_env_iter(void)
cp1--; /* stop on last non-space char */
}
if ((!keylen || (cp1 - cp2 < -1)) && ckWARN(WARN_INTERNAL)) {
- Perl_warner(aTHX_ WARN_INTERNAL,"Ill-formed message in prime_env_iter: |%s|",buf);
+ Perl_warner(aTHX_ packWARN(WARN_INTERNAL),"Ill-formed message in prime_env_iter: |%s|",buf);
continue;
}
PERL_HASH(hash,key,keylen);
@@ -661,7 +661,7 @@ Perl_vmssetenv(pTHX_ char *lnm, char *eqv, struct dsc$descriptor_s **tabvec)
ivenv = 1; retsts = SS$_NOLOGNAM;
#else
if (ckWARN(WARN_INTERNAL))
- Perl_warner(aTHX_ WARN_INTERNAL,"This Perl can't reset CRTL environ elements (%s)",lnm);
+ Perl_warner(aTHX_ packWARN(WARN_INTERNAL),"This Perl can't reset CRTL environ elements (%s)",lnm);
ivenv = 1; retsts = SS$_NOSUCHPGM;
break;
}
@@ -696,7 +696,7 @@ Perl_vmssetenv(pTHX_ char *lnm, char *eqv, struct dsc$descriptor_s **tabvec)
return setenv(lnm,eqv,1) ? vaxc$errno : 0;
#else
if (ckWARN(WARN_INTERNAL))
- Perl_warner(aTHX_ WARN_INTERNAL,"This Perl can't set CRTL environ elements (%s=%s)",lnm,eqv);
+ Perl_warner(aTHX_ packWARN(WARN_INTERNAL),"This Perl can't set CRTL environ elements (%s=%s)",lnm,eqv);
retsts = SS$_NOSUCHPGM;
#endif
}
@@ -718,7 +718,7 @@ Perl_vmssetenv(pTHX_ char *lnm, char *eqv, struct dsc$descriptor_s **tabvec)
if (eqvdsc.dsc$w_length > LNM$C_NAMLENGTH) {
eqvdsc.dsc$w_length = LNM$C_NAMLENGTH;
if (ckWARN(WARN_MISC)) {
- Perl_warner(aTHX_ WARN_MISC,"Value of logical \"%s\" too long. Truncating to %i bytes",lnm, LNM$C_NAMLENGTH);
+ Perl_warner(aTHX_ packWARN(WARN_MISC),"Value of logical \"%s\" too long. Truncating to %i bytes",lnm, LNM$C_NAMLENGTH);
}
}
retsts = lib$set_logical(&lnmdsc,&eqvdsc,tabvec[0],0,0);
@@ -2253,7 +2253,7 @@ safe_popen(pTHX_ char *cmd, char *in_mode, int *psts)
tpipe = vmspipe_tempfile(aTHX);
if (!tpipe) { /* a fish popular in Boston */
if (ckWARN(WARN_PIPE)) {
- Perl_warner(aTHX_ WARN_PIPE,"unable to find VMSPIPE.COM for i/o piping");
+ Perl_warner(aTHX_ packWARN(WARN_PIPE),"unable to find VMSPIPE.COM for i/o piping");
}
return Nullfp;
}
@@ -2284,7 +2284,7 @@ safe_popen(pTHX_ char *cmd, char *in_mode, int *psts)
}
set_vaxc_errno(sts);
if (*mode != 'n' && ckWARN(WARN_PIPE)) {
- Perl_warner(aTHX_ WARN_PIPE,"Can't pipe \"%*s\": %s", strlen(cmd), cmd, Strerror(errno));
+ Perl_warner(aTHX_ packWARN(WARN_PIPE),"Can't pipe \"%*s\": %s", strlen(cmd), cmd, Strerror(errno));
}
*psts = sts;
return Nullfp;
@@ -2727,7 +2727,7 @@ Perl_my_waitpid(pTHX_ Pid_t pid, int *statusp, int flags)
/* remind folks they are asking for non-standard waitpid behavior */
_ckvmssts(lib$getjpi(&pidcode,0,0,&mypid,0,0));
if (ownerpid != mypid)
- Perl_warner(aTHX_ WARN_EXEC,
+ Perl_warner(aTHX_ packWARN(WARN_EXEC),
"waitpid: process %x is not a child of process %x",
pid,mypid);
}
@@ -5221,7 +5221,7 @@ Perl_vms_do_exec(pTHX_ char *cmd)
}
set_vaxc_errno(retsts);
if (ckWARN(WARN_EXEC)) {
- Perl_warner(aTHX_ WARN_EXEC,"Can't exec \"%*s\": %s",
+ Perl_warner(aTHX_ packWARN(WARN_EXEC),"Can't exec \"%*s\": %s",
vmscmd->dsc$w_length, vmscmd->dsc$a_pointer, Strerror(errno));
}
vms_execfree(vmscmd);
@@ -5275,7 +5275,7 @@ Perl_do_spawn(pTHX_ char *cmd)
}
set_vaxc_errno(sts);
if (ckWARN(WARN_EXEC)) {
- Perl_warner(aTHX_ WARN_EXEC,"Can't spawn: %s",
+ Perl_warner(aTHX_ packWARN(WARN_EXEC),"Can't spawn: %s",
Strerror(errno));
}
}
diff --git a/win32/Makefile b/win32/Makefile
index 2734229a82..eea51dc078 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -1077,6 +1077,14 @@ test-wide-notty : test-prep
$(PERLEXE) -I..\lib harness
cd ..\win32
+_test :
+ $(XCOPY) $(PERLEXE) ..\t\$(NULL)
+ $(XCOPY) $(PERLDLL) ..\t\$(NULL)
+ $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
+ cd ..\t
+ $(PERLEXE) -I..\lib harness
+ cd ..\win32
+
clean : Extensions_clean
-@$(DEL) miniperlmain$(o)
-@$(DEL) $(MINIPERL)
diff --git a/win32/Makefile.win64 b/win32/Makefile.win64
index 86100bb681..92d047bd11 100644
--- a/win32/Makefile.win64
+++ b/win32/Makefile.win64
@@ -1133,6 +1133,14 @@ test-wide-notty : test-prep
cd ..\t
$(PERLEXE) -I..\lib harness
cd ..\win32
+
+_test :
+ $(XCOPY) $(PERLEXE) ..\t\$(NULL)
+ $(XCOPY) $(PERLDLL) ..\t\$(NULL)
+ $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
+ cd ..\t
+ $(PERLEXE) -I..\lib harness
+ cd ..\win32
clean :
-@erase miniperlmain$(o)
diff --git a/win32/win32.c b/win32/win32.c
index 517a5765fe..f226d973c1 100644
--- a/win32/win32.c
+++ b/win32/win32.c
@@ -575,7 +575,7 @@ do_aspawn(void *vreally, void **vmark, void **vsp)
else {
if (status < 0) {
if (ckWARN(WARN_EXEC))
- Perl_warner(aTHX_ WARN_EXEC, "Can't spawn \"%s\": %s", argv[0], strerror(errno));
+ Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't spawn \"%s\": %s", argv[0], strerror(errno));
status = 255 * 256;
}
else
@@ -690,7 +690,7 @@ do_spawn2(char *cmd, int exectype)
else {
if (status < 0) {
if (ckWARN(WARN_EXEC))
- Perl_warner(aTHX_ WARN_EXEC, "Can't %s \"%s\": %s",
+ Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s \"%s\": %s",
(exectype == EXECF_EXEC ? "exec" : "spawn"),
cmd, strerror(errno));
status = 255 * 256;